这通信工程用的教材真垃圾,很多重要的东西一笔带过,什么玩意儿啊,这里面和伪指令有关的内容下一篇文章再叙述。
我翻遍了整本书关于call指令,它只有不到一页的内容!那么重要的指令CALL和RET,是C语言函数调用的根本,但这两条指令加起来只用了一页就讲完了。
当然这也不奇怪,毕竟所有的寄存器介绍和指令介绍,只有100页。人家王爽老师的《汇编语言》可是写了一本书啊。
功能:改变程序执行顺序(改变IP和CS)。
执行顺序由代码段寄存器和指令指针IP的内容确定,CS和IP结合起来,给出下一条指令在存储器中的位置。
对于转移指令:
- 转移指令的实质:改变IP(或CS)的内容。
- 所有转移指令不会影响标志位。
- 分为无条件转移和条件转移两种。
过程调用和返回指令:
过程(子程序):一段具有特定功能的,供其它程序调用的公用程序。
- 调用子程序时,IP(CS)的内容被压入堆栈栈顶。从子程序返回时,栈顶的内容又被弹出到IP(CS)。
- 子程序执行结束后一般都要返回调用程序。
- 一次定义,多次调用。
- 可带参数调用(提前放到栈或寄存器中)。
段内:只会改变IP
段间:CS和IP都变
直接:地址由#imm给出
间接:地址由reg或mem给出
无条件转移指令
JMP
- 段内直接转移:
JMP #imm(8/16)
指令中直接给出的8/16位的偏移量加到IP
,CS
保持不变。
JMP SHORT #imm8 ; 段内直接短转移
; IP = IP + imm(8)
JMP #imm16 ; 段内直接近转移
JMP NEAR PTR #imm16 ;
; IP