如何在汇编程序中从右到左打印微笑表情符号
#MAKE_COM# ; .com
ORG 100h
START:
MOV AH, 0 ; screen 80x25
MOV AL, 2 ; character 'smiley face'
INT 10h ; set screen (and clear screen)
MOV DX, 0 ; start position 0,0 (DH dan DL)
MOV CX, 1 ; print 1 character
set_kursor:
MOV AH, 2
INT 10h ; set cursor position
MOV AH, 10
INT 10h ; print character
INC DH ; to right
INC DL ; enter 1 row
CMP DH, 25
JNE set_kursor ; try it
RET ; finish
END
代码执行此操作
☺
☺
☺
☺
☺
☺
☺
我想要的是像这样的反面
☺
☺
☺
☺
☺
☺
☺
答案 0 :(得分:1)
INC DH ; to right
INC DL ; enter 1 row
这些评论错了! DL寄存器具有列,DH寄存器具有行。
要解决您的问题,请先将光标放在远离右侧的位置。我选择了第30列和第0行。然后在每次迭代时递减DL寄存器中的列值。与之前一样,在DH寄存器中递增行值并在处理25行后退出:
#MAKE_COM# ; .com
ORG 100h
START:
MOV AH, 0 ; screen 80x25
MOV AL, 3
INT 10h ; set screen (and clear screen)
MOV DX, 30 ; start position 30,0
MOV CX, 1 ; print 1 character
mov bh, 0 ; display page 0
set_kursor:
MOV AH, 2
INT 10h ; set cursor position
MOV AL, 2 ; character 'smiley face'
MOV AH, 10
INT 10h ; print character
dec dl ; 1 column left
inc dh ; 1 row down
CMP DH, 25
JNE set_kursor
RET ; finish
END