微机原理与接口技术(楼顺天编着)课后第八章习题答案[推荐5篇]

时间:2019-05-14 14:17:30下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《微机原理与接口技术(楼顺天编着)课后第八章习题答案》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《微机原理与接口技术(楼顺天编着)课后第八章习题答案》。

第一篇:微机原理与接口技术(楼顺天编着)课后第八章习题答案

第8章 中断系统与可编程中断控制器8259A

1.什么叫中断?8086微机系统中有哪几种不同类型的中断?

答:在CPU执行程序的过程中,由于某个事件的发生,CPU暂停当前正在执行的程序,转去执行处理该事件的一个中断服务程序,待中断服务程序执行完成后,CPU再返回到原被中断的程序继续执行。这个过程称为中断。

8086微机系统中有3种中断: 1)外部可屏蔽中断。2)外部不可屏蔽中断。3)内部中断

2.什么是中断类型?它有什么用处?

答:通常用若干位二进制编码来给中断源编号,该编号称为中断类型号。8086微处理器用8位二进制码表示一个中断类型,有256个不同的中断。这些中断可以划分为内部中断、外部不可屏蔽中断、外部可屏蔽中断三类。

用处:使CPU识别中断源,从而能正确地转向该中断源对应的中断服务程序入口。3.什么是中断嵌套?使用中断嵌套有什么好处?对于可屏蔽中断,实现中断嵌套的条件是 什么?

答:微处理器在处理低级别中断的过程中,如果出现了级别高的中断请求,微处理器停止执行低级中断的处理程序而去优先处理高级中断,等高级中断处理完毕后,再接着执行低级的未处理完的程序,这种中断处理方式成为中断嵌套。

使用中断嵌套的好处是能够提高中断响应的实时性。对于某些对实时性要求较高的操作,必须赋予较高的优先级和采取中断嵌套的方式,才能保证系统能够及时响应该中断请求。

对于可屏蔽中断,实现中断嵌套的条件有:(1)微处理器处于中断允许状态(IF=1)(2)中断请求的优先级高于正在执行的中断处理程序的优先级。(3)中断请求未被8259屏蔽。(4)没有不可屏蔽中断请求和总线请求。

4.什么是中断向量?中断类型号为1FH的中断向量为2345H:1234H,画图说明它在中断向 量表中的存放位臵。

答:中断向量为每个中断服务子程序的入口地址,为32位(16位的偏移地址和16位的段地址),在中断向量表中占用4个地址单元。在8086CPU组成的计算机系统中,采用最低的1024个地址单元(称为0页)来存储中断向量。这1024个地址单元成为中断向量表。因此,中断类型号位1FH的中断向量,在中断向量表中的存储位臵为1FH×4=07CH。中断类型号为1FH的中断向量在中断向量表中的存放位臵如图8.1所示。

图8.1 中断类型号为1FH的中断向量在中断向量表中的存放位臵

5.中断向量表的功能是什么?叙述CPU利用中断向量表转入中断服务程序的过程。答:中断向量表是用来存放中断向量的。是中断类型号与它对应的中断服务程序入口地址之间的换算表。

1)CPU获得中断类型号n后,将当前PSW、CS和IP的内容依次压入堆栈,保存断点的状态和断点地址,以便返回时恢复。2)将PSW中的IF位和TF位清0,关闭中断。

3)把地址为4×n和4×n+1两个单元的16位数作为中断服务程序入口的偏移地址臵入IP,把地址为4×n+2和4×n+3两个单元的16位数作为中断服务程序入口的段地址臵入CS。4)转入中断服务程序。6.叙述可屏蔽中断的响应过程。

答:在IF位为1情况下,从INTR端加入中断请求信号开始,到进入中断服务程序为止所经过的一系列操作,称为可屏蔽中断的响应过程。首先等待当前指令结束后,进入中断响应周期。然后,从微处理器外部的中断控制逻辑获得中断类型号。随后把当前的PSW、CS和IP的内容依次压入堆栈,接着清除PSW中的IF位和TF位为0。最后把中断服务程序的入口地址臵入IP和CS。至此,完成了可屏蔽中断的响应过程,开始进入中断服务程序。

7.简要叙述8259A内部IRR、IMR、ISR三个寄存器的作用。

答:IRR:中断请求寄存器,用来锁存外部设备送来的IR7~IR0中断请求信号。当外部中断请求线IRi有中断请求时,IRR中与之对应的第i位被臵1。该寄存器内容可以被微处理器读出。

IMR:用于设臵中断请求的屏蔽信号。此寄存器第i位被臵1时,与之对应的外部中断请求线IRi被屏蔽,不能向微处理器发出INT信号。

ISR:用于记录当前正在被服务的所有中断级,包括尚未服务完而中途被更高优先级打断的中断级。若微处理器响应了IRi中断请求,则ISR中与之对应的第i位臵1。中断处理结束前,要用指令清除这一位。

8.中断控制器8259A的初始化编程是如何开始的?

答:初始化编程就是指对ICW(初始化命令字)的初始化,对ICW的初始化有一定的顺序,必须从ICW1开始。对中断控制器8259A的初始化编程次序如图8.2所示。初始化ICW1地址A0=0初始化ICW2地址A0=1N是级联吗?Y初始化ICW3地址A0=1NIC4=1?Y初始化ICW1地址A0=1

图8.2 对中断控制器8259A的初始化编程次序

9.设某微机系统需要管理64级中断,问组成该中断机构时需 片8259A。

解:一片8259可控制8级中断,第1片通过级联8片8259可将中断扩充至64级。所以组成该中断机构共需9片8259。

10.完全嵌套的优先级排序方式的规则是什么?如何设臵这种方式?

答:在全嵌套方式下,中断优先级的级别是固定的,即IR0优先级最高,IR1~IR6逐级次之,IR7最低。如果对8259A进行初始化后没有设臵其他优先级别,那么8259A就按全嵌套方式工作。

11.如果设备D1、D2、D3、D4、D5按完全嵌套优先级排列规则。设备D1的优先级最高,D5最低。在下列中断请求下,给出各设备的中断处理程序的次序(假设所有的中断处理程序开始后就有STI指令,并在中断返回之前发出结束命令)

(1)设备3和4同时发出中断请求;

(2)设备3和4同时发出中断请求,并在设备3的中断处理程序完成之前,设备2发出中断请求;

(3)设备1、3、5同时发出中断请求,在设备3的中断处理程序完成之前,设备2发出中断请求。

解:(1)设备3和4同时发出中断请求;

中断处理次序为:D3→D4,示意图如图8.3(a)所示。

主程序D3,D4同时请求D3服务程序STID4服务程序STI3置ISR1ISR3清零ISR4置1IRETIRETISR4清零

图8.3(a)设备3和4同时发出中断请求的中断处理程序的次序示意图

(2)设备3和4同时发出中断请求,并在设备3的中断处理程序完成之前,设备2发出中断请求;

中断处理次序为: D3→D2→D3→D4,示意图如图8.3(b)所示。

D3,D4同时请求D2请求D3服务程序STID2服务程序STI主程序I置1SR312置RSIISR3清零ISR4置1ISR2清零IRETIRETD4服务程序STIISR4清零IRET

图8.3(b)中断处理程序的次序示意图(3)设备1、3、5同时发出中断请求,在设备3的中断处理程序完成之前,设备2发出中断请求。

中断处理次序为:D1→D3→D2→D3→D5,示意图如图8.3(c)所示。

D1,D3,D5同时请求D2请求D1服务程序STID3服务程序STID2服务程序STI主程序11置RSIISR1清零IRETIRETISR3置1ISR3清零ISR2清零IRETISR5置1D5服务程序STIISR5清零IRET 图8.3(c)中断处理程序的次序示意图

12.8259A是怎样进行中断优先权管理的?

答:8259A 利用优先权处理器来识别和管理中断请求信号的优先级别。当几个中断请求信号同时出现时,优先权处理器根据控制逻辑规定的优先权级别和IMR的内容来判断这些请求信号的最高优先级。微处理器响应中断请求时,把优先权最高的IRR中的“1”送入ISR.。当8259A正在为某一级中断服务时,若又出现新的中断请求,则由优先权处理器判断新出现的中断请求的级别是否高于正在处理的那一级。若是,则进入多重中断处理。

13.特殊全嵌套方式有什么特点?它的使用场合是什么? 答:多片8259级联时,主片必须工作在特殊全嵌套方式下。

假设从片工作在全嵌套方式下,先后收到了两次中断请求,而且第二次中断请求有较高的优先级,那么该从片就会两次通过INT引脚向上一级申请中断。如果主片采用全嵌套方式,则它不会响应来自同一引脚的第二次中断请求。而采用特殊全嵌套方式后,就会响应该请求。14.向8259A发送“中断结束”命令有什么作用?8259A有哪几种中断结束方式?分析各自 的利弊。

答:向8259A发送“中断结束”命令,使相应的中断级在ISR中的相应位清“0”,表示该中断处理已经结束。

8259A有自动中断结束方式(AEOI)和非自动中断结束方式(EOI)。(1)自动中断结束方式(AEOI)。

在这种方式下,系统一旦进入中断响应,8259A就在第二个中断响应周期INTA信号的后沿,自动将ISR中被响应中断级的对应位清“0”。这是一种最简单的中断结束处理方式,可以通过初始化命令来设定,但这种方式只能用在系统中只有一个8259A,且多个中断不会嵌套的情况。

(2)非自动中断结束方式(EOI)。

在这种工作方式下,从中断服务程序返回前,必须在程序里向8259A输出一个中断结束命令(EOI),把ISR对应位清“0”。具体做法有一般的中断结束方式和特殊的中断结束EOI命令。这种方式可用于系统中有多个8259A或多个中断中有嵌套的情况,但这种方式要比自动中断结束方式复杂。而且在这种方式下,如果在程序里忘记了将ISR对应位清零,那么,8259A在一般情况下将不再响应这个中断以及比它级别低的中断请求。

15.初始化8259A时设臵为非自动结束方式,则在中断服务程序即将结束时必须设臵什么操 作命令?不设臵这种命令会发生什么现象?如果初始化时设臵为自动结束方式时,还需要设臵这种操作吗?

答:必须发送中断结束命令,即向操作控制字OCW2的EOI位写1。如果不设臵这种命令,则该中断服务程序结束后,CPU将无法响应优先级比它低的中断请求以及它自身的下一次中断请求。若初始化为自动结束方式,则不需设臵这种操作。

16.在哪些情况下需用CLI指令关中断?在哪些情况下需用STI指令开中断? 答:

① 关于有前缀的指令,前缀包括段寄存器前缀(例如指令MOV AX , CS:VAR)、重复前缀(例如指令 REP MOVSB)、和LOCK 前缀。应明确的是,指令前缀并不是一个独立的指令,只是指令的一部分,所以不允许在前缀码和指令码之间响应中断,所以应在这条指令前臵CLI(关中断)指令,在这条指令后臵STI(开中断)指令。② 对于目的地址是段寄存器的MOV 和POP 指令(除CS外),本条指令后不允许响应中断,而是还要执行一条指令结束后才能响应中断,这时可以在指令前加CLI,指令后加STI。

③ 需要进行中断嵌套时,由于微处理器在响应中断时已将IF清零,所以一定要在中断处理程序中加开中断指令,才有可能进行中断嵌套。

17.某系统中有两片8259A,从片的请求信号连主片的IR2引脚,设备A中断请求信号连从

片IR5引脚。说明设备A在一次I/O操作完成后通过两片8259A向8086申请中断,8086微处理器通过两片8259A响应中断,进入设备A的中断服务程序,发送中断结束命令,返回断点的全过程。

答:设备A在一次I/O操作完成后在8259A从片中断请求输入端IR5上产生中断请求,中断请求被锁存在8259A从片IRR中,并经IMR“屏蔽”,其结果送给优先权电路判优。控制逻辑接收中断请求,向8259A主片IR2引脚输出INT信号,中断请求被锁存在8259A主片IRR中,并经IMR“屏蔽”,其结果送给优先权电路判优。控制逻辑接收中断请求,向CPU输出INT信号。CPU从INTR引脚接受8259A主片的INT信号,进入连续两个INTA 周期。优先权电路设臵ISR中的对应位,在收到第一个INTA 信号后,8259A主片把当前申请中断的8259A从片的ID代码010,通过CAS0~CAS2送到相应的8259A从片。相应地8259A从片在收到第二个INTA 信号时,将中断类型号N送到数据线上。

8086CPU获得中断类型号N后,在N×4和N×4+2对应的中断向量表单元获取中断向量分别臵入IP和CS,从此进入设备A的中断服务程序。

在中断服务程序结束前(即执行IRET指令前),应分别向从片8259和主片8259发送EOI中断结束命令,然后执行IRET指令,返回断点。

18.某8086系统用3片8259A级联构成中断系统,主片中断类型号从10H开始。从片的中 断申请连主片的IR4和IR6引脚,它们的中断类型号分别从20H、30H开始。主、从片均采用上升沿触发,非自动中断结束方式。且主片采用特殊全嵌套方式,从片采用完全嵌套方式。请编写他们的初始化程序。

答:设8259A主片的端口地址为20H(A0=0)和 21H(A1=1),第一个8259A从片的端口地址为50H(A0=0)和 51H(A1=1),第二个8259A从片的端口地址为0A0H(A0=0)和 0A1H(A1=1),初始化程序如下: 主片:

MOV AL,00010001B;ICW1:边沿触发,级联

OUT 20H,AL

MOV AL,00010000B;ICW2:中断类型号10H~17H

OUT 21H,AL

MOV AL,01010000B;ICW3:IR4和IR6连有从片

OUT 21H,AL

MOV AL,00010001B;ICW4:特殊全嵌套,非缓冲,非自动中断结束

OUT 21H,AL 从片1:

MOV AL,00010001B;ICW1:边沿触发,级联

OUT 50H,AL

MOV AL,00100000B;ICW2:中断类型号20H~27H

OUT 51H,AL

MOV AL,00000100B;ICW3:INT引脚连主片IROUT 51H,AL

MOV AL,00000001B;ICW4:完全嵌套,非缓冲,非自动中断结束

OUT 51H,AL 从片二:

MOV AL,00010001B;ICW1:边沿触发,级联

OUT 0A0H,AL

MOV AL,00110000B;ICW2:中断类型号30H~37H

OUT 0A1H,AL

MOV AL,00000110B;ICW3:INT引脚连主片IR6

OUT 0A1H,AL

MOV AL,00000001B;ICW4:完全嵌套,非缓冲,非自动中断结束

OUT 0A1H,AL 19.设8259A的端口地址为50H(A0=0)和51H(A1=1),请给下面的8259A初始化程序加上 注释,说明各命令字的含义。

MOV

AL,13H OUT

50H,AL MOV

AL,08H OUT

51H,AL MOV

AL,0BH OUT

51H,AL 解:

MOV

AL,13H OUT

50H,AL

;初始化ICW1,设臵为边沿触发,单片工作 MOV

AL,08H OUT

51H,AL;ICW

2;中断类型号的高5位为00001B,即中断类型号为08H~0FH MOV

AL,0BH OUT

51H,AL;初始化ICW4,一般全嵌套缓冲方式,中断非自动结束 20.设8259A端口地址为20H和21H,怎样发送清除ISR3的命令? 答:8259A可通过设臵操作控制字位。的值为23H,发送中断结束命令(EOI命令),来清除ISR的指定

用低位端口地址(即A0=0)进行操作,因此可编程如下:

MOV AL,23H MOV 20H,AL 21.根据中断过程的要求设计的一个中断系统,大致需要考虑哪些问题? 答:1)设计必要的中断源,确定它们提出的中断请求的方式。

2)编写初始化程序。根据急迫程度的不同,规定好中断源的优先级别,以确定当几个中断源同时请求时,处理机能有一个先后响应次序。3)当处理机响应中断后,需要把被中断程序的现场、断点保护起来,以便中断处理结束后能返回原程序。4)中断服务程序设计。5)恢复现场,返回原程序。

22.给定(SP)=0100H,(SS)=0300H,(PSW)=0240H,以及存储单元的内容(00020H)=0040H,(00022H)=0100H,在段地址为0900H及偏移地址为00A0H的单元中有一条中断指令INT 8,试问执行INT 8指令后,SP、SS、IP、PSW的内容是什么?栈顶的三个字是什么? 答:执行INT8之后,(SP)=00FAH,(SS)=0300H,(IP)=0040H,(PSW)=0040H。由于INT8为双字节指令,所以栈顶的三个字从上到下分别是 00A2H,0900H,0240H。23.中断服务程序结束时,用RETF指令代替IRET指令能否返回主程序?这样做存在什么 问题?

答:可以。但这样做存在问题。IRET指令执行时将出栈IP,CS和PSW的值,而RETF指令只出栈IP,CS的值,因而若中断服务程序中改变了标志位,用RETF指令返回在主程序中将无法恢复标志位的值。尤其是在中断服务程序中关中断后(IF=0),用RETF指令将无法重新开中断,从而导致中断服务结束后CPU不能再响应其他可屏蔽中断。

