我正在编写一些在x86架构上运行的NASM代码。
作为编写程序以将数字打印为十六进制的练习的一部分(据我所知,我的实现的确切细节是无关紧要的),我需要将一个字节从一个字符串复制到另一个字符串。
这是我的字符串:
hex_digits:
db '0123456789abcdef'
hex_out:
db '0000'
假设我hex_digits
索引的ax
中的字节,hex_out
中的第三个索引。
在C中,这看起来像这样:
hex_out[3] = hex_digits[ax]
这是我的集会:
mov cx, [hex_digits+ax]
mov [hex_out+3], cx
不应该这样吗?好吧 - 显然不是,但我已经读过有效的地址有效,here。读完之后,我确信我理解了有效的地址,但似乎并非如此。
我确信它显然是明显的,但我对nasm来说还是个新手。
谢谢!