在 MASM x86(16 位)上打印多个三角形
Printing multiple triangles on MASM x86 (16 bit)
所以我试图在 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
所以我试图在 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