第二篇:微机原理与接口技术课后习题答案(朱红)

第一章习题答案

一、选择题

1.十进制数 66 转换成二进制数为_______。

A.11000010 B.01100110 C.11100110 D.01000010

答案:D

2.十进制数 27.25 转换成十六进制数为_______。

A.B1.4H B.1B.19H C.1B.4H D.33.4H 答案:C

3.下列数中最小的是________。

A.(101001)2 B.(52)8 C.(2B)16 D.(50)10 答案:A

4.若一个数的 BCD 编码为 00101001,则该数与______相等。

A.41H B.121D C.29D D.29H 答案:C

5.十进制数 9874 转换成 BCD 数为________。

A.9874H B.4326H C.2692H D.6341H 答案:A

6.BCD 数 64H 代表的真值为_______。

A.100 B.64 C.-100 D.+100 答案:B

7.十六进制数 88H,可表示成下面几种形式,错误的表示为_______。

A.无符号十进制数 136 B.带符号十进制数-120 C.压缩型 BCD 码十进制数 88 D.8 位二进制数-8 的补码表示

答案:D

8.若[A]原=1011 1101,[B]反=1011 1101,[C]补=1011 1101,以下结论正确的是______。

A.C 最大 B.A 最大 C.B 最大 D.A=B=C 答案:B

9.8 位二进制补码表示的带符号数 1000 0000B 和 1111 1111B 的十进制数分别是____。A.128 和 255 B.128 和-1 C.-128 和 255 D.-128 和-1 答案:D

10.微机中地址总线的作用是___________。

A.用于选择存储器单元 B.用于选择进行信息传输的设备 C.用于指定存储器单元和 I/O 设备接口单元的选择地址 D.以上选择都不对

答案:C

11.计算机中表示地址使用____。

A.无符号数 B.原码 C.反码 D.补码

答案:A

二、填空题

1.计算机的主机由_______、控制器、主存储器组成。

答案:运算器

2._______确定了计算机的 5 个基本部件:输入器、______、运算器、_______和控制器,程 序和数据存放在______中,并采用二进制数表示。

答案:冯.诺依曼、输出器 存储器 存储器 3.10110.10111B 的十六进制数是_______,34.97H 的十进制数是______,将 114.25 转换为二 进制数为_______。

答案:16.B8H、52.6055、1110010.01 4.(640)10=(______)2=(________)16 答案:101000 0000 280 5.(256.375)10=(______)2=(________)16 答案:10000 0000.011 100.6

6.(10111100.1101)2=(______)10=(________)16 答案:188.8125 BC.D

7.二进制数 1000 0001B 若为原码,其真值为_____;若为反码,其真值为_____;若为补码,其真值为_____。

答案:-1 -126 -127 8.一个 8 位的二进制整数,若采用补码表示,且由 3 个“1”和 5 个“0”组成,则最小的十 进制数为______。

答案:-125 1000 0011

9.在微机中,一个浮点数由_____和_____两个部分构成。

答案:尾数和阶码

10.若[X]原=[Y]反=[Z]补=90H,试用十进制分别写出其大小,X=_____;Y=_____;Z=_____。答案:-16 -111 -112

三、问答题

1.在计算机中为什么都采用二进制数而不采用十进制数?二进制数有哪两种缩写形式? 答案:二进制数具有运算简单、电路简便可靠等多项优点。计算机的逻辑器件均采用高低电平来表示。二进制数的 0 和 1 正好和逻辑电平的高低相吻合,且二进制数使用很方便,还能 节省元器件,4 个元器件的不同组合就能表示 16 个数。八进制和十六进制

2.什么是程序计数器 PC?

答案:CPU 内部都有一个程序计数器 PC(或指令指针计数器 IP),用来存放将要从存储器中 取出执行的下一条指令所在存储空间的位置(指向下一条将要执行的指令)。它具有自动加 1 的功能。

3.已知[X]补=1001 1101B,[Y]补=1100 1001B,[Z]补=0010 0110B,计算[X+Y]补=?,并指出是 否溢出;计算[X-Z]补=?,并指出是否溢出。

答案:[X+Y]补=0110 0110 溢出 [X-Z]补=0111 0111 溢出

4.将下列十六进制数的 ASCII 码转换为十进制数。

(1)313035H(2)374341H(3)32303030H(4)38413543H 答案:103H=259 7CAH=1994 2000H=8192 8A5CH=35420 第二章习题答案

一、选择题

1.8086/8088CPU 内部有一个始终指示下条指令偏移地址的部件是_______。

A.SP B.CS C.IP D.BP

答案:C 2.指令队列的作用是_________。

A.暂存操作数地址 B.暂存操作数 C.暂存指令地址 D.暂存预取指令

答案:D

3.8086/8088 下列部件中与地址形成无关的是______。

A.ALU B.通用寄存器 C.指针寄存器 D.段寄存器

答案:A 4.对于 8086,下列说法错误的是_______。

A.段寄存器位于 BIU 中 B.20 位的物理地址是在 EU 部件中形成的 C.复位后 CS 的初值为 FFFFHD.指令队列的长度为 6 个字节

答案:B 5.8086/8088 中 ES、DI 分别属于_______。

A.EU、BIU B.EU、EU C.BIU、BIU D.BIU、EU 答案:D

6.BIU 与 EU 工作方式的正确说法是_______。

A.并行但不同步工作 B.同步工作 C.各自独立工作 D.指令队列满时异步工作,空时同步工作

答案:A

7.在执行转移、调用和返回指令时,指令队列中原有的内容_______。

A.自动清除 B.用软件清除 C.不改变 D.自动清除或用软件清除

答案:A 8.下列说法中,正确的一条是______

A.8086/8088 标志寄存器共有 16 位,每一位都有含义。B.8088/8086 的数据总线都是 16 位。C.8086/8088 的逻辑段不允许段的重叠和交叉 D.8086/8088 的逻辑段空间最大为 64KB,实际应用中可能小于 64KB。

答案:D 9.8086/8088 工作于最大模式,是因为_____。

A.可以扩展存储容量 B.可以扩大 I/O 空间 C.可以构成多处理器系统 D.可以提高 CPU 主频

答案:C

10.8088/8086 最大模式比最小模式在结构上至少应增加_____。

A.中断优先级控制器 B.总线控制器 C.数据驱动器 D.地址锁存器

答案:B

11.组成最大模式下的最小系统,除 CPU、时钟电路,ROM,RAM 及 I/O 接口外,至少需增 加的芯片类型为______。

a.总线控制器 b.总线裁决器 c.地址锁存器 d.总线驱动器 A.b,d B.a,b,c C.a,d D.a,c,d 答案 C 12.工作在最小模式时,对 CPU 而言,下列信号皆为输入信号的是______。

A.HOLD、、READY B.、、READY C.、HOLD、D.、HOLD、READY 答案:A

13.在最小工作模式下,8088/8086CPU 在每个时钟脉冲的______处,对 HOLD 引脚上的信号 进行进行检测。A)上升沿 B)下降沿 C)结束位置 D)中间位置

答案:A

14.LOCK 引脚的功能是____。

A.总线锁定 B.地址锁定 C.数据输入锁定 D.数据输出锁定

答案:A

15.与存储器(或外设)同步以及与协处理器同步的引脚信号依次为_______。

A.READY、B.READY、HOLD C.、RESET D.、答案:A

16.工作在最大模式时,下列信号皆为输出信号的是_______。

A.QS0、QS1、B.QS0、、C.QS1、、S0 D.、QS1、答案:A

17.8086/8088 最大模式时,引脚有效时的正确含义是_____。

A.能中断 CPU 的工作 B.能进行 DMA 操作 C.其它总线部件不能占有总线 D.暂停 CPU 的工作

答案:C

18.工作在最大模式时,经总线控制器 8288 将对应 CPU 最小模式时的三个引脚状态进行组合,产生控制和命令信号,这三个引脚应为________。

答案:C 19.8088/8086 中,关于总线周期叙述不正确的是_______。

A.总线周期通常由连续的 T1~T4 组成 B.在读写操作数时才执行总线周期 C.总线周期允许插入等待状态 D.总线周期允许存在空闲状态

答案:B 20.在 8086 读总线周期中,进入 T3 后发现 READY=0,需要插入等待状态,则在插入等待状 态时其引脚的高地址 A19~A16_______。

A.表示读数据对应的高 4 位的地址 B.表示 CPU 当前工作状态 C.处于高阻状态 D.处于不定状态

答案:B

21.设 8086/8088 工作于最小模式,在存储器读、写周期中,总线 AD15~AD0 上数据开始有 效的时刻(不插入 Tw)分别是______。

A.T2、T2 B.T2、T3 C.T3、T4 D.T3、T2 答案:D

二、填空题

1.8086/8088CPU 在结构上由两个独立的处理单元_______和_______构成,这两个单元可以 _____工作,从而加快了程序的运行速度。

答案:EU BIU 并行

2.8086 是 Intel 系列的 16 位处理器,从功能上,它分为两个部分:即总线接口单元和执行单 元。总线接口单元由_______、_______、_______、_______、_______等寄存器和 20 位地址 加法器和 6 字节指令队列构成。执行单元有 4 个通用寄存器,即______;4 个专用寄存器,即____、_____、_____、______等寄存器和算术逻辑单元组成。

答案:AX、BX、CX、DX SP、BP、DI、SI

3.任何 CPU 都有一个寄存器存放程序运行状态的标志信息,在 8086 中,该寄存器是_____。其中,根据运算结果是否为零,决定程序分支走向的标志位是____。答案:FR ZF 4.8086/8088CPU 中标志寄存器的 3 个控制位是_____、_____、______。

答案:DF IF TF

5.逻辑地址 9B50H:2C00H 对应的物理地址是______。

答案:9E100H 6.在任何一个总线周期的 T1 状态,ALE 输出_____。

答案:高电平

7.8086 有两种工作模式,即最小模式和最大模式,它由______决定。最小模式的特点是 _______,最大模式的特点是________。

答案: CPU 提供全部的控制信号 需要总线控制器 8288

8.8086CPU 可访问的存储器的空间为 1MB,实际上分奇数存储体和偶数存储体两部分,对于 奇数存储体的选择信号是________,对于偶数存储体的选择信号是_______,对于每个存储 体内的存储单元的选择信号是___________。

答案: A0 A19~A1

9.在 8086 的最小系统,当,时,CPU 完成的操作是_______。

答案:I/O 读

10.在最小模式下,执行“OUT DX, AL”指令时,、、、的状态分别是___。

答案:0, 0, 1, 1

11.8086CPU 从偶地址读写两个字节时,需要_____个总线周期,从奇地址读取两个字节时,需要_____个总线周期。

答案:1 2

12.8086 在存取存储器中以偶地址为起始地址的字时,,A0 的状态分别是____。

答案: 1 0 0

13.8086 向内存地址 1200BH 写一个字节数据时,需要一个总线周期,在该总线周期的 T1 状 态,为______,A0 为_____。

答案:0,1 14.假设某个总线周期需插入两个 Tw 等待状态,则该总线周期内对 READY 信号检测的次数 是_______。

答案:3

15.8086CPU 上电复位后,CS=_____,IP=_____,DS=_____,标志寄存器 FR=_____。答案:0FFFFH,0,0,0

16.8088/8086 的复位信号至少要维持______个时钟周期。

答案:4

17.8086CPU 工作在最小模式下,控制数据流方向的信号是____、____、____、____、____。

答案:、、、、18.当存储器的读出时间大于 CPU 所要求的时间时,为了保证 CPU 与存储器的周期配合,就 要利用______信号,使 CPU 插入一个_____状态。

答案:准备好(READY)等待(Tw)状态

19.当 8086/8088 工作于最大模式时,QS1=1,QS0=0,其表示指令队列的状态为______。答案:队列为空。

20.在 T2、T3、Tw、T4 状态时,S6 为_____,表示 8086/8088 当前连在总线上。

答案:低电平

21.8086/8088 提供的能接受外中断请求信号的引脚是_____和_____。两种请求信号的主要不 同处在于是否可______。

答案:INTR NMI 屏蔽

22.一台微机的 CPU,其晶振的主振频率为 8MHz,二分频后作为 CPU 的时钟频率。如果该 CPU 的一个总线周期含有四个时钟周期,那么此总线周期是_____us。

答案:0.125

23.某微处理器的主频为 20MHz,由 2 个时钟周期组成一个机器周期,设平均 3 个机器周期 可完成一条指令,其时钟周期和平均运算速度分别为_____。

答案:50ns,3.33MHz

三、问答题

1.8086/8088CPU 在结构上由哪两个独立的处理单元构成?这样的结构最主要的优点是什 么?

答案:在微机中,一条机器指令由操作数和操作码构成,再由若干指令构成程序。微处理器 执行一条指令的完整步骤需要两个阶段:取指和执行。取指是从内存中取出指令,执行是分 析指令要求实现的功能,读取所需的操作数,执行指令规定的操作。传统的 8 位处理器采用 顺序执行的方式,各条指令的执行按以上两个阶段交替执行。也就是说,首先取一条指令,然后执行该指令,之后再取下一条指令,再执行,如此重复,直到整个程序执行完毕。在 8086 中,为了加快程序的执行速度,采用了重叠执行的方式,各条指令的执行过程是重 叠进行的。每条指令的执行过程也包括取指和执行两个阶段,但是相邻两条指令的执行过程 有一部分是同时进行的。在执行一条指令时,可以同时取出下一条指令。在当前指令执行完 毕后,就可以立即执行下一条指令。显然,这种重叠执行的方式大大加快了程序的执行速度。为了实现指令的重叠执行方式,8086/8088 微处理器内部分为两个独立的功能部件:执行单 元 EU 和总线接口单元 BIU,执行单元 EU 专门负责指令的执行,总线接口单元 BIU 是从内存 指定区域取出指令送到指令队列缓冲器的。和 BIU 两个功能部件并行工作,执行的 BIU EU EU 在前一时刻取出的指令,与此同时,BIU 又取出下一时刻要执行的指令,由此能使大部分取 指令和执行指令的操作重叠进行,大大缩短了等待指令所需的时间,提高了微处理器的利用 率和整个系统的执行速度。

2.完成下列补码运算,并根据结果设置标志 SF、ZF、CF 和 OF,指出运算结果是否溢出。(1)00101101B+10011100B(2)01011101B-10111010B(3)876AH-0F32BH(4)10000000B+11111111B

答案:(1)C9H SF=1 ZF=0 CF=0 OF=0 未溢出(2)01011101B-10111010B =01011101B+01000110B A3H SF=1 ZF=0 CF=1 OF=1 有溢 出 求-Y 的补码,即正数-Y 的真值(3)876AH-0F32BH =876AH+0CD5H 943FH SF=1 ZF=0 CF=1 OF=0 未溢出(4)7FH SF=0 ZF=0 CF=1 OF=1 有溢出

3.存储器采用分段方法进行组织有哪些好处?

答案:8086 微处理器 CPU 中寄存器都是 16 位,16 位的地址只能访问大小为 64KB 以内的内 存。8086 系统的物理地址由 20 根地址线形成,怎样用 16 位数据处理能力实现 20 位地址的 寻址呢?要做到对 20 位地址空间进行访问,就需要两部分地址,在 8086 系统中,就是由段 地址和偏移地址组成的。而这两个地址都是 16 位,将这两个地址采用相加的方式组成 20 位地址去访问存储器。在 8086 系统的地址形成中,当段地址确定后,该段的寻址范围就已经确定,其容量不大于 64KB。同时,通过修改段寄存器的内容,可达到逻辑段在整个 1MB 空间中浮动。各个逻辑 段之间可以紧密相连,可以中间有间隔,也可以相互重叠。采用段基址和偏移地址方式组成物理地址的优点是: 满足对 8086 系统的 1MB 存储空间的访 问,同时在大部分指令中只要提供 16 位的偏移地址即可。4.Intel 8086/8088 处理器芯片功能强大,但引脚数有限,为了建立其与外围丰富的信息联系,Intel8086/8088 处理器引脚采用了复用方式,说明其采用了何种复用方式?

答案:8086CPU 采用双列直插式的封装形式,具有 40 条引脚。由于受到引脚数量的限制,8086 引脚安排采用了复用技术。它的复用方式有两种:一是采用分时复用技术,在不同的 时刻通过相同的引脚传送不同的信息,从而减少了引脚的数量;二是采用了两种工作方式,在不同的工作方式下,部分引脚具有两种不同的引脚功能。

