【发布时间】:2021-01-29 15:05:51
【问题描述】:
我正在开发这个练习:
编写一个汇编程序,给定一个字符作为输入,输出一个字符本身大小为 5 x 5 的三角形。
我有一个问题,因为当我去输入一个字符时,这些字符没有形成一个三角形,而是打印了其他字符。
我的意见:
f
我的输出:
期望的输出:
f
ff
fff
ffff
fffff
我的代码:
Title PROVA
;programma per la prova dell’ambiente Turbo Assembler
DOSSEG
.MODEL SMALL
.STACK 100
.DATA
; se ci sono qui vanno dichiarate le vriabili
.CODE
MOV AX, @data ;(obbligatorie) inizializzano il DS
MOV DS, AX
MOV AX, 00
MOV BX, 00
MOV CX, 00
MOV DX, 00
mov ah,01h ;input va a mettere l'input in AL ;n
int 21h
MOV BL, AL ;n
MOV CL, BL ;n
MOV CH, 0H
ciclo:
CMP CH, 5H
JE fine
inc CH
MOV DL, BL
mov ah, 02h ;stampa il contenuto di dl
int 21h
mov DL, 10D
int 21h
mov DL, 13D
int 21h
;BL
ADD BL, CL
JMP ciclo
fine:
MOV AL, 00H ;(obbligatorie) ritornano il controllo al sistema operativo
MOV AH, 4CH
INT 21H
END
【问题讨论】:
-
我在你的代码中只看到一个循环。为了打印该形状,我预计会有两个循环,即类似
for (row = 0; row < 5; row++) { for (col = 0; col <= row; col++) { printf(character); } } -
您在 BL(和 CL)中保留 要打印的字符,但是您在每个 新行 之后将 CL 添加到 BL,这是错误的。为了显示一个字符 1..5 次,您必须重复
int 21h1..5 次。使用 TurboDebugger。