繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM