装配使用字符串,检查结果

时间:2014-11-17 20:17:49

标签: assembly

我不确定如何制定问题,但我最近开始学习汇编,我已经到了处理字节/字符串的地步,我的最终结果将是以及一串字节/单词...... 我的问题是,如何检查我的程序是否返回了正确的结果?有什么办法吗? 我刚刚解决了一个听起来像这样的问题: 我有字符串S:1,2,3,4,5,6,我必须组成字符串D,其元素代表S的每两个连续字节的总和,所以D:3,5,7,9,11 我如何检查我得到了正确的结果?

2 个答案:

答案 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