在MASM x86(16位)上打印多个三角形

在MASM x86(16位)上打印多个三角形,x86,infinite-loop,masm,x86-16,X86,Infinite Loop,Masm,X86 16,所以我试图用MASM x86(8086)编写一个程序,它将打印出一系列由星号“”构成的直角三角形。我用循环打印出三角形。我试着让每个三角形都有3到9个星号高,宽度相同,但配置不同。不过我只打印了一个三角形。在我的第一个三角形被打印出来后,它只是无限期地循环使用星号“”。以下是我的一些代码: mov ah, 09h ;prints string mov dx, offset input int 21h mov ah, 01h ;reads in character int 21

所以我试图用MASM x86(8086)编写一个程序,它将打印出一系列由星号“”构成的直角三角形。我用循环打印出三角形。我试着让每个三角形都有3到9个星号高,宽度相同,但配置不同。不过我只打印了一个三角形。在我的第一个三角形被打印出来后,它只是无限期地循环使用星号“”。以下是我的一些代码:

 mov ah, 09h ;prints string
  mov dx, offset input
  int 21h

  mov ah, 01h ;reads in character
  int 21h

  sub al, '0' ;is gunna read into lower half by default
  mov ah, 0 ;blanking higher half of register so that way it doesnt throw off program
  mov size, ax
  mov cx, ax 
  mov bx, cx 
  push bx

  mov ah, 02h
  mov dl, 13
  int 21h  
  mov dl, 10
  int 21h


 lines:
    push cx 

  stars:
   mov ah, 02h
   mov dl, '*'
   int 21h


  loop stars 

  mov ah, 02h
  mov dl, 13
  int 21h  
  mov dl, 10
  int 21h

  pop cx 

  loop lines

  mov bx, size 

  mov ax, 4c00h
  int 21h
我猜我必须创建另一个寄存器来保存变量,并可能创建另一个循环。

我的问题是,我是否必须将用户输入传递到另一个寄存器?如果是的话,我怎样才能通过呢

您已经在SIZE变量中输入了用户输入,所以这很好。
绘制第一个三角形后,将此变量放回CX寄存器中,稍作更改(或多或少),然后重复三角形的代码:

; First user defined triangle

    mov ah, 02h
    mov dl, 13
    int 21h  
    mov dl, 10
    int 21h
lines:
    push cx 
stars:
    mov ah, 02h
    mov dl, '*'
    int 21h
    loop stars 
    mov ah, 02h
    mov dl, 13
    int 21h  
    mov dl, 10
    int 21h
    pop cx 
    loop lines

; Take back the size and change it a bit

    mov cx, size
    add cx, 5

; Second bigger triangle

    mov ah, 02h
    mov dl, 13
    int 21h  
    mov dl, 10
    int 21h
lines:
    push cx 
stars:
    mov ah, 02h
    mov dl, '*'
    int 21h
    loop stars 
    mov ah, 02h
    mov dl, 13
    int 21h  
    mov dl, 10
    int 21h
    pop cx 
    loop lines

你忘了问问题。我的问题是,我必须将用户输入传递到另一个寄存器吗?如果是这样的话,我怎么能通过呢?你的帖子仍然缺少一个问题。请编辑你的文章以提供所有必要的信息。好的,我编辑了这篇文章。所以我尝试了一下,几乎成功了。例如,如果我在用户输入中输入3,我得到一个正确的三角形,然后是一个无限大的三角形循环。谢谢你!我真的很感谢你的帮助,你让我离我的目标更近了,我想我可以试着从这里调试。谢谢