找回密码
 立即注册
搜索
热搜: 活动 通知
查看: 294|回复: 2

23章 005.x86的指令格式-ModRM和偏移量部分

[复制链接]

1

主题

2

回帖

21

积分

高级会员

积分
21

高级会员

发表于 2026-10-10 15:41:35 | 显示全部楼层 |阅读模式
请问这里把汇编指令转换成机器指令的时候,判断寻址方式 [bx + 3] 时,为什么3一定是8位的偏移量啊,判断成16位也可以吧?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

3

主题

19

回帖

53

积分

至尊会员

积分
53

至尊会员

发表于 2026-10-16 13:03:25 | 显示全部楼层
汇编器的视角:
8位偏移量范围在-128~127,3在范围内,就用8位偏移量
如果是16位,那么偏移要超出-128~127,这样才能编码为16位
其次,8位比16位更短,编码成机器指令更短,节省空间

其实,16位编码完全合法,可以强制,"3一定是8位"这个说法只适用于汇编器的默认行为

3

主题

19

回帖

53

积分

至尊会员

积分
53

至尊会员

发表于 2026-10-16 13:10:16 | 显示全部楼层
https://defuse.ca/online-x86-assembler.htm 你可以到这个网站使用67 66 8b 87 03 00机器码测试

强制使用16位也可以,如下图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|鼠侠网 ( 吉ICP备19001332号 )

GMT+8, 2026-11-9 14:10 , Processed in 0.877278 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表