5.8086CPU 是怎样解决地址线和数据线的复用问题的?ALE 信号何时处于有效电平? 答案:为解决引脚少的问题,8086CPU 内部采用一个多路开关,使低 16 位地址线和 16 位数 据线共用引脚。因为当 CPU 访问存储器或外设时,先要给出访问单元的地址,然后才是读 写数据,因此在时间上是可以区分的。在总线周期的第一个时钟周期(T1 状态),输出低 16 位地址(记为 A15~A0),而在总线周期的其他时钟周期内传送数据。当 CPU 处于“保持响 应”状态时,这些引脚处于高阻隔离状态(即悬浮状态)。ALE 信号是地址锁存信号。8086 在总线周期开始通过地址总线输出地址的同时,通过该引脚 输出一个正脉冲,其下降沿用于将地址信息写入外部的地址锁存器中。在任何一个总线周期 的第一个时钟周期时,ALE 输出有效电平以表示在当前地址/数据复用总线上输出的是地址 信息,ALE 作为锁存信号,对地址进行锁存。ALE 端不能被浮空。

6.8086/8088 系统用的时钟发生器会产生哪些信号?

答案:8284A 是一个专用的时钟发生器,产生 4.77MHz 的标准时钟信号 CLK。此时钟信号作 为系统时钟,并经 CLK 引脚直接送到 8086,作为微处理器的时钟信号。同时 8284A 还对复 位和就绪信号实现内部的时钟同步,然后再输出,实施对 8086 的控制。所以,8086/8088 系统用的时钟发生器产生恒定的时钟信号 CLK,复位信号 RESET,准备就绪信号 READY。

7.说明 8086CPU 的 READY 输入信号和 信号的作用是什么?

答案: READY 输入信号实际上是由访问的存储器或外设发出的响应信号,高电平有效。READY 信号有效时,表示内存或外设准备就绪,马上就可以进行一次数据传输。CPU 在每个总线周 期的 T3 状态开始对 READY 信号开始进行采样。如果检测到 READY 信号为低电平,则在 T3 状态后插入等待状态 Tw,在 Tw 状态 CPU 也对 READY 信号进行采用,若 READY 信号仍为低 电平,则会继续插入等待状态 Tw,所以 Tw 状态可以插入一个或多个,直到 READY 变为高 电平,才进入 T4 状态,完成数据传输过程,从而结束当前总线周期。测试信号,低电平有效,信号是和指令 WAIT 结合起来使用的,CPU 执行 WAIT 指令时,在 CPU 处于等待状态,当 信号低电平时,等待状态结束,CPU 继续往下执行被暂停的指令。

第三章习题

一、选择题

1.寻址方式指出了操作数的位置,一般来说_______。

A.立即寻址给出了操作数的地址 B.寄存器直接寻址的操作数在寄存器内,而指令给出了存储器 C.直接寻址直接给出了操作数本身 D.寄存器直接寻址的操作数包含在寄存器内,由指令指定寄存器的名称 答案:D

2.寄存器寻址方式中,操作数在_________。A.通用寄存器

答案:A 3.寄存器间接寻址方式中,操作数在_________。

A.通用寄存器

答案:C

4.下列指令中的非法指令是______。

A.MOV [SI+BX], AX C.MOV [0260H], 2346H 答案:B

5.设(SP)=0100H,(SS)=2000H,执行 PUSH BP 指令后,栈顶的物理地址是_____。A.200FEH 答案:A

6.指令 LEA BX, TAB 执行后,其结果是______。A.将 TAB 中内容送 BX C.将 TAB 的偏移地址送 BX 答案:C

7.下列正确的指令格式有______。A.MOV [BX], 1 答案:D

8.设(AX)=C544H,在执行指令 ADD AH,AL 之后,______。A.CF=0,OF=0 答案:C

9.若 AL、BL 中是压缩 BCD 数,且在执行 ADD AL, BL 之后,(AL)=0CH,CF=1,AF=0。再执行 DAA 后,(AL)=_____。A.02H 答案:B

10.执行下列程序后 AL 的内容为_____。MOV AL, 25H SUB AL, 71H DAS A.B4H B.43H C.54H D.67H B.12H C.62H D.72H B.CF=0,OF=1 C.CF=1,OF=0 D,CF=1,OF=1 B.MOV AL, 0345H C.MOV ES: PTR[CX], 3 D.XLAT B.将 TAB 的段基址送 BX D.将 TAB 所指单元的存储内容送 BX B.0102H C.20102H D.00FEH B.MOV CL, 280 D.MOV BX, [BX] B.堆栈 C.内存单元 D.段寄存器 B.堆栈 C.内存单元 D.段寄存器 答案:C

11.下列四条指令中,需要使用 DX 寄存器的指令是______。

A.MUL BX 答案:C 12.设(AL)=0E0H,(CX)=3,执行 RCL AL, CL 指令后,CF 的内容_______。A.0 答案:B 13.下列四条指令中,错误的是______。A.SHL AL, CX 答案: A

14.串操作指令中,有 REP 前缀的串操作指令结束的条件是________。A.ZF=1 答案:D

15.对于下列程序段: AGAIN: MOV AL, [SI] MOV ES:[DI], AL INC INC SI DI B.ZF=0 C.CX>0 D.CX=0 B.XCHG AL, BL C.MOV BX, [SI] D.AND AX, BX B.1 C.不变 D.变反 B.DIV BL C.IN AX, 20H D.OUT 20H, AL LOOP AGAIN 也可用指令_______完成同样的功能。A.REP MOVSB 答案:A

16.JMP WORD PTR [DI] 是________指令。A.段内间接转移 答案:A 17.条件转移指令 JNE 的转移条件是_______。A.ZF=1 答案:C

18.下列指令中,影响标志位的指令是_____。

A.从存储器取数指令

答案:D

19.假设外部设备的状态字已经读入 AL 寄存器,其中最低位为 0,表示外部设备忙。为了判 断外部设备是否忙而又不破坏其它状态位,应选用下列哪一组指令? A.C.RCR JZ AND JZ 答案:D

20.假定一组相邻字节的首地址在 BX 中,末地址在 DI 中,为了使下面的程序段能用来查找 出其中第一个非零字节,并把它存放在 AL 中,在横线处应填入的指令是什么? SUB INC DI, BX DI AL, 01H Label AL, 01H Label D.B.CMP JZ TEST JZ AL, 00H Label AL, 01H

Label B.条件转移指令 C.压栈指令 D.循环移位指令 B.CF=0 C.ZF=0 D.CF=1 B.段内直接转移 C.段间间接转移 D.段间直接转移 B.REP LODSB C.REP STOSB D.REPE SCASB MOV NEXT: CMP LOOP MOV 答案:C CX, DI INC BX BYTE PTR [BX], 0 NEXT AL, BYTE PTR [BX] B.SUB BX, BX C.DEC BX D.INC BX _________ A.MOV SI, CX

二、填空题

1.指令 MOV [BX+SI], AL 中的目的操作数使用______段寄存器,属于______寻址方式。答案:数据段 基址加变址

2.8086 微机中,_______寄存器存放的是当前堆栈区的基地址。堆栈区的存取原则为_____,在 8086/8088 系统中,栈区最大容量为_____。若(CS)=2000H,(DS)=2500H,(SS)=3000H,(ES)=3500H,(SP)=0100H,(AX)=2FA6H,则这个栈区的物理地址的范围为________,CPU 执行 PUSH AX 指令后,栈顶地址为_____,该栈顶单元存放的内容为_______。

答案:SS 先进后出 64KB PUSH BX POPF 指令执行完毕后,(SF, ZF, CF, OF)=______。答案:7531H,1,1,0,0

4.假设(DS)=1000H,(ES)=0200H,(BP)=0100H,(DI)=0200H,(10200H)=11H,(10201H)=12H,执行指令 LEA DX, [BP][DI]后,(DX)=_______。

答案: 0300H 5.假定(DS)=4000H,(DI)=0100H,(40100H)=55H,(40101H)=AAH, 执行指令 LEA BX, [DI] 后,BX 中的内容是_______。

答案:0100H

6.如果 TABLE 为数据段 3400H 单元的符号名,其中存放的内容为 0505H,当执行指令 MOV AX, TABLE 后,(AX)=_______;而执行指令 LEA AX, TABLE 后,AX=______。答案:0505H,3400H 7.若(DS)=3000H,(SI)=2000H,(DI)=1000H,(AX)=2500H,(34000H)=00H,(34001H)=34H,(34002H)=00H,(34003H)=50H,变量 AREA 的值为 3000H,执行指令 LDS SI, AREA[DI]后,SI 的内容是_______,DS 的内容是_______。

答案:3400H,5000H 8.已知(AL)=2EH,(BL)=6CH,执行 ADD AL, BL 之后,(AL)=_____,(BL)=______,ZF=_____,AF=______,OF=_______,PF=_____,CF=______。答案:9AH 6CH 0,1,1,1,0

9.CPU 对两个无符号 8 位二进制数进行加法运算后,结果为 0EH,且标志位 CF=1,OF=1,SF=0,其结果应为十进制数______。

答案:270

10.8086CPU 执行 SUB AH, AL 后结果为(AH)=85H,OF=1,CF=1。若 AH、AL 中为带符号 30000H~300FFH 300FEH A6H 3.若(BX)=42DAH,则下列指令段数,则指令执行前_______寄存器中的数大。

答案:AH

11.若(AX)=7531H,(BX)=42DAH,则 CMP AX, BX 指令执行后,(AX)=_____,(SF, ZF, CF, OF)=_______。

答案:42DAH 1,0,0,0

12.设(AL)=1010 0000B,则执行 NEG AL 后,(AL)=________;设(AL)=1000 0000B,则执行 NEG AL 后,(AL)=________。

答案:60H 80H

13.假定(AX)=96H,(BX)=65H, 依次执行 ADD AX, BX 指令和 DAA 指令后,(AL)=___。答案:61H

14.执行下列指令序列后,(AH)=____,(AL)=_____,CF=____,AF=____。MOV AX, 0106H MOV BL, 08H SUB AL, BL AAS 答案:(AL)=08H,(AH)=0,CF=AF=1

15.设(AL)=98H,(BL)=12H,(AX)=_______(OF)=_______(CF)=_______ 而执行指令 IMUL BL 后,(AX)=_______(OF)=_______(CF)=_______ 答案:0AB0H 0F8B0H MUL AAM 答案:02H 17.CBW 指令是将_____的符号扩展到_____中,如果(AL)=0A4H,则执行 CBW 指令后,(AX)=______。

答案:AL XOR DEC MOV XCHG NEG AH 0FFA4H

18.执行下列程序段后,给出指定寄存器的内容。AX, AX AX BX, 6378H AX, BX BX BL 1 1 1.1 若执行指令 MUL BL 后,16.已知(AL)=6,(BL)=7, 执行下述指令后,(AL)=______ AX 和 BX 寄存器的内容为_______。答案:6378H 和 0001H

19.执行下列指令后: MOV MOV ROL DEC MOV MUL HLT AX, 1234H CL, 4 AX, CL AX CX, 4 CX 寄存器 AH 的值是______,AL 的值是 _____。

答案:8DH 00H

20.假设(DX)=10111001B,(CL)=03H,CF=1,执行 SHL DL, CL 后,(DX)=_____。答案:10111001000B

21.下列指令段执行完毕后,(SI)=_______,(DI)=______。STD MOV AX, 2500H MOV DS, AX MOV BX, 3500H MOV ES, AX MOV SI, 1500H MOV DI, 0400H MOV CX, 3 REP MOVSB 答案:14FDH 22.假设 ES 段中有一个字符串‟12FG3LM5C‟,其名为 ARRAY。下面的程序段执行后 CX的值是______。REPNE SCASB 24.已知(SS)=3000H,(SP)=0100H,执行下列程序后,(SP)=_______。

答案:5

23.假设(DS)=2000H,(BX)=1256H,(SI)=528FH,位移量 TABLE=20A1H,(232F7H)=80H,(232F8H)=32H,(264E5H)=50H,(264E6H)=24H: 执行指令 执行指令 执行指令

答案:1256H

3280H

2450H 24.答案:00FEH 25.已知(IP)=1000H,(SP)=2000H,(BX)=283FH, 指令 CALL WORD PTR [BX] 的机器代码是 FF17H, 试问执行该指令后,内存单元 1FFEH 中的内容是______。

答案:02H

三、问答题 1.设 DS=1000H,ES=3000H,SS=4000H,SI=00A0H,BX=0700H,BP=0070H,执行指令为 MOV AX, [BX+5]。(1)指令使用的是何种寻址方式?(2)源数据的逻辑地址和物理地址分别是多少?(3)若源数据为 1234H,则执行指令后上述各寄存器的内容是什么?

答案:基址寻址,基址寄存器是 BX,源操作数在数据段中,源操作数的逻辑地址是: EA=BX+5=0700H+5=0705H 源操作数的物理地址是:10705H 若源数据为 1234H,则执行指令后,AX 中的内容就为 1234H,其余寄存器的内容不变。

2.分别说明下列指令的源操作数和目的操作数各采用什么寻址方式,并写出指令中存储器操 作数的物理地址的计算公式。(1)MOV AX, 2408H(2)MOV BX, [SI](3)MOV [BP+100H],AX(4)MOV [BX+DI], '$'(5)MOV DX, ES:[BX+SI]

答案:(1)立即寻址,(AX)=2408H(2)寄存器寻址,物理地址:10H×(DS)+EA=10H×(DS)+(SI)(3)寄存器寻址,物理地址:10H×(SS)+(BP)+0100H(4)基址加变址寻址,物理地址:10H×(DS)+(BX)+(DI)(5)基址加变址,带有段超越前缀,物理地址:10H×(ES)+(BX)+(SI)3.写出能完成下述操作的指令。

(1)将立即数 1234H 送至 DS 寄存器。

(2)将存储单元 3000H 和内容送至 4000H 单元。

(3)将累加器 AX 与寄存器 CX 中的内容对调。

答案:(1)MOV AX, 1234H MOV DS, AX(2)MOV AX, [3000H] MOV [4000H], AX(3)XCHG AX, CX

4.编程:将数据段中以 BX 为偏移地址的连续 4 单元的内容颠倒过来。

答案: MOV AL, [BX] XCHG AL, [BX+3] MOV [BX], AL MOV AL,[BX+1] XCHG AL, [BX+2] MOV [BX+1], AL 5.已知(DS)=091DH,(SS)=(1E4AH),(AX)=1224H,(BX)=0024H,(CX)=5678H,(BP)=0024H,(SI)=0012H,(DI)=0032H,(09214H)=085BH,(09226H)=00F6H,(09228H)=1E40H,(1E4F6H)=091DH。试问下列指令或指令段执行后结果如何?(1)MOV CL, [BX+20H](2)MOV [BP][DI], CX(3)LEA BX, [BX+20H][SI] MOV AX, [BX+2](4)LDS SI, [BX][DI] MOV BX,[SI](5)XCHG CX, [BX+32H] XCHG [BX+20H][SI], AX 答案:(1)CL=5BH(2)(1E4F6H)=5678H(3)(AX)=1E40H(4)(BX)=091DH

(5)(AX)=5678H,(09226H)=1224H 6.十六进制 0~9,A~F 对应的 ASCII 码为 30H~39H,41H~46H,依次放在内存以 TABLE 开始的区域,将 AL 中某一位十六进制数×H 转换为对应的 ASCII 码,请编写程序段。

答案: LEA BX, TABLE MOV AL, ××H XLAT

7.将 AX 寄存器清零有 4 种方法,试写出这 4 条指令。

答案:MOV AX, 00H SUB AX, AX AND AX, 00H XOR AX, AX

8.使用一条逻辑运算指令实现下列要求:(1)使 AL 高 4 位不变,低 4 位为 0。(2)使 AL 最高位置 1,后 7 位不变。(3)使 AL 中的 bit3、bit4 变反,其余位不变。(4)测试判断 CL 中的 bit2、bit5、bit7 是否都为 1。

答案:(1)AND AL, 0F0H(2)OR AL, 80H(3)XOR AL 18H(4)TEST AL, 0A4H

9.试分析下面的程序段完成什么功能。

MOV CL, 4 SHL AX, CL SHL BL, CL MOV AL, BL SHR DH, CL OR AL, DH

答案:将 AX 中间 8 位,BX 的低 4 位,DX 的高 4 位组成一个新字存放在 AX 中。

10.若要将源串 100 个字节数据传送到目标串单元中去,设源串首址的偏移地址为 2500H,目标串首址的偏移地址为 1400H,请编写程序实现以下功能。(1)完成源串到目标串的搬移。(2)比较两串是否完全相同,若两串相同,则 BX 寄存器内容为 0;若两串不同,则 BX 指向 源串中第一个不相同字节的地址,且该字节的内容保留在 AL 的寄存器中。

答案:(1)CLD MOV CX, 100 MOV SI, 2500H MOV DI, 1400H REP MOVSB(2)CLD MOV CX, 100 MOV SI, 2500 MOV DI, 1400 REPE CMPSB JZ EQQ DEC SI MOV BX, SI MOV AL, [SI] JMP STOP EQQ: MOV BX, 0 STOP: HLT

