[英]Assembly language compare instruction not working
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
你有这个指令:
mov cx, control
首先,您已将控制定义为:
control db 0
所以你已经为control
分配了一个字节,但你将它作为一个字加载。 这会给你的循环带来一些麻烦。 您需要将control
定义为一个词,或者执行以下操作:
mov cx,0
mov cl,control
您在最终比较时遇到了同样的问题:
cmp cx,control
control
只是一个字节,但您正在比较整个单词。 内存中跟随control
任何字节都会影响结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.