我有一个简单的 16 位程序集,如下所示:
push bx
StrVar db "My string!",0
push ax
.. other code..
我正在尝试使用 NASM 对其进行编译,但我有一个问题.. 如果我的带有尾随零的字符串不是 16 位的倍数(比如说,包括 19 个字节零),则字符串后面的 asm 对齐错误并搞砸了(我在反汇编程序中看到了它)。
为什么呢?我注意到操作码并不总是 16 位,那么反汇编程序如何决定操作码应该遵循哪些边界?
此外..如何防止这种情况发生?我应该在每次每个字符时计算我的字符串吗?