计算机原理:第二章微型机指令系统3of4_第1页
计算机原理:第二章微型机指令系统3of4_第2页
计算机原理:第二章微型机指令系统3of4_第3页
计算机原理:第二章微型机指令系统3of4_第4页
计算机原理:第二章微型机指令系统3of4_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 1 13. 调用及返回 (地址a) # (a+ 1) # (地址b) # (b+1) # # CALL * MOV AX, 66H . RET临执行CALL指令前(已读取该CALL指令), CS:IP = a+2在执行CALL指令后,即有执行结果 CS:IP = b在执行RET指令后,即有执行结果 CS:IP = a+2 23. 调用及返回调用是一种要返回的转移,先保护返回地址: 近调用 IP 远调用 CS : IP(见下页堆栈示意图)从寻址方式上分: 直接寻址调用 间接寻址调用 3堆栈段00000SSSP FFFFFHIPSP - 2近调用保护返回的 IP 值存储器 4 近调用和返回CAL

2、L 近过程名 ;先IP入栈,后转移到过程。 汇编时目标地址 IP = disp , 双字节补码。执行时 IP+ disp 转入目标 (相对转移)。IP入栈相当于 PUSH IP , 但由CALL自动完成,称隐堆栈操作。 5直接调用DATASEGMENTSUPADW SUP2 ; 定义SUP2的地址SUPB DD SUP5 ; 定义SUP5的地址DATAENDSCODESEGMENT。SUP2PROC near。RET 。SUP5PROC far。RETCALL SUP2 ; 直接调用SUP2 6返回指令RET被调用过程的最后一条是 RET 指令:从栈顶弹出IP,返回主程CALL的下一条。IP弹

3、出相当于 POP IP , 但由RET自动 完成,也称隐堆栈操作。CALL/RET 成对使用,堆栈复原。注意:有如 JMP SHORT target 这样的短转移, 但没有短调用。 7(2)间址调用CALL reg16; reg16内容当目标地址,IP (reg16),寄存器间址调用CALL mem16 ; mem16内容当目标地址, IP (mem16),存储器间址调用 8直接调用和间址调用比较DATASEGMENTSUPA DW SUP2 ; 定义SUP2的地址SUPB DD SUP5 ; 定义SUP5的地址DATAENDSCODESEGMENT。 SUP2PROC near。RET SU

4、P2 ENDPCALL SUP2 ; 直接调用SUP2CALL SUPA ; 存储器间址调用 MOV BX, SUPA CALL BX ; 寄存器间址调用 9 先CS入栈,后IP入栈, 再转到远过程。CALL 远过程名 ; 直接远调用,CALL mem32 ; 存储器间址远调用。远调用和返回远调用隐含2次入栈操作(32位)。 10RET ;远返回,CS : IP出栈 (远过程执行的最后一条指令)远调用和返回远返回也隐含2次出栈(32位)。远调用和远返回成对,堆栈复原。 11直接调用和间址调用比较DATASEGMENTSUPADW SUP2 ; 定义SUP2的地址SUPB DD SUP5 ; 定

5、义SUP5的地址DATAENDSCODESEGMENT。SUP2PROC near。RET 。SUP5PROC far。RETCALL SUP5 ; 直接调用SUP5CALL SUPB ; 存储器间址调用 12RET 2*N ;带操作数的返回指令(见P382) 例: RET 2 正常返回后再SP加2*N (即,SP SP+2*N), 释放堆栈。带参数调用过程前,先将参数压入堆栈 (SP-2), 过程中使用参数。过程返回后释放堆栈(SP + 2)。 13RET 2 例 。CODESEGMENT。 MOV AX, 0F123H PUSH AXCALLSUP5 ; 直接调用远过程SUP5 。SUP5

6、PROC far PUSH BP MOV BP,SP MOV AX,BP+6 . . . POP BP RET 2 . . . SUP5 ENDP 14带参数调用过程举例主程序:MOV AX,参数PUSH AX ;压入CALL 远过程名. . .原SP参数H参数L返回的CS返回的CS返回的IP返回的IP最后SP堆栈 15远过程:PUSH BPMOV BP,SPMOV AX,BP+6. . . POP BPRET 2最先SP参数H参数L返回的CS返回的CS返回的IP返回的IP开始SPBPBP最后SP堆栈 164.中断及返回中断是一种存储器间址的远调用。 INT n ; 中断类型号n= 0 255

7、类型号 n 的服务程序入口地址IPLIPHCSLCSHn 4+ 1+ 2+ 3先 FLAGS入栈,再CS入栈、IP 入栈,然后转入中断服务程序4*1CH +1 +2 +3入口IP入口CS中断矢量表 INT 1CH的中断服务程序 IRET . .INT 1CH . .指令1指令2 INTP1C PROC FARINTP1C ENDP 1800000SSSP FFFFFH第一次压入此处FlagsCSIP堆栈段SP - 6 19中断返回 IRET ; 注:不可带操作数弹出IP、弹出CS、弹出FLAGSINT n 和 IRET 各隐含3次堆栈操作(6字节),也必须成对使用。 20中断指令1 . INT

8、 n 指令的机器码一般是2字节。-仅 INT 3 、INTO 各为1字节 (参见教材P382-383)。3.除 INT n指令(软中断)外,还有外部硬件 电路信号引发的硬中断,也要形成中断类型 号 n ,找到中断矢表,转入中断服务。2 . 中断类型号(n)0255。 中断服务程序入口地址集中排在内存地址 低区1K字节(0 3FFH),形成中断矢量表。 21六.CPU控制指令标志位操作对CF、DF、IF的置1 / 清0等 CLC ; (CF) 0 STC ; (CF) 1 CMC ; NOT CF CLD ; (DF) 0 STD ; (DF) 1 CLI ; (IF) 0 使CPU禁止响应可屏蔽中断请求 STI ; (IF) 1 使CPU可以响应可屏蔽中断请求 22CPU控制指令 (续)2. NOP 占1字节空间,占3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论