-2

我为字符串比较制作了这个 8086 汇编程序,但它包含一个无限循环。我已经检查并重新检查。谁能找到我错的地方?

org 100
jmp start
str1: db "hello$"
str2: db "ello$"


start: 
lea bx,str1
mov si,bx
lea ax,str2
mov di,ax  
mov ax,1234
jmp compare

compare:
mov bl,[si]
cmp [di],bl
jne notequal
cmp bx,'$'
je equal
inc si
inc di
jmp compare

notequal:
mov ax,0000h 
hlt

equal:
mov bx,0001h
hlt
  ret         
4

1 回答 1

5

我不知道您检查并重新检查了什么,但是您正在从其中一个字符串中读取字节,bl然后将整个字符串bx与“$”进行比较,而不是与“$”进行比较bl

你有没有考虑调试你的代码???

另外我不知道你为什么使用hlt. 如果中断被禁用,您的程序将永远不会返回。

org 100最后,如果这是一个用于 DOS 的 .COM 程序,那么和.COM 之间存在“微小”差异org 100h

于 2012-04-28T06:23:16.463 回答