微机原理与接口技术6-调用子程序指令
《微机原理及接口技术》第六章

2、CPU对中断的响应
关中断:CPU响应中断后,发中断响应(INTA)信号的同时,内部自动实现关中断 保留断点:封锁IP+1,入栈保存CS:IP。 保护现场:由中断服务程序先将有关REG入栈保存。
给出中断入口、转相应的中断服务程序:中断服务程序起始地址,执行中断服务。
恢复现场:将中断服务程序入栈保存的REG内容弹出,恢复现场。 开中断与返回:中断服务的最后一条指令,出栈恢复CS:IP,恢复主程序运行,使IF自动恢
第十章
J X G
微型计算机开发应用
1/27
J X G
微机原理及接口技术 第六章、中断控制系统
本章要点:
J X G
中断的基本概念 中断处理过程 可编程中断控制器8259A的结构、功能 可编程中断控制器8259A的应用
2/27
J X G
微机原理及接口技术 6.1
一、中断的基本概念
中断系统
J X G
微机原理及接口技术
三、外部中断
8086芯片设置有两条中断请求信号输入引脚:NMI和INTR引脚,用于外部中断 源产生的中断请求,可分为以下两种: 1、可屏蔽中断 INTR (18脚) INTR线上的请求信号是电平触发的。当IF=0,CPU中断不响应,这种情况称为 可屏蔽中断。可屏蔽中断通过指令设置IF中断标志位,达到控制的目的。 STI CLI ;IF←1,开中断,CPU才能响应INTR线上的中断请求。 ;IF←0,关中断,CPU不响应INTR线上的中断请求。
对于系统专用中断,系统将自动提供0~4中断类型号,保证系统自动转到处理程序。
J X G
对于可屏蔽中断INTR,外接口电路产生中断类型号。目前8259A产生。
微机原理与接口技术-六章-程序设计

汇编语言程序设计步骤:
开始
处理
处理
结束
处理
Y
N
6.2 简单程序(1)
例:将内存单元10050H的内容拆成两段,每段4位,分别存 入10051H(低4位)和10052H(高4位)单元。即 10051H和10052H单元的高4位都为0。
⑥静态检查程序是否有错
6.3 分支程序(1)
N 条件满足? 语句系列1 语句系列2 N
例:编一个程序。从外设71H取一个数M,判断其值是否在10和 20之间,即10≤M<20。如果M≥20,则送0FFH给外设73H; 如果M<10,则送00H给外设73H;如果10≤M<20, 则送88H给外设73H。
子程序中对堆栈的压入和弹出操作要成对使用,保持堆栈的平衡。
子程序要利用过程定义伪指令声明。
一、子程序编写注意事项
二、举例
例:
code segment main proc far ...... call subr1 ...... ret main endp subr1 proc near ...... ret subr1 endp code ends
DP5 PROC NEAR MOV AL,CL SAL AL,1 SAL AL,1 ADD AL,CL MOV CL,AL RET DP5 ENDP MY ENDS END START AL=? BL=? CL=?
汇编语言中,子程序要用一对过程伪指令PROC和ENDP声明,格式如下: 过程名 PROC [NEAR/FAR] …… ;过程体 …… 过程名 ENDP NEAR属性(段内近调用) FAR属性(段间远调用)
提供必要的子程序说明信息。
处理好子程序与主程序间的参数传递问题。
微机原理与接口技术课本

