输出应为
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
5x10或10x5
要求是应该只有LOOP,INC和/或DEC。
这就是我所做的,结果是无限循环:
.model small
.stack
.code
start:
mov ah, 02h
mov cx, 10
l1:
mov bx, 12 ; loop pababa n bente
l2:
mov dl,78h
int 21h
loop l2
dec bx
mov dl, 0dh ; carriage return
int 21h
mov dl, 0ah ;line feed
int 21h
mov cx, bx
loop l1
mov ah, 4ch
int 21h
end start
答案 0 :(得分:1)
您应该清楚地将外环与内环分开 我使用BX作为外部循环控制变量并使用CX作为内部循环控制变量来编写代码。
mov ah, 02h ;CONST for both loops
---- Start of outer loop ----
mov bx, 5 ;Do 5 lines like in your example
l1:
---- Start of inner loop ----
mov cx, 10 ;Put 10 characters on each line
mov dl, 'X'
l2:
int 21h
loop l2
---- End of inner loop ----
mov dl, 0dh ;CR
int 21h
mov dl, 0ah ;LF
int 21h
dec bx
jnz l1
---- End of outer loop ----
答案 1 :(得分:0)
你的问题是你在循环1的开始处制作bx 12(mov bx,12),然后在循环2之后将其递减1,然后在循环1的末尾将其值赋值给cx.Bx将仅永远是12或11,而cx只会是11。
我认为你的修复方法是将(mov cx,bx)行移到l1:loop开始之前,而不是在你现在开始之后。