簡體   English   中英

嵌套循環匯編語言

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM