问题描述
我正在开发这个练习:
编写汇编程序,输入一个字符,输出一个字符本身大小为 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
解决方法
正如 vitsoft 所指出的,由于您将 CL
添加到 BL
,所以字符发生了变化。
正如迈克尔所说,要制作一个三角形,您需要使用另一个循环。
以下是要更改的部分:
MOV AH,01h ; input va a mettere l'input in AL ;n
INT 21H
MOV BL,AL ; n
MOV CH,0H
ciclo:
CMP CH,5H
JE fine
INC CH
MOV DL,10D
INT 21H
MOV DL,13D
INT 21H
MOV CL,CH
MOV AH,02H ; stampa il contenuto di dl
MOV DL,BL
innerLoop:
INT 21H
DEC CL
JNE innerLoop
JMP ciclo
fine: