我们在TASM中有我们的活动使用LOOPING输出一个数字,遗憾的是没有人得到正确的代码,所以我们的教授将它作为我们的功课。
A
B C
D E F
G H I J
K L M N O
我的代码是
@m macro row,col,char
mov ah,02
mov dl,char
int 21h
mov ah,02
mov dh,row
mov dl,col
int 10h
endm
cseg segment para 'code'
assume cs:cseg, ss:cseg, ds:cseg, es:cseg
org 100h
start: jmp begin
char1 db 'A'
col1 db 2
row1 db 0
begin: mov ax,0003
int 10h
mov cx,15
repeat: @m row1,col1,char1
add col1,2
add char1,1
loop repeat
int 20h
cseg ends
end start
答案 0 :(得分:0)
添加另一个以值0开头的计数器(寄存器或变量)。打印字符后,将计数器增加1并检查它是否大于row1
。如果是,请将row1
增加1,将计数器重置为0并将col1
重置为2.
(如果你不想使用额外的计数器,你也可以在col1
和row1
之间进行比较,但这会涉及一些额外的算术,所以我选择了最简单的方法)。
顺便说一句,您可能希望更改宏中int 21h
和int 10h
之间的顺序,以便正确定位第一个字母(A
)。< / p>