0

我需要用最后一个字母更改用户输入的第三个字母,并用“*”符号更改最后一个字母。到目前为止,我设法编写了这段代码,它可以让你输入 7 个符号词:

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 ivesk.com
r cx
200
w
q

问题是我不确定这是如何工作的以及接下来我应该做什么。你有什么秘诀吗?。也许您可以推荐一个好的网站,其中将解释所有这些命令,如 (0A 09)?谢谢。

4

1 回答 1

0

(假设这段代码确实有效(因为我已经很久没有弄乱 16 位代码了,也没有 32 位操作系统——更不用说 16 位操作系统了——来测试)...)

您显然已经知道这[202+bx]是输入的最后一个字符之后的字符,因为那是您放置$标记字符串结尾的位置。想知道什么[201+bx]指向...?:)

而且由于您的缓冲区位于硬编码地址,您已经知道第一个字符在哪里——因此,第三个字符也在哪里。

所以,只需mov将最后一个字符存入一个寄存器,并将mov该寄存器存入第三个字符的地址。然后将寄存器设置为'*',并将mov寄存器设置为最后一个字符的地址。

于 2013-09-21T11:11:53.137 回答