首页 > 解决方案 > 尝试在别处复制字节时无效的有效地址

问题描述

我正在编写一些 NASM 代码,在 x86 架构上运行。

作为编写将数字打印为十六进制的过程的练习的一部分(据我所知,我的实现的确切细节无关紧要),我需要将一个字节从一个字符串复制到另一个字符串。

这是我的字符串:

hex_digits:
    db '0123456789abcdef'
hex_out:
    db '0000'

假设我是第 th 索引hex_digits处的字节,到ax.in 中的第三个索引hex_out

在 C 中,这看起来像这样:

hex_out[3] = hex_digits[ax]

这是我的程序集:

mov cx, [hex_digits+ax]
mov [hex_out+3], cx

这不应该工作吗?嗯 - 显然不是,但我已经阅读了有效地址的工作原理,here。读完之后,我确信我理解了有效地址,但似乎并非如此。

我敢肯定这是显而易见的,但我对 nasm 还很陌生。

谢谢!

标签: stringassemblymemorynasmx86-16

解决方案


推荐阅读