2012-04-28 79 views
-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   
+0

嚴重的是,使用調試器。 – 2012-04-30 18:22:34

回答

5

我不知道你的檢查和複查,但你從一個字符串時讀取字節爲bl,但對比整個bx用「$」,而不是比較bl用「$」。

你有沒有考慮調試你的代碼?我也不知道你爲什麼用hlt。如果中斷被禁用,你的程序將永遠不會返回。

最後,如果這是DOS的.COM程序,則org 100org 100h之間存在「小」差異。

+0

是的。我是彙編語言的新手 – user1263375 2012-04-28 06:34:17