阿西吧 发表于 2017-7-11 20:32:40

汇编语言上天之路(48~50)(CALL和RET)①

第四十八课到四十九课(CALL和RET使用)
        RET:       
        1.ret:POP操作来修改IP,实现近转移。
          CPU读入ret(C3)指令,然后POP IP来修改IP。
       
        2.retf:POP操作先出IP,再出CS,实现远转移。
          CPU读入retf指令,然后POP IP,再POP CS。

       
        CALL:不能实现短转移,其他和JMP原理相同
        (短转移):
        1.call 标号:读取指令后,IP = IP + 指令长度,PUSH IP,IP = IP + 16位位移
        2.call 16位reg: 读取指令后,IP = IP + 指令长度,PUSH IP ,IP = reg
        3.call word ptr 内存单元地址:读取指令后,IP = IP + 指令长度,PUSH IP , IP = 便宜地址
       
        (长转移):
        1.call far ptr : 读取指令后,IP = IP + 指令长度,PUSH CS,PUSH IP,IP = 标号处的偏移地址,CS = 标号的段地址
        2.call dowrd ptr 内存单元地址 :PUSH CS , PUSH IP ,IP = 低地址,CS = 高地址word型

        call和ret使用,就和C语言函数调用一样



检测点:       
**** Hidden Message *****

dennischc 发表于 2017-7-13 08:10:04

666666666666666666{:5_91:}
页: [1]
查看完整版本: 汇编语言上天之路(48~50)(CALL和RET)①