所以,我对 assmlby 还很陌生。我的任务是检查字符串中的子字符串并打印出是/否答案。两个字符串都由用户输入。
我已将字符串的偏移量放入 bx 寄存器,将子字符串的偏移量放入 bp 寄存器。使用 di 和 si 寄存器中的索引号,我想比较我的字符串的字符。我的两个索引寄存器都设置为 2,这应该是字符串的第一个字符。
mov dl,[bx+di]
mov al,[bp+si]
cmp dl,al
jz AnswerYes
jmp AnswerNo
我用它来比较每个字符串中的第一个字符。
当我在两个字符串中都输入“a”时,程序应该跳转到 AnswerYes 并打印出“yes”。当我打印 [bx+di] 和 [bp+si] 时,它们都打印出 'a',这意味着它们是相同的,但程序总是跳转到 AnswerNo。
如果我这样做:
cmp dl,'a'
它打印出我们的“是”,这意味着它们是相同的。
当我这样做时:
cmp al,'a'
它打印出 no,即使它们是相同的。
我怀疑问题出在我使用 bp 寄存器,因为我以前从未使用过它。我总是在我的程序中只使用一个字符串,为此我总是使用 bx 寄存器。
提前感谢您的帮助。