《汇编语言程序设计》-相伟-电子教案第10章-讲义
- 格式:ppt
- 大小:354.00 KB
- 文档页数:29
汇编语⾔第⼗章CALL和RET指令call和ret指令都是转移指令,它们都修改IP,或同时修改IP和CSret和retf:ret指令使⽤栈中数据,修改IP内容,实现近转移。
进⾏两步操作:(1)(IP)= ((ss) * 16 + (sp)) (2) (sp) = (sp) + 2 等价于 pop IP retf指令使⽤栈中数据,修改CS和IP内容,实现远转移。
进⾏四步操作:(1)(IP)= ((ss) * 16 + (sp)) (2) (sp) = (sp) + 2 (3) (CS) = ((ss) * 16 + (sp)) (4)(sp) = (sp) + 2 等价于pop IP pop CScall指令:call指令进⾏两步操作:(1)将当前的IP 或 CS和IP压⼊栈中;(2)转移(IP对应近转移,CS和IP对应远转移)依据位移进⾏的call指令:call 标号进⾏如下操作:(1)(sp)= (sp) - 2 ((ss) * 16 + (sp)) = (IP) (2)(IP) = (IP) + 16位位移等价于 push IP jmp near ptr 标号依据地址进⾏的call指令:call far ptr 标号进⾏如下操作:(1)(sp)= (sp) - 2 ((ss) * 16 + (sp)) = (CS) (sp) = (sp) - 2 ((ss) * 16 + (sp)) = (IP) (2) (CS)的地址 = 标号所在段的段地址;(IP)的地址 = 标号所在段的偏移地址等价于 push CS push IP jmp far ptr 标号call 16 位reg 进⾏如下操作:(sp)= (sp) - 2 ((ss) * 16 + (sp)) = (IP) (IP) = 16位reg等价于 push IP jmp near 16位regcall word ptr 内存单元地址进⾏如下操作:(sp) = (sp) - 2 ((ss) * 16 + (sp)) = (IP) (IP) = (内存单元地址中的内容)等价于push IP jmp word ptr 内存单元地址call dword ptr 内存单元地址进⾏如下操作:(1)(sp)= (sp) - 2 ((ss) * 16 + (sp)) = (CS) (sp) = (sp) - 2 ((ss) * 16 + (sp)) = (IP)(2) (CS)的地址 = 后两字节内容;(IP)的地址 = 前两字节内容等价于push CS push IP jmp dword ptr 内存单元地址⽤call和ret实现调⽤⼦程序:call sub1...(返回处)sub 1 :.....(⼦程序)ret (返回第⼆⾏)mul乘法指令:mul reg 或者 mul 内存单元两个数相乘,位数必须相等,要么都是8位(⼩于255),要么都是16位。