assembly - 在汇编中打印一个三角形的字符
问题描述
我正在开发这个练习:
编写汇编程序,给定一个字符作为输入,输出一个字符本身大小为 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:
推荐阅读
- polymer-3.x - Polymer-3.x 是否有任何在线编码编辑器/IDE?
- html - 使用 CSS 为带有子元素的 div 布局响应式网格
- python - 多行字符串上的 Python re.sub() 失败
- android - 本机移动浏览器选择元素选项计数
- string-formatting - printf 字符串利用返回意外的十六进制
- three.js - Three.js 中的 TextGeometry 无法渲染/工作
- c++ - 将 M*N 矩阵顺时针旋转 90 度,C++
- regex - 为什么这个正则表达式在 Vim 中不能在 SublimeText 中工作?
- python-3.x - Py3.6 :: ThreadPoolExecutor future.add_done_callback 与 concurrent.futures.as_completed
- c - C编程TCP服务器和客户端连接错误