我正在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
答案 0 :(得分:1)
我或许可以一次开始阅读每一行,看看他们做了什么。
例如,正如评论中的某些人所说,请阅读int 21
所做的事情,它会做很多事情,具体取决于AH
注册表中的内容。
http://www.ctyme.com/intr/int-21.htm
e.g。
从STDIN读取一行是由0A
寄存器中的AH
指定的,它将输出放在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], 24
将ASCII 0x24放在字符串的最后一个位置,因为这是用于读取的终止字符。