;(我在打印这个系列时遇到问题122222223222(你能不能看看代码并指出我的错误(
.model small
.stack 100h
.code
start:
mov cx,3
l1:
mov ah, 02
mov dl, 49
int 21h
inc dl
mov bx,cx
mov cx, 3
l2:
mov ah, 02
mov dl,50
int 21h
loop l2
mov cx,bx
inc dl
loop l1
mov ah, 4ch
int 21h
end start
你的程序几乎没问题。当前输出为"122212221222"。
不断重复的"1"字符来自这样一个事实,即您在循环中重复使用即时值 49,而您应该将此数字保留在循环之外!
我建议你把它存储在DH
寄存器中,从那里检索它,并在每次迭代时递增DH
:
mov dh, "1" ; ASCII=49
mov cx, 3
outerLoop:
mov ah, 02h
mov dl, dh ; Successively "1", "2", "3"
inc dh
int 21h
mov bx, 3
innerLoop:
mov ah, 02h
mov dl, "2" ; ASCII=50
int 21h
dec bx
jnz innerLoop
dec cx
jnz outerLoop
请注意,无需使用BX
来保留外循环计数器,不如像使用内循环计数器一样轻松地使用BX
。
为了提高可读性,您可以:
- 使用更具描述性的标签
- 插入空白行以使内部循环突出显示
- 撰写功能注释