第五讲86系列微型计算机的指令系统.ppt

  1. 1、本文档共183页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
位移量由汇编程序在汇编时进行计算,如下例: CS:0102 CALL 0120H ;3字节 CS:0105 …… 则位移量为: 0120-0105H=001BH 于是CALL 0120H的机器码为E8 1B 00 CS:0102 E8 CS:0103 1B CALL 0120H CS:0104 00 CS:0105 …… 子程序的偏移地址在寄存器或存储器中。 格式:CALL mem16/reg16 CALL执行时,它首先将IP内容压栈,然后把指定的寄存器/存储器的内容送入IP。 例: CALL BX ;子程序地址由BX给出 CALL WORD PTR[SI] ;子程序地址在存储器中 ②段内间接调用 CALL IPH IPL 代码段 数据段 CALL WORD PTR [SI]指令的操作图示: 假定:(DS) = 8000H,(SI) = 1200H 81200H 81201H 子程序的段地址和偏移地址直接由CALL指令给出。 格式:CALL far_proc ;far_proc为远过程的地址 指令的操作为: ? CS内容压栈 ? IP内容压栈 ? CS←段地址 ? IP←偏移地址 例:CALL 2000H:1000H CALL TIMER ;TIMER为远过程 ③段间直接调用 子程序的段和偏移地址为存储器的连续4个单元中的内容。 格式:CALL mem32 指令的操作为: SP←(SP)-2 ((SP)+1,(SP))←(CS) ;CS压栈 CS←(mem32+2) SP←(SP)-2 ((SP)+1,(SP))←(IP) ;IP压栈 IP←(mem32) 例:CALL DWORD PTR[DI] 调用地址在[DI],[DI]+1,[DI]+2,[DI]+3四个存储单元中。低字内容为偏移地址,高字内容为段地址。 ④段间间接调用 CALL 代码段 数据段 IPH IPL CSH CSL [DI] [DI]+1 [DI]+2 [DI]+3 段间间接调用示意图 CALL DWORD PTR[DI] 例:下面的程序执行后,(AX)=? (DX)=? CS: 2000H MOV AX, 2012H 2003H MOV CX, 200CH 2006H PUSH CX 2007H CALL 4000H 200AH ADD AX, BX 200CH ADD AX, DX 200EH HLT … … … … CS:4000H MOV BX, 200AH POP DX RET 段内返回指令RET的操作为: 恢复子程序执行前IP的内容。 段间返回指令RET的操作为: 恢复子程序执行前IP和CS的内容。 另有一种带立即数的返回指令 “ RET n ”,其中n为偶数,表示从栈顶弹出地址后另外丢弃的字节数。 例:RET 4 ;返回后再丢弃栈顶的4个字节 (2)返回指令RET 5.5.4 中断指令 8086/8088 CPU在程序中允许安排一条中断指令来引起一个中断过程,这种中断叫内部中断,或叫软中断。被中断的指令地址处称为“断点”。有关中断的详细情况将在第六章讨论。 中断指令共有三条: (1)INT n 执行类型n的中断服务程序,N=0~255 (2)INTO 执行溢出中断的中断服务程序 (3)IRET 从中断服务程序返回调用程序 (1) INT n 格式: INT n 说明: n×4 = 向量地址。该向量地址中的内容即为中断服务程序入口地址(段:偏移),入口地址也称为“中断向量”。 0000 : n×4 XXH XXH YYH YYH 中断服务程序入口的偏移地址(IP) 中断服务程序入口的段地址(CS) 中断类型码 n = 0?255 内存 中断向量 INT指令的操作

文档评论(0)

502992 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档