第1章微型计算机基础1.1 计算机中数的表示和运算1.1.1 计算机中的数制及转换在微型计算机中,常见和常使用的数制♦十进制♦二进制♦八进制♦十六进制等。
1.十进制十进制计数特征如下:♦使用10个不同的数码符号0,1,2,3,4,5,6,7,8,9♦基数为10♦每一个数码符号根据它在数中所处的位置(即数位),按逢十进一决定其实际数值。
任意一个十进制正数D,可以写成如下形式:(D)10=D n-l³10 n-1 +D n-2³10 n-2 +…+D l³101+D0³100+D—l³10 -1+D-2³10-2+²²+D-n³10-n2.二进制在二进制计数制中,基数是2,计数的原则是“逢2进1”。
特征如下:♦使用两个不同的数码符号0和l♦基数为2♦每一个数码符号根据它在数中所处的位置(即数位),按逢二进一决定其实际数值。
任意一个二进制正数B,可以写成如下形式:(B)2=B n—l³2 n-1 +B n—2³2 n-2+…+B l³21+B0³20+B—l³2 -1+B-2³1-2+²²+B-n³1-n十进制TO二进制把十进制整数转换成二进制整数通常采用的方法是“除以2取余数”。
把十进制小数转换成二进制小数所采用的规则是“乘2取整”。
在计算机中,数的存储、运算、传输都使用二进制。
[例 1-2] 将十进制小数0.6875转换成二进制小数3.八进制在八进制计数制中,基数是8,计数的原则是“逢8进1”。
特征如下:♦使用8个不同的数码符号0,1,2,3,4,5,6,7♦基数为8♦每一个数码符号根据它在数中所处的位置(即数位),按逢八进一来决定其实际数值。
任意一个八进制正数S,可表示为:(S)8=S n—l³8 n-1+S n—2³8 n-2+²²+S1³8 1+S0³8 0 +S—l³8–1+²²+S-m³8-m转换: 将十进制整数转换成八进制整数的方法是“除以8取余数”。
《微机原理与接口技术》(第三版)_周荷琴中国科学技术大学出版社课后答案直接打印

第一章 习题1 什么是冯·诺依曼机?答: 冯·诺依曼在1946年提出了一个完整的现代计算机的结构雏型,它由5个部分组成,即运算器、控制器、存储器、输入设备和输出设备。
运算器负责指令的执行;控制器的作用是协调并控制计算机的各个部件按程序中排好的指令序列执行;存储器是具有记忆功能的器件,用于存放程序和需要用到的数据及运算结果;而输入/输出设备则是负责从外部设备输入程序和数据,并将运算的结果送出。
9 将下列二进制数转换为十进制数。
(1) 1101.01 (2) 111001.0011 (3) 101011.0101 (4) 111.0001解:(1) 13.25(2) 57.1875(3) 43.3125(4) 7.062510 将下列十六进制数转换为十进制数。
(1) A3.3H (2) 129.CH (3) AC.DCH (4) FAB.3H解:(1) 163.1875(2) 297.75(3) 172.859375(4) 4011.187514 将下列二进制数转换为有符号十进制数。
(1) 10000000 (2) 00110011 (3) 10010010 (4) 10001001解:(1) -0(2) 51(3) -18(4) -915 将下列十进制数转换为单精度浮点数。
(1) +1.5 (2) -10.625 (3) +100.25 (4) -1200解:(1) 0 01111111 10000000000000000000000(2) 1 10000010 01010100000000000000000(3) 0 10000101 10010001000000000000000(4) 1 10001001 00101100000000000000000 w w w .k h d a w .c o m 课后答案网第二章习题及答案(科大)必做习题:1,5,9,11,12,14,16,18,20参考答案:1 答:CPU 内部由执行单元EU 和总线接口单元BIU 组成。
微机原理与接口技术-知识点归纳

