[英]Nested Loop assembly language
輸出應為
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
您應該清楚地將外循環與內循環分開。
我已經使用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的開始處制作bx 12(mov bx,12),然后在循環2之后將其遞減1,然后在循環1結束時將其值分配給cx。Bx永遠只有12或11,而cx永遠只有11。
我認為您的解決方法是將(mov cx,bx)行移動到l1:循環開始之前,而不是像現在那樣在其開始之后。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.