加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

[转载][转] 汇编指令: REP、REPE、REPNE、RET、RETF、RET

(2013-11-06 16:22:55)
标签:

转载

名称   功能  操作数 操作码 模数 寄存器1 寄存器2
或内存
位移量 立即数 符号 方向 芯片
型号
16位 32位
REP 重复 _$30_367 $F36C 8086
REP 重复 _$30_368 $F36D 8086 $66
REP 重复 _$30_369 $F36D 386 $66
REP 重复 _$30_350 $F3A4 8086
REP 重复 _$30_351 $F3A5 8086 $66
REP 重复 _$30_352 $F3A5 386 $66
REP 重复 _$30_374 $F36E 8086
REP 重复 _$30_375 $F36F 8086 $66
REP 重复 _$30_376 $F36F 386 $66
REP 重复 _$30_371 $F3AC 8086
REP 重复 _$30_372 $F3AD 8086 $66
REP 重复 _$30_373 $F3AD 386 $66
REP 重复 _$30_356 $F3AA 8086
REP 重复 _$30_357 $F3AB 8086 $66
REP 重复 _$30_358 $F3AB 386 $66
REPE 相等重复 _$30_363 $F3A6 8086
REPE 相等重复 _$30_364 $F3A7 8086 $66
REPE 相等重复 _$30_365 $F3A7 386 $66
REPE 相等重复 _$30_353 $F3AE 8086
REPE 相等重复 _$30_354 $F3AF 8086 $66
REPE 相等重复 _$30_355 $F3AF 386 $66
REPNE 不等重复 _$30_363 $F2A6 8086
REPNE 不等重复 _$30_364 $F2A7 8086 $66
REPNE 不等重复 _$30_365 $F2A7 386 $66
REPNE 不等重复 _$30_353 $F2AE 8086
REPNE 不等重复 _$30_354 $F2AF 8086 $66
REPNE 不等重复 _$30_355 $F2AF 386 $66
RET 过程返回 $C3 8086
RET 过程返回 数16 $C2 10 8086
RETF 远过程返回 $CB 8086
RETF 远过程返回 数16 $CA 10 8086
RETN 近过程返回 $C3 8086
RETN 近过程返回 数16 $C2 10 8086
RSM 恢复系统管理 $0FAA Pentium
SAHF 恢复标志低八 $9E 8086
SALC   $D6 8086



汇编语言教程-返回指令(RET)
当子程序执行完时,需要返回到调用它的程序之中。为实现此功能,指令系统提供了一条专用的返回指令。其格式如下:
RET/RETN/RETF [Imm]
子程序的返回在功能上是子程序调用的逆操作。为了与子程序的远、近调用相对应,子程序的返回也分:远返回和近返回。返回指令在堆栈操作方面是调用指令的逆过程(如图7.3所示)。其具体规定如下:
、在近类型的子程序中,返回指令RET是近返回,其功能是把栈顶之值弹出到指令指针寄存器IP中,SP会被加2(如图7.3所示);
、在远类型的子程序中,返回指令RET是远返回,其功能是:先弹出栈顶之值到IP中,再弹出栈顶之值到CS之中,SP总共会被加4(如图7.4所示)。
图7.3近返回指令的出栈操作示意图
图7.4远返回指令的出栈操作示意图
如果返回指令后面带有立即数(其值通常为偶数),则表示在得到返回地址之后,SP还要增加的偏移量,它不是类似于高级语言中子程序的返回值(如图7.5所示)。
图7.5带立即数的返回指令的出栈操作示意图
在MASM 5.0及其以后版本中,可用指令RETN或RETF来显式地告诉汇编程序是本子程序的返回是近返回,还是远返回。
例如:
RET;可能是近返回,也可能是远返回 
RETN;近返回指令
RETF;远返回指令
RET6;子程序返回后,(SP)←(SP) + 6

0

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有