11.下列指令段的功能是: 从内存 2000H:0A00H 开始的 2KB 内存单元清零。请在下列空格中 填入合适的指令,程序指令完成后 DI 的内容是多少。CLD MOV AX, 2000H _________ _________ XOR AL, AL _________ _________ HLT 答案:MOV ES,AX MOV DI, 0A00H XOR AL,AL MOV CX, 800H REP STOSB HLT

第四章习题答案

一、选择题

1.下列描述正确的是_______。

A.汇编语言源程序可直接运行 B.汇编语言属于低级语言 C.汇编程序是用汇编语言编写的程序,运行速度高,阅读方便,属于面向用户的程序语言。D.汇编语言可以移植

答案:B

2.分析下面的程序,变量 VAR2 的偏移地址是______。DATA SEGMENT ORG 2 VAR1 DB 2,3,4 ORG $+3 VAR2 DW 1234H DATA ENDS A.02H B.04H C.05H D.08H 答案:D

3.为了使 MOV AX, VAR 指令执行后,寄存器中的内容为 4142H,AX 下面哪一种数据定义会产 生不正确的结果?

A.VAR DW 4142H B.VAR DW 16706 C.VAR DB 42H, 41H D.VAR DW ‘AB’ 答案:C

4.下列伪指令中______是正确的。

A.ERR1:DW 99 B.ERR2 DB 25*60 C.COUNT EQU 20 D.ONE DB ONE 答案:C 5.执行下列指令后,寄存器 CL 的值是_______。STR1DW „AB‟ STR2DB 16 DUP(?)CNT EQU $-STR1 MOV CX, CNT MOV AX, STR1 HLT A.10H B.12H C.0EH D.0FH 答案:B

二、填空题

1.汇编语言的调试过程如下:建立以______为扩展名的源文件;生成以______为扩展名的目 标文件;生成以______为扩展名的可执行文件;使用 DEBUG 调试程序,调试可执行目标程 序。

答案:.asm.obj.exe 2.执行下列指令后,(AX)=______,(BL)=_______。A DW „EF‟ B DB „ABCDEF‟ MOV AX, A MOV BL, B[3] HLT 答案:4546H 44H 3.执行下面程序段后,AL 中的内容是______。BUF DW 1234H, 5678H, 0001H MOV BX, OFFSET BUF MOV AL, 2 XLAT 答案:78H

4.若符号定义语句如下,则 L=_______。BUF1 DB 1, 2, „12‟ BUF2 DB 0 L EQU BUF2-BUF1 答案:4

5.执行下列程序段后,BX 寄存器间址单元的内容是______。ORG 1FFFH DB 4FH, 50H, 51H MOV BX, 1FFFH INC [BX] INC BX DEC [BX] 答案:4FH

6.对于下面的数据定义,各条 MOV 指令单独执行后,请填充有关寄存器的内容: TABLE1 DB ? TABLE2 DW 20 DUP(?)TABLE3 DB „ABCD‟......MOV AX, TYPE TABLE1;(AX)=___ MOV BX, TYPETABLE2;(BX)=____ MOV CX, LENGTH TABLE2;(CX)=_____ MOV DX, SIZE TABLE2;(DX)=_____ MOV SI, LENGTH TABLE3;(SI)=_______ 答案:1 2 20 40 1

7.下面是多字节加法程序,第一个数是 8A0BH,第二个数是 D705H。请填写出正确结果。DATA SEGNEBT FIRST DB _____, _____, 0H SECOND DB _____,______ DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS: DATA START: MOV AX, DATA MOV DS, AX MOV CX, _____ MOV SI, 0 _________ NEXT: MOV AL, SECOND[SI] ADC FIRST[SI], AL INC SI LOOP NEXT MOV AL, 0 ADC AL, ______ MOV FIRST[SI], AL MOV AH, 4CH INT 21H CODE ENDS END START 答案:0BH 8AH 05H D7H 2 CLC 0

8.下面程序的功能是求有符号数中绝对值最小的数,并将最小绝对值存放在 DAT2 字节中,填空使程序正确实现此功能。程序执行后,DAT2 单元中的内容是______。DATA SEGMENT DAT1 DB 65H, 88H, 20H, 0F6H N EQU $-DAT1 DAT2 DB ? DATA ENDS CODE SEGMENT _________________ START: MOV AX, DATA __________ LEA SI, DAT1 MOV CX, N-1 MOV AL, [SI] TEST AL, 80H JZ LP0 NEG AL LP0: MOV DAT2, AL LP1: _________ MOV BL, [SI] TEST BL, 80H JZ LP2 NEG BL LP2: ________ JB LP3 MOV DAT2, BL MOV AL, BL LP3: ________ MOV AH, 4CH INT 21H CODE ENDS END START 答案: ASSUME DS:DATA, SS:STACK, CS:CODE MOV DS, AX INC SI CMP DAT2, BL LOOP LP1 DAT2 单元中的内容:0AH

9.填空说明在下列程序段执行过程中相应寄存器中的值。假设程序执行前 DS=3000H,SS=2000H,SP=3000H,AX=4567H,BX=1234H,CX=6789H。AND BX, 00FFH CALL MYSUB NOP;SP=________;AX=_______;BX=_______ PROC PUSH AX PUSH BX PUSH CX SUB AX, BX;SP=______ POP CX POP AX POP BX NOP;SP=______ RET MYSUB ENDP

答案:3000H 0034H 4567H 2FF8H 2FFEH 10.完善程序。BUFFER 单元开始放置一个数据块,BUFFER 单元存放预计数据块的长度为 20H,BUFFER+1 单元存放的是实际从键盘输入的字符串的长度,BUFFER+2 开始存放的是从键盘 从 接收的字符,请将这些从键盘接收的字符再在屏幕上显示出来。MOV DX, OFFSET BUFFER MOV AH, _______ INT 21H;读入字符串 LEA DX, ______ MOV AL, ______;实际读入的字符串的字符个数 MOV AH, 0 ADD BX, AX MOV AL, ____ MOV [BX+1], AL MOV AH, _____ INC DX;确定显示字符串的首址 INT 21H MOV AH, _____;系统返回 DOS INT 21H 答案:0AH BUFFER+1 [BX] '$'或 24H 9 4CH

三、问答题

1.变量和标号有哪些属性?它们的区别是什么?

答案:变量、标号还有常量是汇编语言中使用的操作数,是 3 种基本的数据项。变量和标号 都有段属性、偏移属性和类型属性 3 种属性,但含义不同。变量通常指存放在存储单元中的值,在程序的运行中是可以修改的。所有的变量都具有 3 个属性。(1)段属性:指变量所在段的段基址,此值必须在一个段寄存器中。(2)偏移属性:指变量所在地址与所在段的段首地址之间的地址偏移字节数。(3)类型属性:指变量中每个元素所包含的字节数。标号是可执行指令语句的地址的符号表示,它可作为转移指令和调用指令 CALL 的目标操作 HLT MYSUB 数,以确定程序转向的目标地址,它也具有 3 个属性:(1)段属性:指标号所在段的段基址。标号的段是它所出现的那个代码段,由 CS 指示。(2)偏移属性:指标号所在地址与所在段的段首地址之间的地址偏移字节数。(3)类型属性:标号的类型属性指在转移指令中标号可转移的距离,也称距离属性。NEAR 和 FAR 2.指出下列伪指令语句中的错误:(1)DATA DB 395(2)PRGM SEG …… PRGM ENDS(3)ALPHA EQU BETA(4)COUNT EQU 100 COUNT EQU 65(5)GOON DW 10DUP(?)…… JMP GOON

答案:(1)字节变量,范围在 0~255(2)定义段的伪指令为 SEGMENT(3)BETA 必须先定义(4)EQU 不能重复定义,在下一次定义前必须用 PURGE 撤消(5)转移指令必须转移到指令上,不允许转移到数据变量上。

3.一数据段如下: DATA SEGMENT PARA 'DATA' AT 46H QA EQU 255 QA1=QA GT 3000 QA2=0FFFH QA3 EQU QA2 XOR 255 QA4=88 MOD 5 QA5=88H SHR 2 QA6 EQU QA3/16+15 ORG 1060H G1 DB 32, QA, 98/2, NOT 25 G2 DW 0FF6H, OFFSET G2 G3 DW 3DUP(5)G4 DW SEG G1 SA EQU LENGTH G3 SB EQU SIZE G3 SC=TYPE G3 ORG 1200H F1 EQU THIS WORD F2 DB 11H, 22H, 33H, 44H FF DD 12345H DATA ENDS

(1)写出每个符号所对应的值(2)画出内存分配图(3)执行下列指令后,对应的寄存器的值为多少 MOV AX, WORE PTR FF AND AX, 0FFH MOV BX, WORD PTR G1 MOV BX, 255 AND 0FH ADD AX, OFFSET F2 MOV BX, F1

答案:(1)DATA SEGMENT PARA 'DATA' AT 46H QA EQU 255;QA=255 QA1=QA GT 3000;255 大于 3000,命题假,QA1=0 QA2=0FFFH;QA2=0FFFH QA3 EQU QA2 XOR 255;QA3=0FFFH⊕0FFH=0F00H QA4=88 MOD 5;QA4=3 QA5=88H SHR 2;QA5=22H QA6 EQU QA3/16+15;QA6=10FH ORG 1060H G1 DB 32, QA, 98/2, NOT 25 G2 DW 0FF6H, OFFSET G2 G3 DW 3DUP(5)G4 DW SEG G1 SA EQU LENGTH G3;SA=3 SB EQU SIZE G3;SB=3×2=6 SC=TYPE G3;SC=2 ORG 1200H F1 EQU THIS WORD;F1 的偏移地址为 1200H,类型为字 F2 DB 11H, 22H, 33H, 44H FF DD 12345H DATA ENDS(2)内存分配: DS:1060HG1 20H FFH 31H E6H DS:1064HG2 F6H 0FH 64H 10H DS:1068HG3 05H 00H 05H 00H 05H 00H DS:106EHG4 46H 00H …… …… DS:1200HF2 11H 22H 33H 44H DS:1204HFF 45H 23H 01H 00H(3)存储器的值: MOV AX, WORE PTR FF;AX=2345H AND AX, 0FFH;AX=0045H MOV BX, WORD PTR G1;BX=0FF20H MOV BX, 255 AND 0FH;BX=000FH ADD AX, OFFSET F2;AX=1245H MOV BX, F1;BX=2211H

4.以下程序的执行结果是_______。A DB „1234‟ B DW 5 DUP(2,3 DUP(0))C DW „AB‟,‟C‟,‟D‟ L1: MOV AL, TYPE B MOV BL, LENGTH B MOV AH, SIZE A MOV BH, SIZE C MOV CL, TYPEL1 MOV CH, SIZE B

答案:AX=0102H, BX=0205H CX=0AFFH

5.有下列数据段,写出数据段中 MAX、VAL1、VAL2、LEND 符号所对应的值。DATA SEGMENT MAX EQU 0FFFH VAL1 EQU MAX MOD 10H VAL2 EQU VAL1*2 BUFF DB 1,2,3,'123' EBUFF DB ? LEND EQU EBUFF-BUFF DATA ENDS 答案: MAX=0FFFH VAL1=000FH VAL2=001EH LEND 6 6.现有程序如下: DATA SEGMENT A DB 23 B DB 0F0H C DB 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS: DATA START: MOV AX, DATA MOV DS, AX MOV AL, A CMP AL, B JZ L JG M MOV C,-1 JMP EXIT L: MOV C, 0 JMP EXIT M: MOV C, 1 EXIT: MOV AH, 4CH INT 21H CODE ENDS END START 请回答:(1)该程序完成什么功能?(2)程序运行完后,C 中的内容是什么?

答案:判断两个有符号数,若 A=B,则 C=0;若 A>B,则 C=1;若 A

(1)程序执行后,RESULT 单元的内容为多少?

(2)程序完成的功能是什么?

(3)该程序所占的数据区为多少个字节?

DATA SEGMENT FEN DB 85,-90, 64,-120, 95, 77, 88, 120, 60, 83 COUNT EQU $-FEN RESULT DB ? DATA ENDS STACK SEGMENT PARA STACK DB 100 DUP(?)STACK ENDS CODE SEGMENT ASSUME CS:CODE, DATA:DATA, SS:STACK START: MOV AX,DATA MOV DS, AX MOV SI, OFFSET FEN MOV CX, COUNT DEC CX MOV AL, [SI] MOV RESULT ,AL TEST AL, 80H JZ LOP NEG AL LOP: INC SI MOV BL, [SI] TEST BL, 80H JZ NEXT NEG BL NEXT: CMP AL, BL JAE NEXT1 MOV AL, BL MOV BL, [SI] MOV RESULT , BL NEXT1: LOOP LOP CODE NOP MOV AH, 4CH INT 21H ENDS END START

答案:(1)-120(2)将绝对值最大的数放入 RESULT 单元中

(3)11 字节

9.定理:从 1 开始的连续 n 个奇数之和等于 n2,如 1+3+5=32=9。设:在数据区有字节变量 N(0≤N≤255)。试按此定理编写程序求 N2 并将结果存放于字变量 RESULT 中。答案: STACK SEGMENT PARA STACK DW 100 DUP(?)STACK ENDS DATA SEGMENT N DB 5 RESULT DW ? DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS:DATA, SS:STACK START: MOV AX, DATA MOV DS, AX MOV AH, 0 MOV AL, N MOV CX, AX MOV BX, 0 MOV DX, 1 LOOP1: ADD BX, DX ADD DX, 2 LOOP LOOP1 MOV RESULT, BX MOV AH, 4CH INT 21H CODE ENDS END START 第六章习题

一、选择题

1.I/O 单独编址方式下,从端口读入数据可使用_____。

A.MOV B.OUT C.IN D.XCHG 答案:C 2.可用作简单输入接口电路的是______。

A.译码器 B.锁存器 C.方向器 D.三态缓冲器

答案:D

3.CPU 与 I/O 设备之间传送的信号有______。

A.控制信息 B.状态信息 C.数据信息 D.以上三种都有

答案:D 4.从硬件角度而言,采用硬件最少的数据传送方式是______。

A.DMA 控制 B.无条件传送 C.查询传送 D.中断传送

答案:B 5.从输入设备向内存输入数据时,若数据不需经过 CPU,其 I/O 数据传送方式是____。

A.程序查询方式 B.中断方式 C.DMA 方式 D.直接传送方式

答案:C

6.主机与外设信息传送的方式分别为查询方式、中断方式、DMA 方式。相比之下,中断方 式的主要优点是_______。

A.接口电路简单、经济,只需少量的硬件 B.数据传输的速度最快 C.CPU 的时间利用率高 D.能实时响应 I/O 设备的设备的输入输出请求

答案:D

7.在微机系统中,为了提高 CPU 系统数据总线的驱动能力,可采用_____。

A.译码器 B.多路转换器 C.双向三态缓冲器 D.采样保持器

答案:C

8.执行“IN AL, DX”指令后,进入 AL 寄存器的数据来自_____。

A.立即数 B.存储器 C.寄存器 D.外设端口

答案:D

二、问答题

1.CPU 与外设进行数据传送时,为什么需要 I/O 接口电路?I/O 接口电路的功能有哪些? 答案:CPU 与外部设备进行信息交换,是在控制信号的作用下通过数据总线来完成的。外部 设备的种类不同,对信息传送的要求也不同,这就给计算机和外设之间的信息交换带来以下 一些问题:(1)速度不匹配:CPU 速度高,外设的速度低。不同的外设速度差异大,如硬盘速度高,每秒能传送兆位数量级,串行打印机每秒钟只能打印百位字符,而键盘的速度则更慢。(2)信号不匹配:CPU 的信号为数字信号,数据采集输入的是模拟信号,需要对外部信号 进行模/数转换,才能被计算机处理;同样,计算机输出的是数字信号,需要输出模拟信号 时,必须要通过数/模转换。(3)信号格式不匹配:计算机接收和处理的是并行数据,而有些外部设备的信号为串行数 据,这就需要使用接口电路进行串行数据和并行数据转换。(4)另外为了提高 CPU 的传输效率,需要利用接口电路对外设进行控制。作为连接 CPU 和外设的接口电路,它具有以下功能:(1)数据的寄存和缓冲功能 为了解决 CPU 和外部设备速度不匹配的问题,接口电路内部设置有数据寄存器或具有 RAM 功能的数据缓冲区,使之成为 CPU 和外设进行数据交换的中转站。无论输入还是输出数据,传输的数据首先进入缓冲区,输入数据时等待 CPU 发出接收指令,输出数据时等待外设发 出的输出信号。(2)信号转换功能为了解决 CPU 和外设之间信号电平不一致的问题,可以通过设置电平转换接口电路来解决,如采用 MAX232 等芯片实现电平转换。为了解决 CPU 和外设之间串并行数据不匹配的问题,CPU 输出数据时,设置并变串接口电 路;CPU 输入数据时,设置串变并接口电路。为了解决外设模拟量传输的问题,设置模/数转换(A/D)电路或数/模转换(D/A)电路。(3)端口选择功能 CPU 通过接口电路对外部设备进行控制,具体和哪一个外设进行数据交换,首先要选通相应 的接口电路,而这一过程是通过地址选通来实现的,即接口电路有其独有的地址空间。不同 的接口电路占用的地址是不同的,占有的地址个数也是不同的。有的占有两个地址,有的占 有 4 个地址等,以对应不同的外设。一般来说,接口电路的片选信号由高位地址信号来产生,接口电路内部的选择由低位地址来决定。CPU 的地址信号是一组单向的信号线,它们总是由 CPU 发出,因此 CPU 发出不同的地址信号就选择了相应的接口电路,也就选通了相应的外 部设备。(4)接收和执行 CPU 的指令 CPU 的地址信号发出后,被选通的接口电路,根据 CPU 的读、写等指令输入输出数据信号 或输出控制信号。(5)中断管理功能 为了提高 CPU 的效率,使得外设工作时,不影响 CPU 的执行,需要利用中断控制芯片来连 接多个外设。只有当外设需要 CPU 进行处理,才会通过中断控制器,给 CPU 发送中断请求 信号,CPU 接到该信号后,在满足相应中断允许的条件下,停止执行当前程序,转而去执行 中断服务程序,即处理外设事物。在这里接口电路就是中断控制器,用来管理这些需要 CPU 中断的外部设备。

