[英]Loops in Assembly: TASM on 8086 (DosBox)
我正在尝试循环这段代码,该代码将字符“ Q”写入视频存储段b800中的地址,该地址由es指定:[di]
在这里,我尝试将循环增加两个(因为每个屏幕位置都由两个字节,颜色和属性组成),但是代码仅在第一个位置生成字符。 我想我不懂如何使用cx,因为我认为这应该循环100次。
.model small
.stack
.code
main:
sub cx, cx
mov cx, 100
dates:
mov ax,0B800h
mov es,ax
sub di, di
mov di, 200
add di, 2
mov ah, 5
mov al, 'Q'
mov es:[di], ax
loop dates
mov ax,4C00h
int 21h
end main
OMG,已经很长时间没有进行汇编编程了,但是有一些明显的错误:
初始sub cx,cx
将sub cx,cx
设置为0,但这没有用,因为在下一行移动mov cx,100
您可以在每个循环周期为es
di
etc设置新的值,以便所有迭代都写入同一位置。 解决方案:移动日期: add di,2
之前的标签
您没有合适的循环计数器,因此您应将loop dates
替换为
dec cx
jnz日期
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.