0
我有一個小問題。字符串比較不起作用
這是我的代碼:
cmpstr:
pusha
xor cx, cx
mov ax, ds
push ax
mov ax, si
push ax
call strlen
mov dx, ax
mov ax, es
mov ds, ax
mov si, bx
call strlen
cmp al, dl
jnz .fail
pop ax
mov si, ax
pop ax
mov ds, ax
.loop:
push bx
mov al, byte [es:bx]
mov bl, byte [ds:si]
cmp al, bl
jne .fail
cmp bl, 0
jz .suc
pop bx
add bx, 1
inc si
inc cx
jmp .loop
.fail:
mov al, 'C';
mov ah, 0Eh
int 10h
popa
mov ax, 0
jmp .end
.suc:
mov al, 'D';
mov ah, 0Eh
int 10h
popa
mov ax, 1
.end:
ret
這個過程應該比較兩個字符串和返回(mov
到ax
)1,如果字符串(先上es:bx
,第二ds:si
)相同或0,如果它們是不同的。我的問題是執行過程調用之前的命令,字母'D'正在打印(比較成功),但過程調用後的命令不起作用。我認爲這個問題一定在這個程序的某個地方。有人知道這裏有什麼問題嗎?
你是否嘗試用調試器逐步執行代碼? – 2012-07-21 08:00:11
我沒有任何16位調試器 – user35443 2012-07-21 09:26:55
我的問題是隻是功能沒有返回。它正在返回到循環。 – user35443 2012-07-21 09:27:40