2.计算机对 I/O 接口电路的编址有哪些方法?8086/8088 CPU 采用哪种编址方法?

答案:当接口电路的地址和存储单元的地址相同时,称为独立编址,也称 I/O 映射方式;当 接口电路的地址和存储单元的地址不同时,称为统一编址,也称存储器映射方式。独立编址

3.CPU 与外设间进行数据传送有哪几种方式?简述各种方式的工作原理。

答案:无条件传送方式是最简单的传送方式,该方式应用于始终处于准备好状态的外设,即 CPU 输入或输出数据时不需要查询外设的工作状态,任何时候都可以输入输出。查询传送方式在传送数据前,CPU 需要查询当前外设的状态,当查询到当前外设准备好,即 处于空闲状态时,CPU 就可以通过数据线和外设进行输入输出的操作; 当查询到外设当前的 状态为忙时,则等待,并继续查询,直到外设准备好,再传送数据。

4.假设一接口电路的地址信号为 A0,片选端为,占用两个地址,分别是 20H 和 21H,试 利用 74LS138 译码器设计译码电路,并画出硬件电路设计图。片选地址 片内地址 接口电路地址 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 0 0 0 1 0 0 0 0 0 20H 1 21H 5.若要求 74LS138 输出的译码地址为 0200H~0207H,0208H~020FH,……,0238H~023FH 等 8 组,可用于选通 8 个 I/O 芯片,试画出 74LS138 与 8086 最小系统连接图。片外地址 内部地址 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 第1片 1 第2片 1 第3片 1 第4片 1 第5片 1 第6片 1 第7片 1 第8片 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 200H 207H 0 208H 20FH 0 210H 217H 0 218H 21FH 0 220H 227H 0 228H 22FH 0 230H 237H 0 238H 23FH

第七章习题

一、选择题

1.在程序控制传送方式中,_______可提高系统的工作效率。A.无条件传送 B.查询传送 C.中断传送 D.以上均可

答案:C

2.在 8086 的中断中,只有______需要硬件提供中断类型码。

A.外部中断 B.可屏蔽中断 C.不可屏蔽中断 D.内部中断

答案:B

3.在中断响应周期,CPU 从数据总线上获取______。

A.中断向量的偏移地址 B.中断向量 C.中断向量的段地址 D.中断类型码

答案:D

4.执行 INT n 指令或响应中断时,CPU 保护现场的次序是______。

A.FLAGS 寄存器(FR)先入栈,其次是 CS,最后是 IP B.CS 在先,其次是 IP,最后 FR 入栈

C.FR 在先,其后一次是 IP,CS D.IP 在先,其次是 CS,最后 FR 答案:A

5.在 PC/XT 中,NMI 中断的中断向量在中断向量表中的位置_______。

A.是由程序指定的 B.是由 DOS 自动分配的 C.固定在 0008H 开始的 4 个字节中 D.固定在中断向量表的表首 答案:C 6.中断调用时,功能调用号码应该_______。

A.写在中断指令中 B.在执行中断指令前赋给 AH C.在执行中断指令前赋给 AX D.在执行中断指令前赋给 DL 答案:B 7.若 8259A 的 ICW2 设置为 28H,从 IR3 引入的中断请求的中断类型码是_____。A.28H B.2BH C.2CH D.2DH 答案:B

8.8259A 有 3 中 EOI 方式,其目的都是为了_____。

A.发出中断结束命令,使相应的 ISR=1 B.发出中断结束命令,使相应的 ISR=0 C.发出中断结束命令,使相应的 IMR=1 D.发出中断结束命令,使相应的 IMR=0 答案:B

9.8259A 特殊全嵌套方式要解决的主要问题是______。

A.屏蔽所有中断 B.设置最低优先级 C.开发低级中断 D.响应同级中断

答案:D

10.8259A 编程时,中断屏蔽可通过______设置。A.ICW1 B.OCW1 C.OCW2 D.OCW3 答案:B

二、填空题

1.8086/8088 的中断系统,可以处理______种不同的中断。从产生中断的方法来分,中断可 分为两大类: 一类叫_____中断; 一类叫______中断。硬件中断又可分为两大类: 一类叫______ 中断;另一类叫______中断。

答案:256 外部、内部 不可屏蔽中断 可屏蔽中断

2.8086 系统中断响应时,会将,和 压入堆栈,并将 和 TF 清零。

答案:FR CS IP

3.类型码为______的中断所对应的中断向量放在 0000H:0084H 开始的 4 个存储单元中,若这 4 个存储单元中从低地址到高地址存放的数依次是___________,则相应的中断服务程序的 入口地址是 3322H:1150H。

答案:21H 50H 11H 22H 33H

4.已知 CS 的内容为 2000H,IP 的内容为 3000H,则 CPU 下一条要执行指令的物理地址是 ________;当紧接着执行中断指令 INT 15H 时,其中断类型码为______,该指令对应的中断 向量在中断向量表中的首地址为__________,假定该中断对应的中断向量是 4000H:2300H,则执行该中断后 CPU 执行中断服务程序的首地址是______,此时 CS 中为_____,IP 中为 _______。

答案:23000H, 15H 54H 43200H 4000H 2300H 5.8259A 有两种中断触发方式:______和______。

答案:边沿触发方式 电平触发方式

6.若有 40 个外部中断申请信号,则至少需要______片 8259A 中断控制器。

答案:6

7.8259A 内部含有_____个可编程寄存器,共占用_____个端口地址。8259A 的中断请求寄存 器 IRR 用于存放_______,中断服务寄存器 ISR 用于存放_______。

答案:7 2 外部的中断请求信号 系统响应中断信号的状态

8.8259A 的初始化命令字包括_________,其中________和_______是必须设置的。

答案:ICW1~ICW4 ICW1 ICW2 9.中断服务程序的返回指令为。答案:IRET

10.执行溢出中断的两个条件是 和。

答案:OF=1, INTO

11.8086/8088 系统共能管理 个中断,中断向量表在内存中的地址从 到。

答案:256 00000H~0003FFH

12.已 知 SP=0100H, SS=0600H, 标 志 寄 存 器 Flags=0204H, 存 储 单 元 [0024H]=60H, [0025H]=00H, [0026H]=00H, [0027H]=10H,在段地址为 0800H 及偏移地址为 00A0H 开始的单元 中,有一条指令 INT 9H(INT 9H 为 2 字节指令)则执行该指令后。SS= , SP= , IP= , CS= ,Flags=。Flags: OF DF IF TF SF ZF AF PF CF 答案:(SS)=0600H(SP)=00FAH(IP)=0060H(CS)=1000H(FR)=0004H

三、问答题

1.如何“屏蔽”可屏蔽中断?叙述 CPU 响应可屏蔽中断的过程。

答案: 由 CPU 的 INTR 引脚上的中断请求信号引起的中断称为可屏蔽中断。这种中断可以被 CLI 指 令屏蔽。当中断接口电路中的中断屏蔽触发器未被屏蔽时,外设可通过中断接口发出中断申请。外设 向 CPU 发出中断请求的时间是随机的,而 CPU 响应可屏蔽中断需满足如下条件:(1)CPU 必须处于开中断状态,即 TF=1 状态;(2)系统中无总线请求;(3)系统中无不可屏蔽中断请求;(4)CPU 执行完现行命令。

2.设某中断的中断类型号为 12H,中断服务程序的段地址为 2020H,偏移地址为 3000H,试编写程序段将中断向量装入中断向量表中。

答案: XOR AX, AX MOV ES, AX MOV DI, 12*4;DI 中为 n 号中断对应的中断向量表的偏移地址 MOV AX, 3000H CLD STOSW;装入中断服务程序偏移地址 MOV AX, 2020H STOSW;装入中断服务程序偏移地址

3.8259A 具有两种中断屏蔽方式,普通屏蔽和特殊屏蔽方式。这两种屏蔽方式有什么特殊之 处,特殊屏蔽方式一般用在什么场合?

答案:(1)普通屏蔽方式:在普通屏蔽方式中,将 IMR 某位置 1,则它对应的中断就被屏蔽,从 而使这个中断请求不能从 8259A 送到 CPU。如果 IMR 位置 0,则允许该级中断产生。(2)特殊屏蔽方式:在有些特殊情况下,希望一个中断服务程序能够动态地改变系统优先 权结构,就引入了特殊屏蔽方式。编程时 IMR 某位置位,就会同时使 ISR 的对应位复位。这 样就不只屏蔽了当前正在处理的这级中断,而且真正开放了其他级别较低的中断。当然,未 屏蔽的较高级中断也可得到响应。特殊屏蔽中断一般用在中断服务程序执行过程中,不仅用于响应优先级高于当前中断的中断 请求优先级,而且还能够应用于响应优先级低于当前中断的中断申请优先级的场合。

4.试简述 8259A 中断控制器是如何在特殊全嵌套方式 SNFM 下实现全嵌套的?

答案: 特殊全嵌套方式和普通全嵌套方式的区别在于: 在特殊全嵌套方式下,当处理某一级中断时,如果有同级的中断请求 8259A 也会给予响应,从而实现一个中断过程能被另一个具有同等 级的中断请求所打断。特殊全嵌套方式一般用在 8259A 的级联系统中。在这种情况下只有主片的 8259A 允许编程 为特殊全嵌套方式。这样,当来自某一从片的中断请求正在处理时,主片除对来自优先级较 高的本片上其他 IR 引脚上的中断请求进行开放外,同时对来自同一从片的较高优先级请求 也会开放。使主片不封锁得到响应的从片的 INT 输入,以便让从片上优先级别更高的中断能 够得到响应。

5.请编写初始化程序。系统有一片 8259A,中断请求信号用电平触发方式,要用 ICW4,中断 类型码为 60H~67H,用特殊全嵌套方式,无缓冲,采用自动中断结束方式。设 8259A 的地 址为 92H,93H。

答案: MOV AL, 0001101B OUT 92H, AL MOV AL, 01100000B OUT 93H, AL MOV AL, 00010011B OUT 93H, AL 6.若 8086 系统采用单片 8259A 作为外部可屏蔽中断的优先级管理器,正常全嵌套方式,边 沿触发,非缓冲连接,非自动中断结束,端口地址为 20H,21H。其中某中断源的中断类型 码为 0AH,其中断服务子程序的入口地址是 2000:3A40H。

(1)请为 8259A 设置正确的初始化命令字,并编写初始化程序。

(2)中断源应与 IR 的哪一个输入端相连?中断向量地址是多少,中断向量区对应着 4 个单 元的内容是什么?

答案: MOV AL, 13H OUT 20H, AL MOV AL, 08H OUT 21H, AL MOV AL, 01H OUT 21H, AL 中断源应与 IRQ2 相连,矢量地址为 0028AH,地址中内容(由高向低):20H,00H,3AH,40H

7.8086 微机系统中,如图例 7 所示硬件连接,8259A 的主片采用特殊全嵌套,从片采用 一般全嵌套,主片和从片都是非自动中断结束,中断源都为边沿触发信号有效,主片的中断 类型码为 80H~87H,从片的中断类型码为 50H~57H。1. 写出主片 8259A 和从片 8259A 的地址; 2. 写出主片 8259A 的控制字,并完成初始化编程; 3. 写出从片 8259A 的控制字,并完成初始化编程; 图例 7 1.主片地址:F0H F1H 从片地址:C0H C1H 2.主片: ICW1 ICW2 ICW3 ICW4

从片: ICW1 ICW2 ICW3 ICW4 11H 80H 80H 11H 11H 50H 03H 01H

3.主片初始化 MOV AL, 11H OUT 0F0H,AL MOV AL, 80H OUT 0F1H,AL MOV AL, 80H OUT 0F1H, AL MOV AL, 11H OUT 0F1H, AL

从片初始化: MOV AL, 11H OUT 0C0H,AL MOV AL, 50H OUT 0C1H,AL MOV AL, 03H OUT 0C1H, AL MOV AL, 01H OUT 0C1H, AL

第七章习题

一、选择题

1.在程序控制传送方式中,_______可提高系统的工作效率。

A.无条件传送 B.查询传送 C.中断传送 D.以上均可

答案:C

2.在 8086 的中断中,只有______需要硬件提供中断类型码。

A.外部中断 B.可屏蔽中断 C.不可屏蔽中断 D.内部中断

答案:B

3.在中断响应周期,CPU 从数据总线上获取______。

A.中断向量的偏移地址 B.中断向量 C.中断向量的段地址 D.中断类型码

答案:D

4.执行 INT n 指令或响应中断时,CPU 保护现场的次序是______。

A.FLAGS 寄存器(FR)先入栈,其次是 CS,最后是 IP B.CS 在先,其次是 IP,最后 FR 入栈 C.FR 在先,其后一次是 IP,CS D.IP 在先,其次是 CS,最后 FR 答案:A

5.在 PC/XT 中,NMI 中断的中断向量在中断向量表中的位置_______。

A.是由程序指定的 B.是由 DOS 自动分配的 C.固定在 0008H 开始的 4 个字节中 D.固定在中断向量表的表首

答案:C 6.中断调用时,功能调用号码应该_______。

A.写在中断指令中 B.在执行中断指令前赋给 AH C.在执行中断指令前赋给 AX D.在执行中断指令前赋给 DL 答案:B

7.若 8259A 的 ICW2 设置为 28H,从 IR3 引入的中断请求的中断类型码是_____。A.28H B.2BH C.2CH D.2DH 答案:B

8.8259A 有 3 中 EOI 方式,其目的都是为了_____。

A.发出中断结束命令,使相应的 ISR=1 B.发出中断结束命令,使相应的 ISR=0 C.发出中断结束命令,使相应的 IMR=1 D.发出中断结束命令,使相应的 IMR=0 答案:B

9.8259A 特殊全嵌套方式要解决的主要问题是______。A.屏蔽所有中断 B.设置最低优先级 C.开发低级中断 D.响应同级中断

答案:D

10.8259A 编程时,中断屏蔽可通过______设置。A.ICW1 B.OCW1 C.OCW2 D.OCW3 答案:B

二、填空题

1.8086/8088 的中断系统,可以处理______种不同的中断。从产生中断的方法来分,中断 可分为两大类:一类叫_____中断;一类叫______中断。硬件中断又可分为两大类:一类 叫______中断;另一类叫______中断。

答案:256 外部、内部 不可屏蔽中断 可屏蔽中断

2.8086 系统中断响应时,会将,和 压入堆栈,并将 和 TF 清零。

答案:FR CS IP

3.类型码为______的中断所对应的中断向量放在 0000H:0084H 开始的 4 个存储单元中,若这 4 个存储单元中从低地址到高地址存放的数依次是___________,则相应的中断服务 程序的入口地址是 3322H:1150H。

答案:21H 50H 11H 22H 33H

4.已知 CS 的内容为 2000H,IP 的内容为 3000H,则 CPU 下一条要执行指令的物理地址 是________;当紧接着执行中断指令 INT 15H 时,其中断类型码为______,该指令对应 的中断向量在中断向量表中的首地址为__________,假定该中断对应的中断向量是 4000H:2300H,则执行该中断后 CPU 执行中断服务程序的首地址是______,此时 CS 中 为_____,IP 中为_______。

答案:23000H, 15H 54H 43200H 4000H 2300H 5.8259A 有两种中断触发方式:______和______。

答案:边沿触发方式 电平触发方式

6.若有 40 个外部中断申请信号,则至少需要______片 8259A 中断控制器。

答案:6

7.8259A 内部含有_____个可编程寄存器,共占用_____个端口地址。8259A 的中断请求 寄存器 IRR 用于存放_______,中断服务寄存器 ISR 用于存放_______。

答案:7 2 外部的中断请求信号 系统响应中断信号的状态