微机原理与接口技术-知识点归纳微机原理知识点归纳一、选择题1.在计算机内部,一切信息的存取、处理和传送都是以( 二进制 )码形式进行的。
2.机器字长为8位的有符号数,其表示数值的范围是( -128-127 ),8位无符号数( 0-255 )。
3.运算器运算时经常会遇到\溢出\这是指( 越界 )。
4.实地址模式下,一个逻辑段的体积最大为( 64k )。
5.在下列指令的表示中,不正确的是( c )。
A.MOV AL,[BX+SI] B.JMP DONI C.DEC [SI]D.MUL CL 6.8254中的计数器共有( 6 )种工作方式。
7.在异步串行通信协议中规定,传送的每个帧中数据位长度是( 5-8 )。
8.在异步串行通信中,使用比特率来表示数据传送速率,它是指(比特每秒9.CPU执行IRET指令,从堆栈段中弹出( 6 )字节。
10.8255芯片中能够工作在双向传输方式的数据口是( A口)。
11.机器字长为8位的补码,其表示数值的范围是( -128-127 )。
12.运算器运算时经常会遇到\溢出\这是指( 越界 )。
13.在下列指令的表示中,不正确的是( A )。
A.PUSH AL B.JMP AGA C.MOV AL,[BX+SI] D.MUL CL14.如果一个程序在执行前CS=1000H,IP=2000H,该程序的起始地址是( 15.下列指令中操作数在堆栈段中的是( C ) A.MOV AX, 34H B.ADD AX,ES:[BX] C.INC WORD PTR [BP] D.SUB AX, DS:[34H]16.若SP=0200H,则执行指令PUSH AX 后,SP=( 01FEH )。
17.下列不属于PC机I/O端口分类的是( B )。
A.控制端口 B.地址端口 C.数据端口 D.状态端口 18.实模式下,70H型中断向量存放在内存中的地址是( 1C0H-1C3H )。
子程序调用指令

子程序调用指令
子程序调用指令是指一个程序在一段程序运行时,该段程序执行某个功能时,会调用由另一段子程序处理的指令的一种机器指令。
子程序调用指令的运行过程主要分为六个步骤:
1、先将书写代码时在子程序指令里声明的一个标记符(参数可以有一到多个)放入程序计数器,编程使程序跳转至对应的子程序。
2、将参数放入堆栈中。
3、程序计数器指向下一个指令(位置),将其存入返回地址寄存器中。
4、转至子程序,调用子程序中的指令,直至子程序返回跳转指令。
5、将从子程序返回的参数或结果放入程序总线中。
6、程序计数器指向堆栈中保存的返回地址,继续执行程序。
子程序调用指令的使用有很多优点,可以将程序设计的复杂性降低,提高代码的可维护性,减少重复的编码,并使程序更加结构良好和清晰。
同时,由于调用子程序时需要使用到跳转指令,也可以减少程序运行所需的时间。
然而,程序的运行效率有时也会根据子程序的大小和复杂性以及条件的多少而有所降低。
微机原理与接口技术第六章8259A练习题及答案

微机原理与接口技术第六章-8259A练习题及答案中断技术和中断控制器8259A练习题及答案一、填空题1.8088微处理器最多能处理256种不同类型的中断。
2.8088系统的中断向量表位于从内存地址 00000H 开始,占1K字节存储单元。
3.8088CPU响应INTR中断时,将PSW(或标志寄存器内容)和断点(或CS:IP)进堆栈保存。
4.8259A可管理8级优先级中断源,通过级联,最多可管理 64 级优先级中断源。
5.若8259A的IRR(中断请求寄存器)的内容为10H,说明IR4请求中断。
二、选择题6.8088CPU的标志寄存器中IF=1时,表示允许CPU响应______中断。
CA.内部中断B.外部中断C.可屏蔽中断D.不可屏蔽中断7.CPU在响应中断时,保存断点是指______。
DA.将用户设置的程序指令地址入栈保存B.将中断服务程序的入口地址入栈保存C.将程序状态字PSW入栈保存D.将返回地址即程序计数器PC(CS:IP)的内容入栈保存8.8088的中断向量表用于存放______。
BA.中断类型号B.中断服务程序的入口地址C.中断服务程序的返回地址D.断点地址三、判断题9.8086的可屏蔽中断的优先级高于不可屏蔽中断。
[ ] ×10.通常8259A芯片中的IR0优先级最低,IR7的优先级最高。
[ ]×11.在8088系统中,所谓中断向量就是中断服务程序入口地址。
[ ] √四、简答题12.CPU响应INTR中断的条件是什么?答:(1)INTR信号为有效电平(2)当前指令执行完毕(3)CPU开中断(IF=1)(4)没有更高级的请求(RESET , HOLD ,NMI)13.一般CPU响应中断时自动做哪些工作? 8088CPU呢?答:一般CPU在响应中断时,关中断,保存断点,识别中断源,找到中断服务程序入口地址,转入中断服务程序。
8080CPU在响应中断时,首先把PSW(或标志寄存器内容)入栈保存,其余同一般CPU.14.8088CPU在执行中断返回指令IRET时,执行什么操作?答:(1)弹出断点送CS:IP第 - 2 - 页共 13 页(2)弹出PSW送标志寄存器15.中断控制器8259A中下列寄存器的作用是什么?(1) IRR (中断请求寄存器) :保存中断源的中断请求(2) IMR (中断屏蔽寄存器) :屏蔽/允许中断源请求中断,由程序写入,1为屏蔽,0为允许(3) ISR (中断服务寄存器): 记录CPU正在为哪些中断源服务(4) IVR (中断向量寄存器): 保存中断向量号16、初使化时设置为非自动结束方式,那么在中断服务程序将结束时必须设置什么操作命令?如果不设置这种命令会发生什么现象?答案:当中断服务程序将结束时,必须发0CW2=20H为中断结束命令,执行此命令即撤消正在服务的中断请求和服务标志;否则,即使返回主程序但未退出此中断,造成中断响应的混乱。
微机原理及接口技术习题答案

微机原理及接⼝技术习题答案第⼀章习题及答案1. 微处理器内部包含哪三⼤部分?解:运算器、控制器和寄存器组。
2. 完成下列数制的转换①解:②0.11B=()D 解:0.11B=0.75D 。
③211.25=( )B =( )H 解:④10111.0101B=( )H=( )BCD解:10111.0101B=17.5H=23.3125D=(0010 0011.0011 0001 0010 0101)BCD3. 已知X=+1011010B ,Y =–0011011B ,设机器数为8位,分别写出X 、Y 的原码、反码和补码。
解:4. 已知X 的真值为32,Y 的真值为–19,求[]?Y X =+补解:[]00001101B X Y +=补5. 已知X=51,Y=–86,⽤补码完成下列运算,并判断是否产⽣溢出(设字长为8位)。
① X +Y ② X -Y ③ –X +Y ④ –X -Y 解:67C C 0⊕=,所以未产⽣溢出。
676. 若使与门的输出端输出⾼电平,则各输⼊端的状态是什么?解:各输⼊端为⾼电平。
7. 若使与⾮门的输出端输出低电平,则各输⼊端的状态是什么?解:各输⼊端为⾼电平。
8. 如果74LS138译码器的Y 4端输出低电平,则C 、B 、A 三个输⼊端的状态分别是什么?解:C 、B 、A 三个输⼊端的状态分别是‘1’,‘0’,‘0’。
第⼆章习题及答案1. 8086/8088CPU 由哪两⼤功能部分所组成?简述它们的主要功能? 解:8086/8088CPU 由EU 和BIU 两⼤功能部分组成。
执⾏单元EU主要完成指令的译码和执⾏。
执⾏单元通过EU控制电路从BIU中取出指令,经过指令译码形成各种定时控制信号,向EU内各功能部件发出相应的控制命令,以完成指令所规定的操作。
总线接⼝单元BIU是8086/8088同外部联系的接⼝。
它负责所有涉及外部总线的操作,包括取指令、读操作数、写操作数、地址转换和总线控制等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(五)控制转移指令
4. 调用子程序指令
4.1段内直接(相对)调用:子程序在同一代码段中,子程序相对地址(十六位偏移量)放在指令编码中。
用于调用一个
不知确切地址,但知标号的子程序。
格式:CALL SUBR1;SUBR1为子程序入口标号,子程序相对地址放在指令编码中,三字节指令。
操作:①IP入栈:IP H→(SP-1),IP L→(SP-2),SP-2→SP;②IP+D16→IP
4.2段内间接(绝对)调用:子程序在同一代码段中,子程序的入口地址(绝对地址)存放在寄存器或存贮单元中(两字
节或一字),用于调用一个已知确切地址的子程序。
格式:CALL (NEAR PTR) OPRD;OPRD为寄存器或存贮器,存放两字节的子程序入口偏移地址。
操作:①IP入栈:IP H→(SP-1),IP L→(SP-2),SP-2→SP;②〔OPRD〕→IP(传送一个字)
4.3段间直接(绝对)调用:子程序不在同一代码段中,子程序的入口地址(偏移地址及新的段地址)放在指令编码中。
一般用于调用一个不知确切地址,但知标号的子程序。
格式:CALL SUBR2;SUBR2为子程序入口标号,五字节指令。
操作:①CS入栈:CS H→(SP-1),CS L→(SP-2),SP-2→SP;②IP入栈:IP H→(SP-1),IP L→(SP-2),SP-2→SP;
③置新IP:指令第2、3字节→IP;④置新CS:指令第4、5字节→CS。
4.4 段间间接(绝对)调用:子程序不在同一代码段中,子程序的入口地址(偏移地址及新的段地址)在指定的存贮单元
(连续四个字节)中。
一般用于调用一个已知确切入口地址的子程序。
格式:CALL DWORD PTR OPRD;OPRD为存贮器,存放四字节的子程序入口地址。
操作:①CS入栈:CS H→(SP-1),CS L→(SP-2),SP-2→SP;②IP入栈:IP H→(SP-1),IP L→(SP-2),SP-2→SP;
③置新IP:(EA)→IP(传送一个字);④置新CS:(EA+2)→CS(传送一个字)。
5. 返回指令放在子程序末尾,以在完成子程序后返回主程序。
5.1段内返回段内调用(不管是段内直接还是段内间接调用)返回
格式:RET 操作:IP出栈即(SP)→IP,SP+2→SP。
5.2段内带立即数返回
格式:RET EXP;EXP是一个常数,也可为一表达式,将此常数或由表达式计算出的常数看成一个16位的位移量D16,用以出栈后修改堆栈指针。
操作:①IP出栈:(SP)→IP,SP+2→SP;②修改堆栈指针:SP+D16→SP。
5.3段间返回段间调用(不管是段间直接还是段间间接调用)返回
格式:RET 操作:IP出栈即(SP)→IP,SP+2→SP;CS出栈即(SP)→CS,SP+2→SP。
5.4段间带立即数返回
格式:RET EXP;EXP为常数或表达式,将此常数或由表达式计算出的常数看成一个16位的位移量D16,用以出栈后修改堆栈指针。
操作:①IP出栈:(SP)→IP,SP+2→SP;② CS出栈:(SP)→CS,SP+2→SP;③修改堆栈指针:SP+D16→SP。
!CALL指令与RET指令均不影响标志。
6. 中断指令
6.1中断格式:INT N;N#中断指令,两字节指令(CD N),N为0~255D常数,但N≠3。
操作:①PSW入栈:PSW→(SP),SP-2→SP;②清除TF、IF;③CS入栈:CS→(SP),SP-2→SP;
④IP入栈:IP→(SP),SP-2→SP;⑤进入N#中断:0000H段中(N∗4)→IP, (N∗4+2)→CS。
6.2溢出中断格式:INTO;功能相当于4号中断,但为一字节指令(CE)。
操作:如OF=1,则①PSW入栈;②清除TF、IF;③CS入栈;④IP入栈;⑤进入4#中断:(10H)→IP, (12H)→CS。
6.3断点中断指令格式:INT 3;一字节指令(CC),用于在DEBUG中调试程序。
操作:①PSW入栈;②清除TF、IF;③CS入栈;④IP入栈;⑤(000CH)→IP, (000EH)→CS,进入断点中断。
6.4从中断返回格式:IRET;任何中断都以IRET指令结束,以从中断返回主程序。
操作:①IP出栈:(SP)→IP,SP+2→SP;② CS出栈:(SP)→CS,SP+2→SP;③ PSW出栈(SP)→PSW,SP+2→SP。