-4

我正在debug.exe为我的课程进行 x86 组装,但是我似乎完全无法理解基础知识。我有这个汇编程序(由讲师编写),我必须修改它,而不是接受输入和打印,而是接受输入做一些事情然后打印。我不知道读取结束和打印从哪里开始,并且非常感谢一些关于在哪里插入我的代码以及每行做什么的提示

a100
mov dx, 200
mov ah, 0a
int 21
mov bh, 00
mov bl, byte ptr[201]
mov byte ptr[200], 0d
mov byte ptr[201], 0a
mov byte ptr[202 + bx], 24
mov dx, 200
mov ah, 09
int 21
mov ah, 4c
int 21

a200
db 07 00 '***********'

n progr1.com
r cx
100
w
q
4

1 回答 1

1

我可能会开始一次阅读这些行中的每一行,然后看看它们做了什么。

例如,正如评论中的某人所说,阅读关于做什么int 21,它做了很多事情,具体取决于AH寄存器中的内容。

http://www.ctyme.com/intr/int-21.htm

例如,从 STDIN 读取一行是0AAH寄存器中指定的,它将输出以某种格式放在 DX 寄存器中。

mov dx, 200
mov ah, 0a
int 21

读取的字符数放在 DX 的第二个字节中,因此使用以下行将其保存到 BX 中:

mov bh, 00
mov bl, byte ptr[201]

打印到屏幕是用不同的INT 21 AH值完成的09,它是从任何DX指向的地方读取的,这就是为什么 DX 被设置回200

mov dx, 200
mov ah, 09
int 21

我将留给您弄清楚其余部分的作用,但请查看此处http://www.ctyme.com/intr/rb-2563.htm的读入和写出格式。例如,这一行将mov byte ptr[202 + bx], 24ASCII 0x24 放在字符串的最后一个位置,因为这是读取的终止字符。

于 2013-09-26T15:05:20.207 回答