8.8259A 的初始化命令字包括_________,其中________和_______是必须设置的。

答案:ICW1~ICW4 ICW1 ICW2 9.中断服务程序的返回指令为。

答案:IRET 10.执行溢出中断的两个条件是 和。

答案:OF=1, INTO

11.8086/8088 系统共能管理 个中断,中断向量表在内存中的地址从 到。

答案:256 00000H~0003FFH

12.已知 SP=0100H, SS=0600H, 标志寄存器 Flags=0204H, 存储单元 [0024H]=60H, [0025H]=00H, [0026H]=00H, [0027H]=10H,在段地址为 0800H 及偏移地址为 00A0H 开始的单元中,有一条指令 INT 9H(INT 9H 为 2 字节指令)。则执行该指令后,SS= , SP= , IP= , CS= ,Flags=。Flags: OF DF IF TF SF ZF AF PF CF 答案:(SS)=0600H(SP)=00FAH(IP)=0060H(CS)=1000H(FR)=0004H

三、问答题

1.如何“屏蔽”可屏蔽中断?叙述 CPU 响应可屏蔽中断的过程。

答案: 由 CPU 的 INTR 引脚上的中断请求信号引起的中断称为可屏蔽中断。这种中断可以被 CLI 指令屏蔽。当中断接口电路中的中断屏蔽触发器未被屏蔽时,外设可通过中断接口发出中断申请。外设向 CPU 发出中断请求的时间是随机的,而 CPU 响应可屏蔽中断需满足如下条件:(1)CPU 必须处于开中断状态,即 TF=1 状态;(2)系统中无总线请求;(3)系统中无不可屏蔽中断请求;(4)CPU 执行完现行命令。

2.设某中断的中断类型号为 12H,中断服务程序的段地址为 2020H,偏移地址为 3000H,试编写程序段将中断向量装入中断向量表中。

答案: XOR AX, AX MOV ES, AX MOV DI, 12*4;DI 中为 n 号中断对应的中断向量表的偏移地址 MOV AX, 3000H CLD STOSW;装入中断服务程序偏移地址 MOV AX, 2020H STOSW;装入中断服务程序偏移地址

3.8259A 具有两种中断屏蔽方式,普通屏蔽和特殊屏蔽方式。这两种屏蔽方式有什么特 殊之处,特殊屏蔽方式一般用在什么场合?

答案:(1)普通屏蔽方式:在普通屏蔽方式中,将 IMR 某位置 1,则它对应的中断就被屏蔽,从而使这个中断请求不能从 8259A 送到 CPU。如果 IMR 位置 0,则允许该级中断产生。(2)特殊屏蔽方式:在有些特殊情况下,希望一个中断服务程序能够动态地改变系统优 先权结构,就引入了特殊屏蔽方式。编程时 IMR 某位置位,就会同时使 ISR 的对应位复 位。这样就不只屏蔽了当前正在处理的这级中断,而且真正开放了其他级别较低的中断。当然,未屏蔽的较高级中断也可得到响应。特殊屏蔽中断一般用在中断服务程序执行过程中,不仅用于响应优先级高于当前中断的 中断请求优先级,而且还能够应用于响应优先级低于当前中断的中断申请优先级的场合。

4.试简述 8259A 中断控制器是如何在特殊全嵌套方式 SNFM 下实现全嵌套的?

答案: 特殊全嵌套方式和普通全嵌套方式的区别在于:在特殊全嵌套方式下,当处理某一级中 断时,如果有同级的中断请求 8259A 也会给予响应,从而实现一个中断过程能被另一个 具有同等级的中断请求所打断。特殊全嵌套方式一般用在 8259A 的级联系统中。在这种情况下只有主片的 8259A 允许编 程为 特殊全嵌套方式。这样,当来自某一从片的中断请求正在处理时,主片除对来自优 先级较高的本片上其他 IR 引脚上的中断请求进行开放外,同时对来自同一从片的较高优 先级请求也会开放。使主片不封锁得到响应的从片的 INT 输入,以便让从片上优先级别 更高的中断能够得到响应。

5.请编写初始化程序。系统有一片 8259A,中断请求信号用电平触发方式,要用 ICW4,中断类型码为 60H~67H,用特殊全嵌套方式,无缓冲,采用自动中断结束方式。设 8259A 的地址为 92H,93H。

答案: MOV AL, 0001101B OUT 92H, AL MOV AL, 01100000B OUT 93H, AL MOV AL, 00010011B OUT 93H, AL 6.若 8086 系统采用单片 8259A 作为外部可屏蔽中断的优先级管理器,正常全嵌套方式,边沿触发,非缓冲连接,非自动中断结束,端口地址为 20H,21H。其中某中断源的中 断类型码为 0AH,其中断服务子程序的入口地址是 2000:3A40H。(1)请为 8259A 设置正确的初始化命令字,并编写初始化程序。

(2)中断源应与 IR 的哪一个输入端相连?中断向量地址是多少,中断向量区对应着 4 个单元的内容是什么?

答案: MOV AL, 13H OUT 20H, AL MOV AL, 08H OUT 21H, AL MOV AL, 01H OUT 21H, AL 中断源应与 IRQ2 相连,矢量地址为 0028AH,地址中内容(由高向低):20H,00H,3AH,40H

7.8086 微机系统中,如图例 7 所示硬件连接,8259A 的主片采用特殊全嵌套,从片采 用一般全嵌套,主片和从片都是非自动中断结束,中断源都为边沿触发信号有效,主片 的中断类型码为 80H~87H,从片的中断类型码为 50H~57H。

1. 写出主片 8259A 和从片 8259A 的地址;

2. 写出主片 8259A 的控制字,并完成初始化编程;

3. 写出从片 8259A 的控制字,并完成初始化编程;

8086 D7~D0IO /M A7A5A4A3A2A1A0INTA A6INTR G1 A B C 1 74LS138 CS A0D7~D0INT IR0IR1IR2IR3IR4IR5IR6IR7EN SP/ +5V INTA CAS0CAS2~ 8259A 8259AG2AG2B7Y6Y5Y4YCAS0CAS2~ IR0IR1IR2IR3IR4IR5IR6IR7EN SP/ CS A0D7~D0INT INTA 图例 7 1.主片地址:F0H F1H 从片地址:C0H C1H 2.主片: ICW1 11H ICW2 80H ICW3 80H ICW4 11H 从片: ICW1 11H ICW2 50H ICW3 03H ICW4 01H 3.主片初始化 MOV AL, 11H OUT 0F0H,AL MOV AL, 80H OUT 0F1H,AL MOV AL, 80H OUT 0F1H, AL MOV AL, 11H OUT 0F1H, AL 从片初始化: MOV AL, 11H OUT 0C0H,AL MOV AL, 50H OUT 0C1H,AL MOV AL, 03H OUT 0C1H, AL MOV AL, 01H OUT 0C1H, AL 第八章习题

一、选择题

1.可编程计数/定时器 8253 的工作方式共有______,共有_____个 I/O 口。

A.3 种,4 B.4 种,5 C.6 种,3 D.6 种,4 答案:C

2.若 8253 的通道计数频率为 1MHz,每个通道的最大定时时间为______。

A.10ms B.97.92ms C.48.64ms D.65.536ms 答案:D

3.当可编程计数/定时器 8253 工作在方式 0,在初始化编程时,一旦写入控制字后,_________。

A.输出信号端 OUT 变为高电平B.输出信号端 OUT 变为低电平C.输出信号保持原来的电位值 D.立即开始计数

答案:B 4.定时/计数器 8253 无论工作在哪种方式下,在初始化编程时,写入控制字后,输出端 OUT 便______。

A.变为高电平B.变为低电平C.变为相应的高电平或低电平D.保持原状态不变,直至计数结束

答案:C 5.8253 工作在方式 1 时,输出负脉冲的宽度等于______。

A.1 个 CLK 脉冲宽度 B.2 个 CLK 脉冲宽度 C.N 个 CLK 脉冲宽度 D.N/2 个 CLK 脉冲宽度

答案:C

6.将 8253 定时/计数器的通道 0 设置为方式 3,产生频率为 10KHz 的方波。当输入脉冲 频率为 2MHz 时,计数初值为______。A.200 B.300 C.400 D.500 答案:A

二、填空题

1.8253 的计数器通道有______个,端口地址有_______个。答案:3,4 2.8253 的最高计数频率为。

答案:2MHz

3.8253 的数据引脚有_______位,内部有_______位的计数器初值寄存器。答案:8 位 16 位

4.若 8253 的输入时钟 CLK1=1MHz,计数初值为 500,BCD 码计数方式,OUT1 输出为 方波,则初始化时该通道的控制字应为______。

答案:77H

5.如果 8253 通道 0 工作在方式 0,初值为 8H,当减法计数至 5H 时,GATE 信号变为低,则 当 GATE 信号从新为高时,从 又开始计数。

答案:原来计数中断的位置

6.8253 端口地址为 40H~43H,通道 0 作为计数器,计数时钟频率为 1MHz。下面程序段 执行后,输出脉冲的宽度是______。MOV AL, 36H OUT 43H, AL MOV AX, 20000 OUT 40H, AL MOV AL, AH OUT 40H, AL 答案:10ms

三、问答题

1.每个计数器和外设的连接引脚各是什么?简述其功能。

答案:计数器与外部相连的信号端有 3 个:CLK、GATE 和 OUT。CLK 是计数器 的时钟脉冲输入端,最高频率为 2MHz;GATE 是计数器的控制信号,决定是否允许计 数;OUT 是计数器的输出信号,不同的工作方式有不同的输出信号。

2.某系统利用 8253 芯片进行定时计数,输入的时钟脉冲为 1MHz,定时时间为 10s,问需要几个计数器通道完成定时,每个计数器通道的计数初值为多少?

答案: 10×106=1000 0000 需要两个计数通道,计数初值分别为 1000 和 10000

3.8253 的 4 个端口地址为 208H、209H、20AH、20BH,采用计数器 0 定时,输入时钟 信号为外部事件,当外部事件记满 100 时,由计数器 0 输出中断请求信号,要求完成对 计数器 0 的初始化编程,并设计端口地址的译码硬件电路。

答案: 控制字 00010000H 片选地址 片内地址 接口电路地址 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 10000010 0 0 208H 0 1 209H 1 0 20AH 1 1 20BH MOV DX, 20BH MOV AL, 10H OUT DX, AL MOV AL,100 MOV DX, 208H OUT DX, AL & ≥1 CS A9A3A8A7A6A5A4M/IO RD WR IOR IOW D7~D0 至 DB A1A0A1A0GATE0+5V CLK0OUT0 外部事件计数 申请中断

4.如题图 8.1 所示硬件电路,试写出 8253 的 4 个端口地址,并写出计数器 1 的初始化 程序。M/IO A9A8A7A6A5A4A3A2A1A0RDWR D7D08086 CPU G1 G2A Y3G2B C B A CS A1A0RD WR D7D0CLK1GATE1OUT18253 1MHz 方波 +5V 2KHz 方波 74LS138 & ≥ ≥ 题图 8.1 硬件电路连接

答案:地址: 片选地址 片内地址 接口电路地址 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 11000011 0 0 30CH 0 1 30DH 1 0 30EH 1 1 30FH 计数值: 1M/2K=500 控制字:01 10 011 1 方式 3,十进制,只写高位 MOV DX, 30FH MOV AL, 67H OUT DX, AL MOV AL, 05H MOV DX, 30DH OUT DX, AL 5.已知电路原理图如题图 8.2 所示。编写初始化程序,使在 OUT0 端输出图示波形。题图 8.2 答案: 初值:1000 控制字:35H MOV AL, 35H MOV DX, 203H OUT DX, AL MOV AX, 1000H MOV DX, 200H OUT DX, AL MOV AL, AH OUT DX, AL

第九章习题

一、选择题

1.对 8255A 的 C 口执行按位置位/复位操作时,写入的端口地址是______。

A.端口 A B.端口 B C.端口 C D.控制口

答案:D 2.要将 8255A 的 3 个 8 位的 I/O 端口全部设定为方式 0 的输入,其设置的方式控制字为____。

A.98H B.9BH C.9AH D.99H 答案:D 3.当 8255A 的 A 口工作在方式 1,B 口工作在方式 1 时,C 口仍然可按基本的输入输出方式 工作的端口线有_________条。A.0 B.2 C.3 D.5 答案:B

4.当 8255A 端口 PA、PB 分别工作在方式

2、方式 1 时,其 PC 端口引脚为_______。A.2 位 I/O B.2 个 4 位 I/O C.全部用作应答联络线 D.1 个 8 位 I/O 答案:C

5.如果 8255A 的端口 A 工作在双向方式,这时还有_____根 I/O 线可作其他用。A.11 B.12 C.10 D.13 答案:A

6.当 8255A 的 PC4~PC7 全部为输出线时,表明 8255A 的 A 端口工作方式是______。A.方式 0 B.方式 1 C.方式 2 D.任何方式

答案:A

7.8255A 中既可以作为数据输入、输出端口,又可以提供控制信息、状态信息的端口是____。A.端口 A B.端口 B C.端口 C D.控制口

答案:C

8.8255A 的端口 A 和端口 B 工作在方式 1 输出时,与外部设备的联络信号将使用____信号。A.INTR B.C.INTE D.IBF 答案:B

二、填空题

1.当 8255A 的 A 口工作于方式 1 输入,B 口工作于方式 0 时,C 口的_____位可以作为输入 输出口使用。答案:5 位

2.若要求 8255A 的 A、B 口工作在方式 1,作为输入,C 口作为输出,则输入 8255A 控制口 的控制字为______。

答案:B6H

3.若 8255A 的端口 B 工作在方式 1,并为输出口,置位 PC2 的作用为______。

答案:允许端口 B 输出中断

4.当数据从 8255A 的端口 C 往数据总线上读出时,8255 的几个控制信号、A1、A0、、分 别是__________________。

答案:0 1 0 0 1 5.8255A 在方式 0 工作时,端口 A、B 和 C 的输入输出可以有_______种组合。

答案:16

三、问答题 1.并行接口芯片 8255A 和外设之间有几个数据端口?在结构上有什么区别?

答案:3 个数据端口 这 3 个端口与外设的数据接口都是 8 位,但功能不完全相同。A 口有 3 种工作方式,B 口有 2 种工作方式,口有 1 种工作方式。口可以分两部分使用,C C 常用来配合 A 口和 B 口工作,C 口的高四位 PC7 ~ PC4 常用来配合 A 口工作,口的低四位 PC3 ~ PC0 常用来配合 B 口工作。C 各端口在结构上有所不同: 端口 A 包含 1 个 8 位的数据输入锁存器,1 个 8 位的数据输出锁存器; 端口 B 包含 1 个 8 位的数据输入缓冲器,1 个 8 位的数据输出锁存器; 端口 C 包含 1 个 8 位的数据输入缓冲器,1 个 8 位的数据输出锁存器。

2.8255A 的地址信号线是什么?共占用几个端口地址?

答案: 地址信号端 A1、A0,有 4 种组合: A1A0=00,选中端口 A 的寄存器; A1A0=01,选中端口 B 的寄存器; A1A0=10,选中端口 C 的寄存器; A1A0=11,选中控制字寄存器。

3.A 口工作于方式 0,输入,B 口工作于方式 1,输出,C 口的 PC1 作为输出联络口,PC2 作 为输入联络口,8255A 占用的 4 个端口地址为 80H ~ 83H,编写初始化程序,画出端口地址 的译码电路。

答案: 控制字:1 001 0 1 00 94H MOV AL, 94H OUT 83H, AL 4.8255A 的 A 口和 B 口都工作于方式 0,PC6 作为输入联络口,PC2 作为输出联络口。当检 测到 PC6 为“1”时,A 口输出数据 46H,并且 PC2 输出“1”。设 8255A 的 4 个端口地址为 108H ~ 10EH,试编写以上操作程序段。

答案: 控制字:1 00 0 1 00 0 88H A 口方式 0 输出 C 口高 4 位输入 PC2 输出 1 0 000 010 1 05H MOV DX, 10EH MOV AL, 88H OUT DX, AL;控制字 DEC DX NEXT: IN AL , DX TEST AL, 40H;测试 PC6 JZ NEXT;为 0,继续查询 MOV DX, 108H MOV AL, 46H OUT DX, AL;A 口输出 MOV AL, 05H MOV DX, 10EH OUT DX, AL ;PC2 输出

5.如题图 9.1 所示电路,当 A 口连接的开关闭合时,相应的 B 口连接的发光二极管亮。(1)(2)写出 8255A 的 4 个端口地址; 编写程序完成以上操作。题图 9.1 硬件电路连接

答案:地址:208H~20BH 控制字:1 00 1 0 0 00 A 口发生 0 输入 B 口方式 0 输出

MOV DX , 20BH MOV AL, 90H OUT DX, AL MOV DX, 108H IN AL, DX;读 A 口 INC DX OUT DX, AL;写 B 口

