繁体   English   中英

汇编中的循环:8086(DosBox)上的TASM

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

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