8086CPU指令系统 (2)市公开课一等奖省赛课获奖课件_第1页
8086CPU指令系统 (2)市公开课一等奖省赛课获奖课件_第2页
8086CPU指令系统 (2)市公开课一等奖省赛课获奖课件_第3页
8086CPU指令系统 (2)市公开课一等奖省赛课获奖课件_第4页
8086CPU指令系统 (2)市公开课一等奖省赛课获奖课件_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

本教案内容第3章8086CPU指令系统汇编语言指令8086指令分类数据与转移地址寻址方式数据传送类指令算术运算类指令逻辑运算类指令移位类指令标志位操作指令转移指令循环控制指令子程序调用返回指令中止调用返回指令字符串操作指令I/O输入输出指令其它指令宏指令8086CPU指令系统(2)第1页3.11子程序调用返回指令概念:子程序为功效确定、且独立程序段。优点:能够将任何一段独立程序归整为一个子程序,当需要该段程序时,只需调用子程序即可,调用后会自动返回到调用指令下一条指令。所以采取子程序设计时,能够简化程序设计。从调试程序角度,因为原本在多处出现程序段,缩减为子程序调用指令,使调试程序愈加方便。8086CPU指令系统(2)第2页3.11子程序调用返回指令缺点:采取子程序设计后。因为调用子程序和从子程序中返回需要执行指令,而且为保护一些存放器内容,需要进行压入堆栈和弹出堆栈操作,所以会使程序执行速度受到一定影响。

8086CPU指令系统(2)第3页3.11子程序调用返回指令实现:子程序调用是经过自动修改(IP)和/或(CS)内容实现。为了确保子程序调用后能够返回到调用指令之后,CALL指令会自动保留返回地址(IP和/或CS),而RET指令会自动返回到CALL指令下一条指令。

8086CPU指令系统(2)第4页3.11子程序调用返回指令一、子程序调用指令CALL子程序调用指令CALL(Callprocedure)有两种格式:CALLLABEL ;调用入口地址为;标号LABEL子程序CALLOPR ;调用子程序,其入口地址;为操作数OPR内容

8086CPU指令系统(2)第5页3.11子程序调用返回指令CALLLABEL ;调用入口地址为;标号LABEL子程序分三种情况:(1)当标号LABEL与CALL指令不在同一个段内时,子程序调用在段间进行,其完成操作有:CS入栈,IP入栈;(IP)←LABEL偏移地址;(CS)←LABEL段地址。指令寻址方式为段间直接寻址。8086CPU指令系统(2)第6页3.11子程序调用返回指令(2)当标号LABEL与CALL指令在同一个段内,且能够采取8位有符号数表示其相对位移量时,则子程序调用在段内进行,其完成操作有:IP入栈;(IP)←(IP)+DISP8。指令寻址方式为段内直接寻址,也称为相对寻址。(3)当标号LABEL与CALL指令在同一个段内,且需要采取16位有符号数表示其相对位移量时,则子程序调用在段内进行,其完成操作有:IP入栈;(IP)←(IP)+DISP16。指令寻址方式为段内直接寻址,也称相对寻址。8086CPU指令系统(2)第7页3.11子程序调用返回指令CALLOPR ;调用子程序,其入口地址;为操作数OPR内容分为三种情况:(1)当OPR为16位通用存放器REG16时,则子程序调用在段内进行,其完成操作有:IP入栈;(IP)←(REG16)。指令寻址方式为段内间接寻址。8086CPU指令系统(2)第8页3.11子程序调用返回指令(2)当OPR为16位存放单元RAM时,则子程序调用在段内进行,其完成操作有:IP入栈;(IP)←(RAM)。指令寻址方式为段内间接寻址。(3)当OPR为32位存放单元RAM时,则子程序调用在段间进行,其完成操作有:CS入栈,IP入栈;(IP)←(RAM),(CS)←(RAM+2)。指令寻址方式为段间间接寻址。8086CPU指令系统(2)第9页3.11子程序调用返回指令二、子程序返回指令RET子程序返回指令RET(Returnfromprocedure)有三种格式:RET ;用于段内子程序返回,完成IP出栈,即(IP)←(SP)RETF ;用于段间子程序返回,完成IP出栈,CS出栈RETn ;完成RET(或RETF)指令功效后,(SP)←(SP)+n8086CPU指令系统(2)第10页3.11子程序调用返回指令三、过程定义在IBMPC汇编过程中,子程序通常以过程方式编写。过程定义格式:过程名PROC[类型]

RET过程名ENDP其中,过程名是用户给子程序起名字,它能够看作为标号,含有段地址、偏移地址和类型属性。子程序类型能够取NEAR(近程过程,可供段内调用)和FAR(远程过程,可供段间调用),当类型缺省时,表示NEAR(近程过程)。

8086CPU指令系统(2)第11页一个子程序名一但定义,就含有以下三个属性段地址段内偏移地址类型FARNEAR(可缺省)就是子程序第一条指令地址3.11子程序调用返回指令8086CPU指令系统(2)第12页3.11子程序调用返回指令子程序还能够是另一个形式:〈标号〉:

RET8086CPU指令系统(2)第13页子程序调用与返回指令应用结构①段内子程序调用与返回;主程序CODESEGMENTASSUMECS:CODESTART:

……3.11子程序调用返回指令8086CPU指令系统(2)第14页………;子程序SUB1SUB1PROCNEAR

RET;SUB1ENDPCODEENDSENDSTARTCALL

NEARPTR

