请教高人一个汇编问题

来源:百度知道 编辑:UC知道 时间:2024/05/04 08:12:00
请教兄弟姐妹们一个关于汇编的问题,希望大家帮帮忙
段内直接转移
格式:JMP SHORT OPR
操作;(IP)<--(IP)+8位位移量
386及其后继机型则为:(EIP)<--(EIP)+8位位移量
如操作数长度为16位,则还需:(EIP)<--(EIP)AND 0000FFFFH
请问高手:(EIP)<--(EIP)AND 0000FFFFH是什么用意,我想了半天就是想不到!哪位兄弟姐妹帮忙解释一下吧,希望能透彻一点!谢谢了
我知道那样做的结果,AND 的作用我还是懂的,但是不知道原因,为什么要进行(EIP)<--(EIP)AND 0000FFFFH操作呢?不这样操作会产生什么错误,为什么(IP)<--(IP)+8位位移量没有进行“与”操作呢?

(EIP)<--(EIP)AND 0000FFFFH 的意思是:把EIP的高16位清零、低16位不变。

因为AND运算是二进制的“与”运算,对应参加运算的两个二进制均为1时,结果的对应位就为1,否则0

对于386及其后继机型,偏移地质都放在EIP中,所以位移量为8位或者32位.由于位移量是带符号数,所以8位的位移范围是在-128~+127之间,16位的位移量跳转范围是在-32K~+32K, 范围大小也就是FFFFH!
就象上面的(EIP)<--(EIP)+8位位移量 而这个8位位移量其实就是FFH,只是这是个带符号数.