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
答案 0 :(得分:0)
您有以下说明:
mov cx, control
第一件事是您将控件定义为:
control db 0
因此,您已经为control
分配了一个字节,但仍将它作为一个字加载。这会给您的循环带来麻烦。您需要将control
定义为一个单词,或执行类似的操作:
mov cx,0
mov cl,control
您的最终比较存在相同的问题:
cmp cx,control
control
只是一个字节,但是您正在比较整个单词。内存中control
之后的任何字节都会影响结果。