我的cmp命令出了问题。无论我传递什么结果,程序都会忽略cmp结果并运行我的代码的所有部分。有人可以帮帮我吗?
;tipo de bandeira
mov ah, 40h
mov bx, 1
mov cx, 24
mov dx, bandeira
int 21h
;linha
mov ah, 40h
mov bx, 1
mov cx, 1
mov dx, linha
int 21h
;input e confirmação do tipo de bandeira
mov ah, 3Fh
mov bx, 00
mov cx, 1
mov dx, tipoBandeira
int 21h
;clear feed
mov ah, 3Fh
mov bx, 00
mov cx, 2
mov dx, crlf
int 21h
cmp[tipoBandeira],01
je T1
cmp[tipoBandeira],02
je T2
T1:
mov ah, 40h
mov bx, 1
mov cx, 08
mov dx, quad
int 21h
T2:
mov ah, 40h
mov bx, 1
mov cx, 11
mov dx, rect
int 21h
我很擅长集会,我有一个非常糟糕的老师,用#34;使用google"来解决我们的所有问题,忽略了有很多装配类型,而且它真的不是& #39; ta直接语言。
答案 0 :(得分:1)
的问题
cmp [tipoBandeira],01
je T1
cmp [tipoBandeira],02
je T2
T1:
mov ah, 40h
mov bx, 1
mov cx, 08
mov dx, quad
int 21h
T2:
mov ah, 40h
mov bx, 1
mov cx, 11
mov dx, rect
int 21h
如下:
你错过了比较和T1阻止的退出。 你想要的可能是:
cmp [tipoBandeira],02 ;if tipoBandeira = 2
je T2 ; go to T2
cmp [tipoBandeira],01 ;else if tipoBandeira = 1
jne EXIT ; go to T1
;else go to EXIT
T1:
mov ah, 40h
mov bx, 1
mov cx, 08
mov dx, quad
int 21h
jmp EXIT ;end if
T2:
mov ah, 40h
mov bx, 1
mov cx, 11
mov dx, rect
int 21h
EXIT: ;end if
...