如何以汇编语言水平,垂直和对角线打印

时间:2018-09-30 05:02:21

标签: assembly dos x86-16

我的代码是这个

debug
a
mov cx,000a
mov ah,02
mov dl,30
int 21
inc dl
loop 0107
mov dl,0a
int 21
mov dl,0d
int 21
mov cx,0009
mov dl,20
int 21
mov dl,31
int 21
push dx
mov dl,0a
int 21
pop dx
inc dl
loop 011e
push dx
mov dl,0a
int 21
mov dl,0d
int 21
pop dx
mov cx,0009
mov dl,31
int 21
push dx
mov dl,0a
int 21
mov dl,0d
int 21
pop dx
inc dl
loop 0139
int 20

实际输出output

所需的输出:

output should be like this

1 个答案:

答案 0 :(得分:1)

我认为这应该是您程序的诀窍:

...
165B:011E CD21          INT 21
165B:0120 52            PUSH    DX
165B:0121 B20A          MOV DL,0A
165B:0123 CD21          INT 21
165B:0125 5A            POP DX
165B:0126 FEC2          INC DL
165B:0128 E2F4          LOOP    011E
...

此后,光标位于最后一行,您必须向上移动它。您可以通过BIOS中断10的功能02和03来实现此目的

更改

165B:012A 52            PUSH DX
165B:012B B20A          MOV DL,0A
165B:012D CD21          INT 21
165B:012F B20D          MOV DL,0D
165B:0131 CD21          INT 21
165B:0133 5A            POP DX

mov ah, 03
mov bh, 00
int 10
mov ah, 02
mov dl, 00
sub dh, 9
int 10

您必须调整其后面的跳跃。更改

loop 0139

loop 013E