如何在ASM中插入和移动数组中的元素?

时间:2017-12-18 08:44:40

标签: arrays assembly array-push mov

我目前被分配了一个项目来制作一个非常基本的文本编辑器。插入,退格等。我在尝试实现插入时遇到问题。

我已经介绍了将文本正确打印到视频内存(B800),并且我能够计算光标所选字母在缓冲区中的位置。

例如,如果我打印出Apple字样,而我的光标当前位于“A”下,我想插入右边。

所以我觉得好像我在课堂笔记中遗漏了一些内容,但基本上我们学会了从缓冲区的末尾开始转移到“正确的”,所以我们最终会得到“A pple”,空间是新角色的新亮点。

但我对这种做法感到困惑。看来我们要使用MOVSB Si是要复制的最后一个字符,Di应该去哪里,Cx是字符数。

所以在“Apple”中,Si将被设置为第一个p,Di将是+1的右边那个?对于CX,那我认为是4?因为我们必须将4转过来

但我也注意到,因为我们使用的是视频内存,所以使用MOVSB的方式不会很好,因为ES设置为B800。我写下了“这个”,但它似乎与MOVSB的作用相同,所以我不确定我是否写错了或者我错过了什么。

此外,我通常不明白为什么我们使用MOVSB,因为它只是复制到内存中的新区域,而不是真正影响我已经在缓冲区数组中的内容。任何帮助将不胜感激:)

这是在16位模式下完成的,我正在使用emu8086

0 个答案:

没有答案