【问题标题】:First assembly program [closed]第一个组装程序[关闭]
【发布时间】:2013-09-26 14:23:49
【问题描述】:

我正在为我的课程在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

【问题讨论】:

标签: assembly


【解决方案1】:

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

例如,正如 cmets 中的某个人所说,了解 int 21 做了什么,它做了很多事情,这取决于 AH 寄存器中的内容。

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

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

mov dx, 200
mov ah, 0a
int 21

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

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

使用不同的INT 21 AH09 完成屏幕打印,并且从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,因为这是读取的终止字符。

【讨论】:

  • 谢谢,帮了大忙。我已经完成了我的程序,它可以工作,但我不明白为什么在删除 a200 db 07 00 '*************' 后它仍然可以工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-31
  • 2011-05-24
相关资源
最近更新 更多