assembly - x86 ADD 指令的正确编码
问题描述
我手动编码以下指令:
add [di], al
而根据我对x86文档的理解,对应的机器码应该是:
00 07
使用 编译上述代码时nasm
,我得到以下信息:
# echo "add [di], al" > test.asm && nasm test.asm && xxd -ps test
0005
使用 编译时也会发生同样的情况as
。
我怀疑这与 16/32/64 位编码有关,但我找不到这方面的信息。
解决方案
不,根据这个参考 00 07
对应于add [bx], al
并且00 05
是正确的add [di], al
。
推荐阅读
- javascript - 模态打开时,React 三纤维画布没有调整到父级的大小
- java - 屏幕撕裂和 fps 在一个屏幕上下降,但在另一个屏幕上没有
- r - 从 R 中的文本文件中提取表格(和其他信息)
- java - 将所有放置的块替换为空气并将破碎的块替换为其原始材料
- javascript - 使用 react-relay 测试时组件未呈现
- python-3.x - Python:为什么 driver.find_element_by_class_name 没有给出这样的元素:无法找到元素
- android - SMALI HELP - 从资源中获取字符串
- windows - 如何运行 Windows 驱动程序示例(示例 DMFT0)?
- python - 检查列表中的正则表达式时出错(python)
- aws-lambda - DynamoDB 在 Javascript SDK 上使用错误的键和值位置保存 json 对象