6. 如题图 9.2 所示电路,口工作于方式 1 输出,B 作为 CPU 和打印机之间的并行接口电路。设 8255A 的端口地址为 90H ~ 93H,编写程序完成将 RUF 开始的 1000 个字节的数据打印。题图 9.2 B 口方式 1 输出

答案: 控制字 1 000 0 1 0 0 84H B 口方式 1 输出 允许 B 口中断,可以查询中断指示状态:PC2 置 1,0 000 010 1 MOV AL, 84H OUT 93H, AL;写控制字 MOV AL, 05H OUT 93H, AL;写中断允许 LEA SI , RUF MOV CX, 1000 L1: MOV AL, [SI];将数据传送至 AL OUT 91H, AL;从 A 口输出数据,使 变为低电平L2: IN AL, 92H;从 C 口读取状态字;打印机取走数据后,变为低电平,并将 变为高电平AND AL, 01H;判断 B 口是否提出中断申请 JZ L2;如果没有,继续检测状态字 INC SI;DEC CX JNZ L1 HLT

第三篇:微机原理与接口技术习题答案10章

第10章 定时/计数器8253应用设计

1.试分析 8255A方式0、方式1和方式2的主要区别,并分别说明它们适合于什么应用场合。

答:方式0是基本的输入/输出,端口A、B、C都可以作为输入输出端口。适用于CPU与非智能I/O设备的数据传输;

方式1是有联络信号的输入/输出,端口A、B都可以设定成该方式,此时三个端口的信号线分成了A、B两组,PC7~PC4用作A组的联络信号,PC3~PC0用作B组的联络信号。适用于高速CPU与低速I/O设备的数据传输;

方式2是双向传输,只有A组端口可以设定成该方式,PC6~PC7用作输出的联络信号,PC4~PC5用作输入的联络信号,PC3用作中断请求信号。适用于双机之间数据的并行传送。

2.8255A的A组设置成方式1输入,与CPU之间采用中断方式联络,则产生中断请求信号INTRA的条件是 STBA=

,IBFA=

,INTEA=。

3.如果8255A的端口地址为300H~303H,A组和B组均为方式0,端口A为输出,端口B为输入,PC3~PC0为输入,PC7~PC4为输出,写出8255A的初始化程序段;编程实现将从端口C低4位读入的值从高4位送出。解: MOV DX,303H

MOV AL,10000011B OUT DX,AL MOV DX,302H IN AL,DX MOV CL,4 SHL AL,CL OUT DX,AL 4.在实际应用中经常需要检测设备的状态,并进行指示。在8086最小方式系统下,有一片8255A,其分配的端口地址为8F00H~8F07H中的奇地址,外部设备产生的状态有16个(K15~K0),要求采用4个发光二极管来指示开关量中“1”的个数。(1)画出8255A - 0 - 的连接图;(2)编写程序段实现连续检测并显示。解:(1)

8086D8~D158255D0~D7RDRDWRA2A1M/IOBHEA15A11A10A9A8A0A14A13A12A7A6A5A4A3PA0PA1......WRA1PA716位开关量(K15~K0)A0PB0PB1PB7......VCCCSPC3PC2PC1PC0

(2)MOV DX,8F07H

MOV AL,10010010B;端口A、B方式0输入,端口C方式0输出 OUT DX,AL NEXT:

L2:

MOV DX,8F03H;从端口B读取高8位开关量 IN AL,DX XCHG AL,AH MOV DX,8F01H;从端口A读取低8位开关量 IN AL,DX MOV BX,AX XOR AL,AL MOV CX,16 CLC SHL BX,1

- 1 -

L1:

JNC L1 INC AL LOOP L2 MOV DX,8F05H;从端口C送出 OUT DX,AL JMP NEXT;进行下一次检测

5.利用IBM PC系统机的总线槽,开发由一片8255A构成的子系统,8255A端口地址为260H~263H,编程实现产生如图10.20所示的8个信号(各个信号的节拍不必严格相等)。

Y0Y1Y7„

图10.20 要求产生的信号波形

解:8355A与IBM PC机总线的连接框图如下:

可将8255A的端口A作为要产生的信号的输出端口,设定为方式0输出,端口B和端口C不做使用,均设定为方式0输出。程序段如下:

MOV

DX,263H

;设定8255A的工作方式

- 2 -

MOV

AL,10000000B

OUT

DX,AL

MOV

DX,260H

;产生指定信号

XOR

AL,AL

OUT

DX,AL REP:

MOV

AL,80H

MOV

CX,7 REP1:

OUT

DX,AL

SAR

AL,1

LOOP REP1

MOV

CX,8 REP2:

SHL

AL,1

OUT

DX,AL

LOOP REP2

JMP

REP

6.在实际应用中,经常会遇到要求输入多个数据量,这时需要用到多路开关,如图10.21表示八选一的逻辑框图及其真值表。现有8组16位开关量数据(无符号数),要求通过一片8255A(端口地址为260H~263H)分时输入到CPU(8088最小方式系统)中,并找出它们中的最大值,并通过4个发光二极管指示其序号(灯亮表示“1”)。画出8255A的连接图,并编程实现。

解:由于开关量是16为数据,故可以将8255A的PA端与PB端设定为方式0,分别读取开关量的低八位和高八位,以PC低三位端口的控制八选一电路的输出依次从X0到X7,- 3 -

八选一x0x1x2x3x4x5x6x7ys0s1s2s2s1s00 0 00 0 10 1 00 1 11 0 01 0 11 1 01 1 1yx0x1x2x3x4x5x6x7图10.21 八选一逻辑电路使用PC端口的高八位输出最大开关量的序号(该序号为1~8),控制发光二极管的亮灭以码指示序号。连接图如下:

程序段如下:

MOV DX,263H

MOV AL,10011010B;设定工作方式,PA,PB均工作于方式0,PA、PB为输入,PC为输出

OUT

DX,AL

MOV

CX,8

XOR

BX,BX

MOV

SI,0

;SI表示输入开关量的序号 ST1:

MOV

DX,262H

OUT

DX,SI

MOV

DX,260H

;将开关量数据的低八位写入AL

IN

AL,DX

MOV

DX,261H

;将开关量数据的高八位写入AH

IN

AH,DX

- 4 -

CMP

BX,AX

JA

NEXT

MOV

BX,AX

;将当前最大值保存在BX中

INC

SI

PUSH

SI

;将当前最大值的序号压栈 NEXT:

INC

SI

LOOP

ST1

POP

SI

XOR

AX,AX

MOV

AX,SI

MOV

CL,4

ROL

AL,CL

MOV

DX,262H

OUT

DX,AL

;最大值的序号出栈

;将最大值的序号(4位)移至AL的高四位 的高四位输出最大值序号 - 5 -

;PC

第四篇:微机原理与接口技术习题答案2

第2章 8086 CPU结构与功能

1.微处理器内部结构由哪几部分组成?阐述各部分的主要功能。解:微处理器内部结构由四部分组成:

(1)算术逻辑运算单元ALU:完成所有的运算操作;

(2)工作寄存器:暂存寻址信息和计算过程中的中间结果;

(3)控制器:完成指令的读入、寄存和译码,并产生控制信号序列使ALU完成指定操作;

(4)I/O控制逻辑:处理I/O操作。

2.微处理器级总线有哪几类?各类总线有什么作用? 解:微处理器级总线有三类:

(1)数据总线:传送信息;

(2)地址总线:传送地址码;

(3)控制总线 传送控制信号。

3.为什么地址总线是单向的,而数据总线是双向的?

解:地址码只能由CPU生成。而数据需要在CPU和存储器之间传输。4.8086/8088微处理器内部有哪些寄存器?其主要作用是什么?

解:8086CPU内部有14个16位寄存器,其中8个通用寄存器(4数据寄存器AX、BX、CX、DX,4地址指针/变址寄存器SI、DI、SP、BP),4个段寄存器(CS、DS、ES、SS),2个控制寄存器(指令指针IP,微处理器状态字PSW)。

应该注意的是:可以在指令中用作为地址指针的寄存器有:SI、DI、BP和BX;在微处理器状态字PSW中,一共设定了9个标志位,其中6个标志位用于反映ALU前一次操作的结果状态(CF,PF,AF,ZF,SF,OF),另3个标志位用于控制CPU操作(DF,IF,TF)。

5.如果某微处理器有20条地址总线和16条数据总线:

(1)假定存储器地址空间与I/O地址空间是分开的,则存储器地址空间有多大?

(2)数据总线上传送的有符号整数的范围有多大? 解:(1)存储器地址空间为:2201MB

1(2)有符号数范围为: 2~21,即 -32768~32767 6.将十六进制数62A0H与下列各数相加,求出其结果及标志位CF、AF、SF、ZF、OF

15和PF的值:

(1)

1234H;(2)

4321H;(3)

CFA0H;(4)

9D60H 解:(1)

74D4H

CF=0 AF=0 SF=0 ZF=0 OF=0 PF=1

(2)

A5C1H CF=0 AF=0 SF=1 ZF=0 OF=1 PF=0

(3)

3240H

CF=1 AF=0 SF=0 ZF=0 OF=0 PF=0

(4)

0000H

CF=1 AF=0 SF=0 ZF=1 OF=0 PF=1 7.从下列各数中减去4AE0H,求出其结果及标志位CF、AF、SF、ZF、OF和PF的值:

(1)1234H;(2)5D90H;(3)9090H;(4)EA04H 解:(1)

C754H

CF=1 AF=0 SF=1 ZF=0 OF=0 PF=0(2)

12B0H

CF=0 AF=0 SF=0 ZF=0 OF=0 PF=0(3)

45B0H

CF=0 AF=0 SF=0 ZF=0 OF=1 PF=0

(4)

9F24H

CF=0 AF=0 SF=1 ZF=0 OF=0 PF=1 9.写出下列存储器地址的段地址、偏移地址和物理地址:(1)2134:10A0;(2)1FA0:0A1F;(3)267A:B876 解:物理地址=段地址*10H+偏移地址

(1)段地址:2134H,偏移地址:10A0H,物理地址:223E0H(2)段地址:1FA0H,偏移地址:0A1FH,物理地址:2041FH(3)段地址:267AH,偏移地址:B876H,物理地址:32016H 10.给定一个数据的有效地址为2359H,并且(DS)=490BH,求该数据的物理地址。解:物理地址=段地址*10H+偏移地址

物理地址=490BH +2359H = 4B409H 11.如果在一个程序段开始执行之前,(CS)=0A7F0H,(IP)=2B40H,求该程序段的第一个字的物理地址。

解:物理地址=段地址*10H+偏移地址

物理地址=CS*10H+IP = AAA40H 12.IBM PC有哪些寄存器可用来指示存储器的地址? 解:变址寄存器SI,DI,堆栈指针SP,BP,另外还有BX。

第五篇:微机原理与接口技术习题答案4

第4章 汇编语言程序设计

1.已知在BUF的起始处保存有N个字符的ASCII码,编写汇编语言程序实现,将这组字符串传送到缓冲区BUFR中,并且使字符串的顺序与原来的顺序相反。解:BUF

BUFR

MOV CX, N LEA SI, BUF LEA DI, BUFR ADD DI,CX DEC DI L1: MOV AL,[SI] MOV [DI],AL INC SI DEC DI LOOP L1

2.利用移位、传送和相加指令实现AX的内容扩大10倍。

解:将扩大后的结果放在DX:AX中,注意到10×AX=8×AX+2×AX。XOR SHL RCL DX,DX AX, 1 DX, 1 DB “BONJOUR_BELLE” DB 100 DUP(?)MOV BX,AX MOV SHL RCL SHL RCL CX,DX AX, 1 DX, 1 AX, 1 DX, 1 ADD ADC AX, BX DX, CX 3.在缓冲区VAR中连续存放着3个16位的无符号数,编写程序实现将其按递增关系排列;如果VAR中保存的为有符号数,则再编写程序实现将其按递减关系排列。解:VAR DW 1236,-432,3900 XOR SI,SI MOV AX,VAR[SI] CMP AX, VAR[SI+2] JAE L1 XCHG AX, VAR[SI+2] L1:

CMP AX, VAR[SI+4] JAE L2 XCHG AX, VAR[SI+4] L2: MOV VAR[SI], AX MOV AX,VAR[SI+2] CMP AX, VAR[SI+4] JAE L3 XCHG AX, VAR[SI+4] L3:

MOV VAR[SI+2], AX 4.编写程序段实现将AL和BL中的每一位依次交叉,得到的16位字保存在DX中,例如(AL)=01100101B,(BL)=11011010B,则得到的(DX)=10110110 10011001B。解:利用移位指令完成。

L1: SHR AL,1 RCR DX,1 XOR DX,DX MOV CX,8

SHR BL,1 RCR DX,1 LOOP L1 5.在变量VAR1和VAR2中分别保存有两个字节型的正整数,编写完整的汇编语言程序实现:

(1)当两数中有一个奇数时,将奇数存入VAR1,偶数存入VAR2;

(2)当两数均为奇数时,两个变量的内容不变;(3)当两数均为偶数时,两数缩小一倍后存入原处。

解:当VAR1为奇数时,不论VAR2的奇偶性,这两个单元的内容均不变;只有当VAR1为偶数时,如果VAR2为奇数,则VAR1与VAR2内容交换;如果VAR2为偶数,则两数缩小一倍后存入原处。DATA SEGMENT

VAR1

DB 28

VAR2 DB 36 DATA ENDS CODE SEGMENT

ASSUME CS:CODE, DS:DATA, ES:DATA START: MOV AX, DATA MOV DS,AX MOV ES, AX MOV AL,VAR1 MOV BL,VAR2 TEST AL,1 JZ EVEN1 JMP OVER

EVEN1:

TEST BL,1

JZ

EVEN2

MOV VAR1,BL MOV JMP VAR2,AL OVER EVEN2:

SHR MOV SHR MOV AL,1 VAR1,AL BL,1 VAR2,BL

OVER:

MOV AH,4CH MOV AL,0 INT ENDS END START 21H CODE

6.已知在字变量VAR1、VAR2和VAR3中保存有3个相同的代码,但有一个错码,编写程序段找出这个错码,并将它送到AX,其地址送SI;如果3个代码都相同,则在AX中置-1标志。解:在数据段中定义:

VAR1 DW 5A34H VAR2 DW 5A35H VAR3 DW 3A34H

在代码段中编写程序段:

MOV AX,-1 MOV BX,VAR1 CMP BX,VAR2 JZ

L2 CMP BX,VAR3 JZ

L1 MOV AX,BX LEA SI,VAR1 JMP OVER L1: MOV AX,VAR2 LEA SI,VAR2 JMP OVER L2: CMP BX,VAR3 JZ

OVER MOV AX,VAR3 LEA SI,VAR3 OVER: 7.分析下列程序段的功能:

MOV CL,04 SHL DX,CL MOV BL,AH SHL AX,CL SHR BL,CL OR DL,BL 解:程序段完成DX:AX组成的32位无符号数左移4位,低位补零(也即除以16)。8.下列程序段执行后,求BX寄存器的内容:

MOV CL,3 MOV BX,0B7H ROL BX,1 ROR BX,CL 解:实际上完成BX内容循环右移2位,因此,BX寄存器的内容为C02DH。9.下列程序段执行后,求BX寄存器的内容:

MOV CL,5 MOV BX,7D5CH SHR BX,CL 解:完成BX内容逻辑右移5位,因此,BX寄存器的内容为03EAH。10.将BUFFERS中N个字按相反顺序传递到BUFFERT中。解:

LEA SI,BUFFERS LEA DI,BUFFERT MOV CX,N ADD DI,N ADD DI,N SUB DI,2 L1: MOV AX,[SI] MOV [DI],AX ADD SI,2 SUB DI,2 LOOP L1 11.数组ARRAY中存放有一组字型数据,前两个字节存放数据长度(5的倍数)。为给这个数组中的数据进行加密保护,每5个数据取出一个数据进行加密处理:奇数位进行取反,偶数位不变,例如对数据0110 1100 1011 0001B加密后变成1100 0110 0001 1011B,编写加密程序encrpytion 和解密程序 unencrpytion。

解:约定从第一个数据开始,每5个数据为一组,每组中的第一个数据采取加密/解密处理。由于加密算法采用的是取反操作,解密算法也采用取反操作,因此解密和解密算法是同一个程序。

ENCRPYTION PROC NEAR LEA SI,ARRAY

XOR DX,DX

MOV AX,[SI]

MOV BX,5

DIV BX

MOV CX, AX

ADD SI, 2 L1:

MOV AX, [SI]

XOR AX,0AAAAH

MOV [SI], AX

ADD SI,10

LOOP L1

RET ENCRPYTION ENDP

13.设BUF中存放有N个无符号数(或有符号数),编程实现求它们的最小值(存入AX)和最大值(存入DX)。

