170408 汇编-段内转移指令

来源:互联网 发布:windows 高精度sleep 编辑:程序博客网 时间:2024/04/19 09:08

1625-5 王子昂 总结《2017年4月8日》 【连续第189天总结】

A.汇编语言第九章

B.可以控制CPU执行内存中某处代码的指令叫做转移指令

转移行为有两种:

只修改IP时,称为段内转移;

同时修改CS和IP时,称为段间转移

段内转移又按照IP的修改范围不同,分为两种:

短转移:IP的修改范围为-128-127

长转移:IP的修改范围为-32768-32767

转移指令分为以下几类:

无条件转移指令,如jmp

条件转移指令

循环指令,如loop

过程

中断

操作符offset在汇编语言中是由编译器处理的符号,功能是取得标号的偏移地址。

eg: mov ax,offset start

jmp指令要给出两种信息:转移的目的地址和转移的距离(段间转移、段内短转移、段内长转移)

jmp short 标号表示段内短转移,向前最多转移127个字节,向后最多转移128个字节


在机器码中,mov指令中携带的立即数是直接可见的,即是将立即数送给CPU进行处理的

而jmp指令中的标号虽然转换为了具体的地址,但在机器码中是不可见的,而是使用相对位移

也就是说,CPU在执行jmp指令的时候不需要转移的目的地址,而仅需要对IP增减的偏移量

(猜测:这样可以节省机器码的空间,因为地址所需要的空间大于偏移量(段内短转移时仅需要1个字节))

偏移量由编译器对标号的地址和jmp指令的地址作差算出,以补码形式保存在机器码中

类似的还有jmp near 标号,段内近转移,范围为-32768-32767

C.明日计划

汇编第九章

OD界面

0 0
原创粉丝点击