我不确定如何制定问题,但我最近开始学习汇编,我已经到了处理字节/字符串的地步,我的最终结果将是以及一串字节/单词...... 我的问题是,如何检查我的程序是否返回了正确的结果?有什么办法吗? 我刚刚解决了一个听起来像这样的问题: 我有字符串S:1,2,3,4,5,6,我必须组成字符串D,其元素代表S的每两个连续字节的总和,所以D:3,5,7,9,11 我如何检查我得到了正确的结果?
答案 0 :(得分:0)
如果要检查手写汇编实现的正确性(这是一个非常好的主意),您可以用不同的语言编写等效的程序。为两个程序提供相同的输入,将每个输出传递到一个文件中,并在文件上运行diff
- 实用程序。
如果要在程序执行时跟踪程序,可以在调试器。它不具备使用高级源代码的调试器的便利设施,但您应该能够让调试器显示寄存器内容和内存。
在gdb
中,您可以使用{ {1}}显示注册状态。
答案 1 :(得分:0)
检查结果的简单解决方案是在字符串
中指定的行中显示尽可能多的字符lea si, d
mov cx, 4 ;replace size with the amount of elements in D; mustn't be zero
new_row:
push cx
mov al, 10
int 29h
mov al, 13
int 29h
lodsb
or al, al
jz e
mov cx, ax
xor ch, ch
mov al, 46 ;the character shown as many times as specified in the string (here: a dot . )
next_char:
int 29h ;the advantage of this function is, the output always shown at the screen, it cannot be pipelined.
loop next_char
e:
pop cx
loop new_row
exit:
mov al, 10
int 29h
mov al, 13
int 29h