解:BUF存放有N个无符号数的程序如下: MOV CX,N-1 LEA SI,BUF MOV AX,[SI] MOV DX,AX ADD SI,2 L1: CMP AX,[SI] JBE NOCHG1 XCHG AX,[SI] NOCHG1: CMP DX,[SI] JAE NOCHG2 XCHG DX,[SI] NOCHG2: ADD SI,2 LOOP L1 如果BUF中存放的是有符号数,则只需要将程序中的两行内容修改:

JBE NOCHG1 JAE NOCHG2

改成:JLE NOCHG1 改成:JGE NOCHG2

14.设BUFFER中存放有N个无符号(第1个字节存放缓冲区的长度),编程实现将其中的0元素抹去,并更新其长度。

解:设BUFFER中存放的是字节型数据。采用双指针方法:SI为读指针,DI为写指针,从低地址开始,内存中读出一个字节,如果不为0,则写入内存;如果为0,则不进行写操作。

LEA SI, BUFFER XOR CX,CX MOV CL, [SI] INC SI MOV DI, SI XOR BH,BH XOR AL,AL L1: CMP [SI],AL JZ L2 MOV BL,[SI] MOV [DI],BL INC DI INC BH L2: INC SI LOOP L1 MOV BUFFER,BH 16.编写一个子程序实现统计AL中1的个数,然后检测出字节型缓冲区BUF中0和1个数相等的元素个数。

解:统计AL中1的个数,只需将AL右移,移出的一位内容进行累加,子程序为: COUNTBYTE PROC NEAR

PUSH AX

PUSH CX

MOV CX,8

XOR BL,BL COU1:

SHR AL,1

ADC BL,0

LOOP COU1

POP CX

POP AX

RET COUNTBYTE ENDP 在此基础上,可以检测出字节型缓冲区BUF中0和1个数相等的元素个数,即一个字节中有4个1。设BUF中有N个字节型数据,结果保持在BH中。

MOV CX,N LEA SI, BUF XOR BH,BH L1: MOV AL,[SI] CALL COUNTBYTE CMP BL,4 JNZ L2 INC BH L2: INC SI LOOP L1

19.在缓冲区BUFFER中,第1个字节存放数组的长度(<256),从第2个字节开始存放字符的ASCII码,编写子程序完成在最高位给字符加上偶校验。解:STACK SEGMENT STACK 'STACK'

DW 100H DUP(?)

TOP LABEL BYTE STACK ENDS

DATA SEGMENT BUFFER DB 3

DB 'ABC'

DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START:

MOV AX,STACK

MOV SS,AX

LEA SP,TOP

MOV AX,DATA

MOV DS,AX

MOV ES,AX

LEA DI,BUFFER

XOR CX,CX

MOV CL,[DI]

INC DI

CALL SETEVEN

MOV AH,4CH

MOV AL,0

INT 21H SETEVEN

PROC NEAR

PUSH AX

PUSH BX

PUSH CX

PUSH DI SETEVEN1:

MOV AL,[DI]

CALL COUNTBYTE

;加偶校验子程序

;返回DOS;首字节为字符串长度;字符串

AND BL,01H

JZ SETEVEN2

OR AL,80H

MOV [DI],AL SETEVEN2:

INC DI

LOOP SETEVEN1

POP DI

POP CX

POP BX

POP AX

RET SETEVEN

ENDP COUNTBYTE PROC NEAR

PUSH AX

PUSH CX

MOV CX,8

XOR BL,BL COU1:

SHR AL,1

ADC BL,0

LOOP COU1

POP CX

POP AX

RET COUNTBYTE ENDP CODE ENDS

END START 20.编写程序完成求多位数(N个字)的绝对值。21.已知斐波那契数列的定义为:F1数列前n项的子程序。

1,F21,FiFi1Fi2(i3),编写求该解:设奖斐波那契数列存放在字变量RESULT中。在数据段中定义

RESULT DW 100H DUP(?)

在代码段中编写子程序 FIBONACCI PROC NEAR

XOR DI,DI

MOV RESULT[DI],1

;前两个数为1

MOV RESULT[DI+2],1

ADD DI,4

MOV CX,N L1:

MOV AX, RESULT[DI-4]

ADD AX, RESULT[DI-2]

MOV RESULT[DI],AX

ADD DI,2

LOOP L1

RET FIBONACCI ENDP

22.编写程序实现循环显示10条信息,保存每条信息的变量分别为INFOM1~INFORM10。解:在数据段中定义变量:

TABLE DW INFORM1, INFORM2, INFORM3, INFORM4, INFORM5

DW INFORM6, INFORM7, INFORM8, INFORM9, INFORM10 在代码段中编写程序段:

MOV XOR MOV MOV CX,10 SI,SI DX,TABLE[SI] AH,9 L1:

INT ADD CALL LOOP 21H SI,2 WAIT L1 这里,WAIT为延时子程序,用于在显示信息之间的停顿。

23.编写程序实现将包含20个数据的数组ARRAY分成两个数组:正数数组ARRAYP和负数数组ARRAYN,并分别将这两个数组中数据的个数显示出来。

解:先编写一个子程序DISPALD,完成以3位十进制数形式显示出AL的内容。

DISPALD PROC NEAR PUSH AX PUSH CX PUSH DX XOR AH,AH MOV CL,100 DIV CL PUSH AX MOV DL,30H ADD DL,AL MOV AH,2 INT 21H POP AX MOV AL,AH XOR AH,AH MOV CL,10 DIV CL PUSH AX MOV DL,30H ADD DL,AL MOV AH,2 INT 21H POP AX MOV DL,30H ADD DL,AH MOV AH,2 INT 21H POP DX POP CX POP AX RET DISPALD ENDP

在此基础上,根据题目要求,需要用到3个指针:SI指向源数组ARRAY,DI指向正数数组ARRAYP,BX指向负数数组ARRAYN。

MOV XOR LEA LEA LEA MOV AND JS MOV INC INC JMP MOV INC INC INC CX,20 DX,DX SI,ARRAY DI,ARRAYP BX,ARRAYN AL,[SI] AL,AL L2 [DI],AL DI DL L3 [BX],AL BX DH SI L1:

L2:

L3:

LOOP MOV CALL MOV CALL L1 AL,DL DISPALD AL,DH DISPALD 24.编写程序实现求缓冲区BUFFER的100个字中的最小偶数(存入AX)。解:设BUFFER中存放的是有符号数。

L1:

L2: MOV CX,100 LEA SI,BUFFER MOV AX, 7FFFH AND WORD PTR [SI],1 JNZ L2 CMP [SI],AX JGE L2 MOV AX,[SI] ADD SI,2 LOOP L1

225.编写程序实现求级数1解:BL用于存放项数。

22n2的前n项和刚大于2000的项数n。

STACK SEGMENT STACK 'STACK'

DW 100H DUP(?)TOP LABEL WORD STACK ENDS DATA SEGMENT

DB 100H DUP(?)DATA ENDS CODE SEGMENT

ASSUME CS:CODE, DS:DATA, ES:DATA, SS:STACK START:

MOV AX,DATA

MOV DS,AX

MOV ES,AX

MOV AX,STACK

MOV SS,AX

LEA SP,TOP

MOV BL,1

MOV CX,0 COUNT:

MOV AL, BL

MUL BL

ADD CX,AX

CMP CX,2000

JA EXIT

INC BL

JMP COUNT EXIT:

26.定义一条宏指令,实现将指定数据段的段地址传送到段寄存器ES或DS的功能。解:

27.定义一条宏指令,实现从键盘中输入一个字符串(利用INT 21H的09号功能)。28.定义一条宏指令,实现在屏幕上输出回车、换行。29.利用其它指令完成与下列指令一样的功能:

(1)REP MOVSB;

(3)REP STOSB;

解:设DF=0(1)

L1: MOV AL,[SI]

MOV ES:[DI],AL INC INC SI DI

(2)REP LODSB;(4)REP SCASB。

LOOP L1(2)

L1: MOV AL,[SI] INC SI LOOP L1(3)

L1: MOV ES:[DI],AL

INC DI LOOP L1(4)

L1: MOV AL,[SI]

CMP AL,ES:[DI] INC INC SI DI LOOP L1 30.设在数据段中定义了:

STR1 DB ‘ASSEMBLE LANGUAGE’ STR2 DB 20 DUP(?)利用字符串指令编写程序段实现:

(1)从左到右将STR1中的字符串传送到STR2;(2)从右到左将STR1中的字符串传送到STR2;(3)将STR1中的第6个和第7个字节装入DX;

(4)扫描STR1字符串中有无空格,如有则将第一个空格符的地址传送到SI。解: STR1中有17个字符(含一个空格),设DS和ES均指向STR1和STR2所在的段。(1)

CLD MOV LEA LEA REP MOV LEA LEA CX,17 SI,STR1 DI,STR2 MOVSB CX,17 SI,STR1 DI,STR2(2)

ADD DEC MOV MOV DEC INC LOOP LEA MOV MOV LEA MOV CMP JZ INC LOOP SI,CX SI AL,[SI] [DI],AL SI DI L1 SI,STR1 DX,[SI+6] CX,17 SI,STR1 AL,20H [SI], AL L2 SI L1 L1:

(3)

(4)

L1:

L2:

31.设在数据段中定义了:

STRING DB ‘Today is Sunday & July 16, 2000’

编写程序实现将STRING中的’&’用’/’代替。解:STRING中保存了30个字符。

MOV LEA MOV CMP JNZ MOV INC LOOP CX,30 SI,STRING AL,’&’ [SI],AL L2 BYTE PTR [SI],’/’ SI L1 L1:

L2:

32.分析下列程序段完成的功能:

MOV CX,100 LEA SI,FIRST LEA DI,SECOND REP MOVSB 解:将缓冲区FIRST中100个字节传送到SECOND中。33.分析下列程序段:

LEA DI,STRING MOV CX,200 CLD MOV AL,20H REPZ SCASB JNZ FOUND JMP NOT_FOUND 问:转移到FOUND的条件。

解:在缓冲区STRING中搜索非空格字符,如果有非空格则转到FOUND,如果200个单元中都是空格,则转到NOT_FOUND。

34.设在数据段的变量OLDS和NEWS中保存有5个字节的字符串,如果OLDS字符串不同于NEWS字符串,则执行NEW_LESS,否则顺序执行程序。解:设DS和ES均指向字符串OLDS和NEWS所在的段。CLD MOV

35.编程实现将STRING字符串中的小写字母变换成大写字母。解:设STRING中的字符个数为N。

LEA LEA REPZ JNZ CX,5 SI,OLDS DI,NEWS CMPSB NEW_LESS

MOV LEA MOV AND INC CX,N SI,STRING AL,5FH [SI],AL SI L1:

LOOP L1 36.设在数据段中定义了:

STUDENT_NAME DB 30 DUP(?)STUDENT_ADDR DB 9 DUP(?)STUDENT_PRINT DB 50 DUP(?)编写程序实现:

用空格符清除缓冲区STUDENT_PRINT; 在STUDENT_ADDR中查找第一个’_’字符; 在STUDENT_ADDR中查找最后一个’_’字符;

如果STUDENT_NAME中全为空格符,则STUDENT_PRINT全存入’*’;

将STUDENT_NAME传送到STUDENT_PRINT的前30个字节中,将STUDENT_ADDR传送到STUDENT_PRINT的后9个字节中。

37.(上机题)编写程序实现,将缓冲区BUFFER中的100个字按递增排序,并按下列格式顺序显示:

数据1 <原序号> 数据2 <原序号> „„

38.(上机题)按同余法产生一组随机数N(1

Total <总人数> A:

<人数1> B:

<人数2> C:

<人数3> D:

<人数4> E:

<人数5> F:

<人数6>

39.(上机题)编写程序实现下列5项功能,通过从键盘输入1~5进行菜单式选择:

(1)按数字键“1”,完成将字符串中的小写字母变换成大写字母。用户输入由英文大小写字母或数字0~9组成的字符串(以回车结束),变换后按下列格式在屏幕上显示:

<原字符串>例如:abcdgyt0092 <新字符串>

ABCDGYT0092 按任一键重做;按Esc键返回主菜单。

(2)按数字键“2”,完成在字符串中找最大值。用户输入由英文大小写字母或数字

0~9组成的字符串(以回车结束),找出最大值后按下列格式在屏幕上显示:

<原字符串>

The maximum is <最大值>.

按任一键重做;按Esc键返回主菜单。

(3)按数字键“3”,完成输入数据组的排序。用户输入一组十进制数值(小于255),然后变换成十六进制数,并按递增方式进行排序,按下列格式在屏幕上显示:

<原数值串>

<新数值串> 按任一键重做;按Esc键返回主菜单。

(4)按数字键“4”,完成时间的显示。首先提示用户对时,即改变系统的定时器

HH:MM:SS(以冒号间隔,回车结束),然后在屏幕的右上角实时显示出时

间:HH:MM:SS。

按任一键重新对时;按Esc键返回主菜单。

(5)按数字键“5”,结束程序的运行,返回操作系统。解:

※主程序的编程思路: 此程序共5个功能,可采用跳转表法来实现多路分支结构程序设计。现将这5个程序段,各程序段的首地址分别标号为G1,G2,G3,G4,G5。将5个程序段的入口地址做成表TABLE放入数据段,程序根据给定的参数计算出欲转入的程序段的首地址在TABLE中的位置后,取出该地址,跳转至该程序段。

首先,通过调用子程序MENU,设置显示器,并输出提示文档。接着,读取‘1’-‘5’之间的ASCII表示数。然后,通过跳转表TABLE实现由输入参数转入相应的程序段。由于表中按“字”存放数据,则每个数据的位移量是:0、2、4、6、8。对于输入参数N,计算位移量的公式是N=(N-1)*2。

当输入‘1’时,跳转到标号G1。调用子程序CHGLTR,完成将输入字符串中的小写字母变换成大写字母。用户按键,若为ESC,则转到主程序段首调用MENU,否则,转到标号G1;

当输入‘2’时,跳转到标号G2。调用子程序MAXLTR,完成在输入字符串中找最大值。用户按键,若为ESC,则转到主程序段首调用MENU,否则,转到标号G2;

当输入‘3’时,跳转到标号G3。调用子程序SORTNUM,完成输入数据组的排序。用户按键,若为ESC,则转到主程序段首调用MENU,否则,转到标号G3。

当输入‘4’时,跳转到标号G4。调用子程序TIMCHK,完成时间的显示。用户按键,若为ESC,则转到主程序段首调用MENU,否则,转到标号G4。

当输入‘5’时,跳转到标号G5。结束程序的运行,返回操作系统。其流程框图见图3-1。

下载微机原理与接口技术(楼顺天编着)课后第八章习题答案[推荐5篇]word格式文档
下载微机原理与接口技术(楼顺天编着)课后第八章习题答案[推荐5篇].doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    微机原理与接口技术(第二版)习题答案

    第1章1.1 微处理器、微型计算机和微型计算机系统三者之间有什么不同? 解: 把CPU(运算器和控制器)用大规模集成电路技术做在一个芯片上,即为微处理器。微处理器加上一定数......

    微机原理与接口技术(钱晓捷版)课后习题答案

    “微机原理与接口技术”习题解答 第1章 微型计算机系统 〔习题1.1〕简答题 〔解答〕 ① 处理器每个单位时间可以处理的二进制数据位数称计算机字长。 ② 总线信号分成三组,分......

    微机原理与接口技术试题及答案

    一、 填空题(每空 1 分,共 15 分) 得分 评阅人 1.RESET信号到来后8088/86的CS和IP 分别为 _FFFF_H 和_0000_H。 2. 在特殊全嵌套方式下,8259可响应 同级或高级 中断请求。 3......

    微机原理及接口技术试卷及答案

    一、(共30分) 1.(10分) (1)将十进制数+107/128化成二进制数、八进制数和十六进制数(3分) (2)请回答什么是二--十进制编码?什么是有权码、什么是无权码、各举一个你熟悉的有权码......

    微机原理与接口技术试题答案

    微机原理与接口技术试题答案 一、填空题(20*1) 1、微机系统由(硬件系统)和(软件系统)两部分组成。 2、8086有( 20 )位地址线,存储器容量为( 1M)B。 3、8086CPU 内部组成结构从功能上讲,......

    微机原理与接口技术小结范文大全

    微机原理与接口技术基础 1.为什么在流水CPU中,将一条指令从取指到执行结束的任务分割为一系列子任务,并使各子任务在流水线的各个过程段并发地执行,从而使流水CPU具有更强大的......

    2012年微机原理与接口技术试题及答案

    一. 选择(每题1分) 下列各题四个选择项中,只有一个选项是正确的。请将正确选项号写在相应空位置上。 1.系统总线又称为_______,这是指模块式微处理机机箱内的底版总线。 1)主板......

    微机原理与接口技术考试试题及答案A

    《微机原理与接口技术》课程期末考试试卷(A卷,考试) 一、单项选择(在备选答案中选出一个正确答案,并将其号码填在题干后的括号内。每题2分,共30分) 1 .某微机最大可寻址的内存空间......