SUB1能够省略●IP←((SP))●SP←(SP)+2●SP←(SP)-2●((SP))←返回地址(IP)●IP←(IP)+16位DISP3.11子程序调用返回指令8086CPU指令系统(2)第15页

;主程序CODEMSEGMENTASSUMECS:CODEMSTART:CALLFARPTRSUB2MOVAH,4CHINT21HCODEMENDS……

;子程序CODESSEGMENTASSUMECS:CODESSUB2PROCFAR

RETF;也能够写成RETSUB2ENDPCODESENDSENDSTART……①IP←((SP))SP←(SP)+2②CS←((SP))SP←(SP)+2①SP←(SP)-2((SP))←返回地址(CS)②SP←(SP)-2((SP))←返回地址(IP)③IP←OFFSETSUB2CS←SEGSUB28086CPU指令系统(2)第16页3.11子程序调用返回指令例3.32子程序设计,编写子程序实现统计一个字(AX)中“1”个数。解:利用移位指令或循环移位指令,每次对CF位进行检测位:当CF=1时,则总个数加1;当CF=0时,则总个数不变。这种操作能够采取有条件转移指令来实现,但更方便方式是采取ADC指令实现。子程序以下:

8086CPU指令系统(2)第17页3.11子程序调用返回指令COUNTER1PROCNEARPUSHAX MOVCX,16 XORBL,BLCOU1: SHRAX,1 ADCBL,0 LOOPCOU1POPAXRETCOUNTER1ENDP8086CPU指令系统(2)第18页3.11子程序调用返回指令例3.33子程序应用。利用上例设计子程序,统计字型变量VAR1中1个数。解:在数据段中定义变量VAR1和CounterVar1:

VAR1 DW 1234H CounterVar1 DB?则可在代码段中编写程序: MOVAX,VAR1 CALLCOUNTER1 MOV CounterVar1,BL执行后,结果单元CounterVar1值为5,说明1234H中包含有5个“1”。

8086CPU指令系统(2)第19页3.11子程序调用返回指令例3.34编写以十六进制数显示AL和AX内容子程序(DISPAL、DISPAX)。解:先编写显示AL存放器内容子程序DISPAL。因为AL中有两位十六进制数,每一位值为0~9、0AH~0FH,在显示时需要将它们转换成对应ASCII码,然后调用INT21H02H号功效进行显示。子程序DISPAL以下:8086CPU指令系统(2)第20页3.11子程序调用返回指令DISPAL PROCNEARPUSHAXPUSHCXPUSHDXPUSHAXMOVCL,4 ;处理高位十六进制数SHRAL,CLCALLCHANG ;十六进制数变换成ASCII码MOVAH,02MOVDL,ALINT21H ;显示一位字符

8086CPU指令系统(2)第21页3.11子程序调用返回指令POPAXANDAL,0FH ;处理低位十六进制数CALLCHANG ;十六进制数变换成ASCII码MOVAH,02MOVDL,ALINT21H ;显示一位字符POPDXPOPCXPOPAXRETDISPAL ENDP8086CPU指令系统(2)第22页3.11子程序调用返回指令CHANGPROCNEAR ;十六进制数变换成ASCII码CMPAL,10JNGECHANG1ADDAL,7CHANG1:ADDAL,30HRETCHANGENDP8086CPU指令系统(2)第23页3.11子程序调用返回指令能够直接调用DISPAL实现显示AX内容,子程序DISPAX内容以下:DISPAX PROCNEAR XCHGAL,AH CALLDISPAL XCHGAH,AL CALLDISPALRETDISPAXENDP8086CPU指令系统(2)第24页3.11子程序调用返回指令作业:8086CPU指令系统(2)第25页3.12中止调用与返回指令计算机在程序运行过程中,因为发生了一些“紧急事件”,需要进行特殊处理(转向中止服务子程序执行),处理后返回到程序中止处继续执行,这种过程称为中止处理过程。这里“紧急事件”能够是由硬件产生,比如系统掉电、硬件故障、定时计数器溢出等;能够是执行指令产生,比如除法溢出等;还能够是专门中止调用指令所产生。本节主要介绍专门中止调用指令、中止服务子程序结构和中止返回指令。8086CPU指令系统(2)第26页3.12中止调用与返回指令一、中止调用指令INT中止调用指令INT(Interrupt)格式为:

INT n这表示调用第n号中止,n为中止类型号,其值能够是0~255。当执行该指令时,会进行以下操作:PSW、CS、IP入栈;去除IF、TF标志;从中止向量表中取出中止向量(中止向量为中止服务子程序入口地址);转到中止服务子程序进行执行;中止服务子程序最终一条指令应该是中止返回指令,执行该指令能够返回到程序中止处继续执行。8086CPU指令系统(2)第27页3.12中止调用与返回指令二、中止返回指令IRET中止返回指令IRET(Interruptreturn)格式为:

IRET表示从中止服务子程序返回主程序。执行该指令时,会完成IP、CS、PSW出栈操作,其次序与INTn指令入栈次序相反。因为修改了IP和CS内容,从而实现程序返回功效。 8086CPU指令系统(2)第28页3.12中止调用与返回指令三、中止向量表每个中止服务子程序入口地址(称为中止向量)为32位(16位偏移地址和16位段地址),占用4个地址单元。计算机中采取最低1024个地址单元(称为0页)来存放中止向量,所以,n号中止中止向量存放地址为:4×n,调用该中止时,能够从该地址取得中止服务子程序入口地址。8086CPU指令系统(2)第29页3.12中止调用与返回指令四、中止服务子程序结构因为中止是随时可能调用程序,我们无法预知其调用位置,这

温馨提示

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

评论

0/150

提交评论