为什么call能实现近转移书上却说不能短转移?
近转移的范围不是包含了短转移的范围吗?为什么call能实现近转移书上却说不能短转移?例题中的call指令实现的不都是短转移吗?
但它们能操作的寄存器是不同的。 Dardy 发表于 2013-7-6 23:24 static/image/common/back.gif
但它们能操作的寄存器是不同的。
call 指令操作寄存器? 只是将cs:ip 压栈吧 涉及什么寄存器了? 不好意思。
估计是这样的。call 后面的'操作数'只能是16位,而不能是8位,虽然8位所能表示的值,16位也能表示。
Dardy 发表于 2013-7-7 01:52 static/image/common/back.gif
不好意思。
估计是这样的。call 后面的'操作数'只能是16位,而不能是8位,虽然8位所能表示的值,16位也能表 ...
哪条call 指令用到8位内存地址 或者寄存器了?朋友回帖是好习惯 但是还请保留点责任心额也许会给别人误导的 孔子曰 知之为知之 不知为不知 是知也 jmp s=jmp 01
call s =call 0001
多一个字节
call 后面的'操作数'只能是16位
00应该是编译器自动加的 tiying 发表于 2013-7-8 04:40 static/image/common/back.gif
哪条call 指令用到8位内存地址 或者寄存器了?朋友回帖是好习惯 但是还请保留点责任心额也许会给别人 ...
我是说不可以用8位的啊。咱也没深仇大恨啊。
短转移的指令编码中,位移量占8位,而近转移中位移量占16位。call的指令编码中位移量的值即便很小,其中的位移量也会被编码成16位。据说指令编码越短,执行速度越快。有错的地方还望不吝指正共同进步。 好深奥啊{:1_1:}
页:
[1]