汇编语言比较指令不起作用

时间:2018-12-27 16:21:24

标签: assembly x86

Process:
 call cScreen ; clear screen

 mov ah,09h
 lea dx,msg1
 int 21h

 mov dl,10
 mov ah,2
 int 21h

 mov dl,13
 mov ah,2
 int 21h

 mov ah,2
 mov dl,msg2
 int 21h 

 mov cx,control
loading:
 mov ah,2
 mov dl,msg2
 int 21h
 loop loading

;set cursor
 mov ah,2
 mov bh,0
 mov cx,4
 mov dh,2
 mov dl,10
 int 10h

 mov ah,2
 mov dl,msg2
 int 21h

 mov ah,9
 lea dx,msg1
 int 21h

 call Delay

 inc control

 cmp control,10
 jne Process

我正在尝试制作过程栏,但最后一次比较不起作用。

msg 1用于绘制条,msg 2用于构建处理条。

,加载循环也无法正常工作。

有人有什么想法吗?

下面是我创建的数据

msg1 db 10,13,"-----------$"
msg2 db "|"
control db 0

1 个答案:

答案 0 :(得分:0)

您有以下说明:

mov cx, control

第一件事是您将控件定义为:

control db 0

因此,您已经为control分配了一个字节,但仍将它作为一个字加载。这会给您的循环带来麻烦。您需要将control定义为一个单词,或执行类似的操作:

mov cx,0
mov cl,control

您的最终比较存在相同的问题:

cmp cx,control

control只是一个字节,但是您正在比较整个单词。内存中control之后的任何字节都会影响结果。