在MASM x86(16位)上打印多个三角形
所以我试图用MASM x86(8086)编写一个程序,它将打印出一系列由星号“”构成的直角三角形。我用循环打印出三角形。我试着让每个三角形都有3到9个星号高,宽度相同,但配置不同。不过我只打印了一个三角形。在我的第一个三角形被打印出来后,它只是无限期地循环使用星号“”。以下是我的一些代码:在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
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,我得到一个正确的三角形,然后是一个无限大的三角形循环。谢谢你!我真的很感谢你的帮助,你让我离我的目标更近了,我想我可以试着从这里调试。谢谢