我的汇编语言比较字符给出了错误的结果
my assembly language comparing characters give the wrong result
比较字符时,我的预期输出是 'not equal' - 但 tasm 显示的输出始终是 'equal'。
我的程序比较 dl 和 bl 中的值,如果相等则显示相等,如果不相等则显示不相等
...但即使等于或不等于输出总是相等我现在不知道问题出在哪里
title compare.program
cstack segment para stack 'stack'
dw 200h
cstack ends
cdata segment para 'data'
msg1 db 'equal $'
msg2 db 'not equal $'
cdata ends
ccode segment para 'code'
Assume cs:ccode,ds:cdata,ss:cstack
main:
mov dl,'a'
mov bl, 'b'
compare:
cmp dl,bl
je correct
jmp wrong
correct:
mov ah,09
lea dx,msg1
int 21h
mov ah,4ch
int 21h
wrong:
mov ah,09
lea dx,msg2
int 21h
mov ah,4ch
int 21h
ccode ends
end main
您忘记初始化 DS
:
...
main:
mov ax, cdata
mov ds, ax
mov dl,'a'
mov bl, 'b'
...
比较字符时,我的预期输出是 'not equal' - 但 tasm 显示的输出始终是 'equal'。
我的程序比较 dl 和 bl 中的值,如果相等则显示相等,如果不相等则显示不相等
...但即使等于或不等于输出总是相等我现在不知道问题出在哪里
title compare.program
cstack segment para stack 'stack'
dw 200h
cstack ends
cdata segment para 'data'
msg1 db 'equal $'
msg2 db 'not equal $'
cdata ends
ccode segment para 'code'
Assume cs:ccode,ds:cdata,ss:cstack
main:
mov dl,'a'
mov bl, 'b'
compare:
cmp dl,bl
je correct
jmp wrong
correct:
mov ah,09
lea dx,msg1
int 21h
mov ah,4ch
int 21h
wrong:
mov ah,09
lea dx,msg2
int 21h
mov ah,4ch
int 21h
ccode ends
end main
您忘记初始化 DS
:
...
main:
mov ax, cdata
mov ds, ax
mov dl,'a'
mov bl, 'b'
...