任务是编写一个exe程序(16位),它将按照以下顺序显示预先记录的字符串(我们使用变量)。在第一行中,从第一行开始的1个字母,在第二行2,在第三行3,等等。到变量字符串中的最后一个字符。
有没有人可以帮忙,因为我根本不懂这个汇编程序((
我能做的只有这些:
.MODEL TINY
.STACK 100h
code:
xor cx, cx
mov cl, 5
@1: mov dx, mess1
add dx, cx
mov ah, 9
int 21h
mov dx, offset crlf
mov ah, 9
int 21h
sub cx, 1
cmp cl, 0
jg @1
mov ah,04Ch
mov al,1h
int 21h
mess1 db "Artem$"
crlf db 10, 13, "$"
end code
1条答案
按热度按时间mqxuamgl1#
你需要两个DOS函数:AH=9 WRITE $-TEMINATED STRING TO STANDARD OUTPUT
和AH=2 WRITE CHARACTER FROM DL TO STANDARD OUTPUT。让我们将一个字符加载到
DL
,使用INT21h/AH=2
打印它,然后使用INT21h/AH=9
打印字符串crlf
,并在循环CX
中重复。这是错误的,我们需要寄存器DL用于其他目的。
让我们使用其他寄存器来保存每个字符的地址,最好是寄存器
SI
:主循环从这里开始:
现在是时候将
crlf
打印为字符串了:循环打印剩余的字符。SI指向下一个字符,CX是循环计数器。
这可以工作,但更优雅的是
loop @1
或所有五个字符都被打印在新的行上。现在是终止程序的时候了。
.MODEL TINY
产生DOS COM程序,该程序可以用简单的指令ret
终止。