[转载][转] 汇编指令: 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