微型计算机原理与接口技术第三版(张荣标)答案_第1页
微型计算机原理与接口技术第三版(张荣标)答案_第2页
微型计算机原理与接口技术第三版(张荣标)答案_第3页
微型计算机原理与接口技术第三版(张荣标)答案_第4页
微型计算机原理与接口技术第三版(张荣标)答案_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

微型计算机原理与接口技术第三版(张荣标)答案

微型计算机原理与接口技术第三版答案

第1章练习题

1.选择题

(1)BCA(2)A⑶DA⑷C

2.填空

(1)10,12

(2)取出指令,执行指令

(3)

(4)内部码

3.简答题

(1)微处理器,微型计算机和微型计算机系统三者有何联系与区

别?

答:微处理器是把原来的中央处理单元CPU的复杂电路(包括运

算器和控制器)做在一片或几片大规模集成电路的芯片上。把这种微

缩的CPU大规模集成电路称为微处理器。

微型计算机是以微处理器为核心,再配备上用大规模集成电路工

艺制成的存储器和I/O接口就构成了微型计算机。

以微计算机为核心,再配备上系统软件、I/O设备、辅助电路和电

源就构成了微机系统。微型计算机系统包括硬件和软件了两大部分。

(2)计算机中为什么采用二进制数表示?

答:计算机是一种电器设备,内部采用的都是电子元件,用电子

元件表示两种状态是最容易实现的,比如电路的通和断、电压高低等

等,而且也稳定和容易控制。把两种状态用0,1来表示,就是用二进制

数表示计算机内部的数据。

(3)简述程序的运行过程。

答:即取指令一分析指令一执行指令。根据程序计数器PC中的值

从程序存储器读出现行指令,送到指令寄存器。将指令寄存器中的指

令操作码取出后进行译码,分析其指令性质,然后执行指令。

(4)设两个正的浮点数如下。

1)若是否一定有?

2)若S1和S2均为规格化的数,且,是否一定有?

答:1)若不一定有。

若SI=111001016,S2=00100101B

当Pl=01B时,P2=10B时,

2)若S1和S2均为规格化的数,且,一定有。

浮点规格表示要求对浮点二进制正数,其尾数数字S部分的最高

位必须是1,故不会出现上述情况,当时,一定有。

4.计算题

(1)计算十进制数-47的原码、反码、补码(8位二进制的形式

表示),并说明8位二进制原码、反码、补码所能表示的数值范围

(用十进制表示)。

解:[-47]原=10101111

[-4刀反=11010000

[-4刀补=11010001

8位二进制原码表示的范围为-127〜+127,反码表示的范围为-

127~+127,补码表示的范围为-128~+127。

(2)将十进制数658.125转换成二进制、八进制、十六进制和BCD

码。

解:658/16=41...余数为2

41/16=2.・.余数为9

2/16=0…余数为2

0.125x16=2小数部分为0,整数部分为2

658.125D=292.2H=001010010010.0010B=1222.1Q=

011001011000.000100100101(BCD数)

(3)设浮点数的表示格式为阶码4位(包括阶符1位)、尾数8

位(包括尾符1位)。阶码和尾数均用补码表示。写出二进制数X=-

0.0010110011B的规格化浮点数表示。

解:X二-0.0010110011B=-0.10110011X

S=0100110

Sf=1

J=110

Jf=1

规格化浮点数为1no10100110

(4)若X=-79,Y=+97,求[-X]补,[Y]补,[X-Y]补,[X+Y]补,

[-X-Y]补,要求给出求解过程,并指明运算后的溢出情况。

解:[-X]补=01001111

凶补二10110001

[Y]补=01100001

[-Y]补=10011111

[X-Y]补=[X]补+[-Y]补=01010000

10110001

+10011111

101010000

CS=1,CP=0,负溢出

[-X+YX卜=[-X]补+[Y]补=10110000

01001111

+01100001

10110000

CS=0,CP=1,正溢出

[以-丫]补=[以]补+[-Y]补=11101110

01001111

+10011111

11101110

CS=0,CP=0,无溢出

第2章练习题

1.选择题

(1)D(2)A(3)B(4)C(5)C(6)B(7)A(8)A

2填空题

(1)地址总线的宽度,OOOOOH~OFFFFFH

(2)SS,DS,CS,ES

(3)第33()引脚

(4)SS,DS

(5)奇地址区,偶地址区,高8位,低8位

3.简答题

(1)什么是指令周期?什么是总线周期?一个总线周期至少包

括几个时钟周期?

答:指令周期是一条指令执行所需的时钟周期,CPU在执行指令

过程中,凡需执行访问存储器或访问I/O端口的操作都统一交给BIU

的外部总线完成,进行一次访问所需的时间称为一个总线周期。一般

一个基本的总线周期由4个时钟周期组成。

(2)8086CPU中,标志寄存器包含哪些标志位?各标志位为

。,T分别表示什么含义?

答:标志寄存器包含状态标志和控制标志,状态标志包括符号标

志、零标志、奇/偶标志、进位标志、辅助进位标志、溢出标志,控制

标志包括方向标志、中断标志、跟踪标志。

符号标志(SF)用来指出前面运算执行后的结果是正还是负,结

果为负,则;结果为正则零标志(用来指出前面

SF=1,SF=OeZF)

运算执行后的结果是否为零,结果为零,则ZF=1;结果为非零,则

奇/偶标志(用来指出前面运算结果的低位中所含的

ZF=0oPF)81

的个数为偶数还是奇数结果为偶结果为奇进位

,,PF=1;,PF=Oe

标志(CF),当执行加法运算使最高位产生进位或执行减法运算弓I起

最高位产生借位时否则辅助进位标志(当执

ZCF=1,CF=0oAF),

行加法运算使第3位往第4位上有进位或减法运算使第3位从第4位

有借位时,则AF=1,否则AF=O。溢出标志(OF),当运算的结果超

出了范围是就会产生溢出,OF=1,否则OF=0。方向标志(DF)在

串操作指令中用来控制串操作过程中地址的增减,当DF=0,则地址不

断递增;当DF=1,则地址会不断递减。中断标志(IF)在中断过程中

控制是否响应可屏蔽中断的请求,当下二0,则CPU不能响应可屏蔽中

断请求当IF=L则CPU可以接受可屏蔽中断请求。跟踪标志(TF)在

中断过程中控制是否响应单步中断的请求,当TF=1,则CPU按跟踪

你方式执行指令;当TF=O,则CPU不会响应单步中断。

(3)8086CPU中有哪些通用寄存器和专用寄存器?说明他们的

作用。

答:4个通用寄存器,AX:16位的累加器;BX:16位的基数寄

存器,可用于寄存器间接寻址;CX:16位的计数寄存器,可作为程序

循环计数寄存器;DX:16位的数据寄存器,可作为I/O指令专用间接

寻址寄存器。

4个专用寄存器,BP:16位的基数指针寄存器,用来存放位于堆

栈段中的一个数据区基址的偏移地址;SP:16位的堆栈指针寄存器,

存放栈顶的偏移地址;SI:16位的源变址寄存器,用于存放当前数据

段的偏移地址;DI:16位的目的变址寄存器,也用来存放当前数据段

的偏移地址。

(4)在8086CPU中,已知CS寄存器和IP寄存器的内容分别如

下所示,请确定其物

理地址。

1.CS=1000HJP=2000H

2.答:物理地址:CS*16+IP=10000H+2000H=12000H

3.CS=1234H,IP=OCOOH

4.答:物理地址:CS*16+IP=12340H+0C00H=12F40H

5.⑸设(AX)=2345H,(DX)=5219H,请指出两个数据相加或相减

后,FLAG中状态标志位的状态。

6.答:相加:0010001101000101

7.+0101001000011001

8.0111010101011110

9.CF=0,SF=0,ZF=0,AF=0,OF=0zPF=0

10.相减:0010001101000101

.0101001000011001

.1101000100101100

.CF=1,SF=1,ZF=0,AF=1,OF=1/PF=0

(6)8086CPU在最小模式下构成计算机系统至少应该包括哪几

个基本的部分?

答:一片8284A时钟发生器,三片8282或74LS373地址锁存

器,两片8286总线接收器。

(7)简述堆栈指示器SP有什么功能?堆栈的操作过程是怎样的?

试举例说明。

答:堆栈指示器(SP)存放栈顶的偏移地址,以便存取位于当前

堆栈段中的数据。

举例:PUSHBX;将寄存器BX的内容压入堆栈。

操作过程分析:执行PUSH指令时,SP先自动减2,BX的低8位

放入SP所指单元中,高8位放入SP+1所指单元中。

第3章练习题

1.选择题

(1)D(2)C(3)A(4)A

2.填空题

(1)字节递增8DH,5CH,3BH,1AH

(2)递增

(3)60H0

(4)1F02C

3.问答题

(1)试分别说明换码指令和串操作指令所用的隐含寄存器及标志

位,并说明各自的工作过程。

答:换码指令XLAT所用的隐含寄存器为BX和AL。指令〃XLAT〃

的工作过程:将BX和AL中的值相加,把得到的值作为地址,然后将

此地址所对应的单元中的值取到AL中。

串操作指令所用的隐含寄存器和标志位为CX、SI、DI和DFO字

符串传送指令〃REPMOVSB”的工作过程:将DS:SI逻辑地址所指

存储单元的字节传送到ES:DI逻辑地址所指的内存单元中,当DF=0

时,SI和DI均增1,CX减1;当DF=1时,SI和DI均减1,CX减

lo重复执行上述操作,直到CX=0时停止。

(2)RET与IRET两条指令有何区别?并说明各自的应用场合。

答:RET是从堆栈中弹出断点地址,装入IP或IP与CS中,从而

段内返回的目的。主要用于子程序的返回。IRET是中断返回指令,是

专门为中断服务程序返回设计的。

(3)试分别举例说明8086CPU乘法与除法指令所用的隐含寄存

器。

答:乘法指令有无符号数乘法指令MUL和有符号数乘法指令

IMUL。MUL隐含寄存器AX,IMUL隐含寄存器AX和DXO如指令

〃MULDL〃的功能是将DL中的内容与AL中的内容相乘,结果放在

AX中。

除法指令也有无符号数除法指令DIV和有符号数除法指令IDIVe

DIV隐含寄存器AXJDIV隐含寄存器AX和DXO如指令〃IDIVBX〃

的功能是将DX和AX中的32位有符号数除以BX中的16位有符号

数,商在AX中,余数在DX中。

(4)简述堆栈指示器SP有什么功能?堆栈的操作过程是怎样的?试

举例说明。(教材P85)

(5)8086CPU有哪些操作数的寻址方式?请分别举例说明。

答:8086CPU中操作数寻址可分为4种:立即寻址、寄存器寻址、

存储器寻址和I/O端口寻址。立即寻址如MOVAX,3412H。寄存器寻

址如MOVAX,BX。存储器寻址可分为五类:直接寻址如MOV

AXJ7834H];寄存器间接寻址如MOVAX,[BX];寄存器相对寻址如

MOVAXJBX+12H];基址加变址寻址方式如MOVAXJBX+SI];相

对的基址和变址寻址如MOVAH/BX+SI+2468H]。I/O端口寻址包括

两类:直接端口寻址如INAL,27H;间接端口寻址如OUTDX,AL。

4.请指出下列指令中源操作数和目的操作数的寻址方式。

(1)MOVSIJ20;目的操作数为寄存器寻址,源操作数为立即寻

址;

(2)MOVBPJBX]旧的操作数为寄存器寻址,源操作数为寄存

器间接寻址;

(3)MOVBXJ200];目的操作数为寄存器寻址,源操作数为直接

寻址;

(4)PUSHDS;源操作数为寄存器寻址;

(5)POPBX;目的操作数为寄存器寻址;

(6)ANDDLJBX+SI+30H];目的操作数为寄存器寻址,源操作

数为相对的基址和变址寻址;

5.请写出如下程序片段中每条逻辑运算指令执行后标志ZF、SF、

和PF的状态:

MOVALZ4CH;ZF不变,SF不变,PF不变

ANDAL,OFOH;ZF=OrSF=0zPF=O

ORBL,4CH;ZF=O,SF=0,PF=O

XORAL,AL;ZF=1zSF=0,PF=1

6.请写出如下程序片段中每条算术运算指令执行后标志CF、ZF、

SF、OF、PF和AF的状态:

MOVBL,54H;各标志位保持不变

ADDBL,4BH;CF=O,ZF=OxSF=1,OF=1,AF=1,PF=O

CMPBLz0B6H;CF=lzZF=0,SF=1,OF=0zAF=0,PF=O

SUBBL,BL;CF=O,ZF=1,SF=0,OF=0,AF=1,PF=O

INCBL;CF=O,ZF=O,SF=O,OF=0,AF=0,PF=O

7.(DS)=1000H/(SS)=2500H/(SI)=0100H/(BX)=0800H,(BP)=06

OOH,指出下列指令的目的操作数字段寻址方式,并计算目的操作数字

段的物理地址。

(1)MOV[BX]rCX

目的操作数为寄存器间接寻址

目的操作数的物理地址为:DSX16+0800H=10800H

(2)MOV[2000H],BX

目的操作数为直接寻址

目的操作数的物理地址为:DSxl6+2000H=12000H

(3)MOV[BP],BX

目的操作数为寄存器间接寻址

目的操作数的物理地址为:SSxl6+0600H=25600H

(4)MOV[BP+200],BX

目的操作数为寄存器相对寻址

目的操作数的物理地址为:SSxl6+0600H+C8H=256C8H

(5)MOV[BX+3OO][SI]rAX

目的操作数为相对基址加变址寻址

目的操作数的物理地址为:

DSxl6+0800H+12CH+0100H=10A2CH

8.已知(SS)=800H,(SP)=0040H,(CX)=OAFOH,

(DX)=201Ho下列指令连续执行,请指出每条指令执行后SS、SP、

AX、BX寄存器中的内容是多少?

PUSHCX;SS=0800H,SP=OO3EH,AX不变,BX不变

PUSHDX;SS=0800H,SP=OO3CH,AX不变,BX不变

POPAX;SS=0800H,SP=OO3EH,AX=0201H,BX不变

POPBX;SS=0800H,SP=0040H,AX=0201H,BX=0AF0H

9.阅读下列各小题的指令序列,在后面空格中填入该指令序列的

执行结果。

(1)MOVDL,37H

MOVALZ85H

ADDAL,DL

DAA

AL=22H,BL=37H,CF=1

(2)MOVDX,1F45H

STC

MOVCX,95

XORCHQFFH

SBBDX;CX

DX=1FBOH,CF=1

10.已知程序段如下。

CMPCX,BX

JNCLI

JNCL2

JMPL3

假设有以下三组CX,BX值,那么在程序执行后,分别转向哪里?

(1)(CX)=D3O1H,(BX)=D301H

答:转向L1

(2)(CX)=2E50H;(BX)=8301H

答:转向L2

(3)(CX)=477BH1(BX)=10DCH

答:转向L1

11.设4个BCD码DTLDT2、DT3、DT4分别放在AL、AH、

CL.CH的低4位,请编写程序段,将这4个数按如下要求合并存放

到BX寄存器中。

BXDTIDT2DT3DT4

解:程序段如下:

MOVBXQ0H

ANDAXZOFOFH

ANDCX.OFOFH

MOVBL,CL

MOVCL,4

SHLBLZCL

ADDBL,CH

MOVBHZAL

SHLBH,CL

ADDBH,AH

12.请用串操作指令实现将10-99这90个数从2100H开始的内

存单元搬到3100H开始的内存单元处。

解:程序段如下:

MOVDS,2000H

MOVES3OOOH

CLD

MOVCXz90

MOVSIJOOH

MOVDI,100H

REPMOVSB

第4章练习题

1.选择题

(1)BC(2)A(3)C(4)D

2.问答题

(1)变量和标号有什么异同之处?

答:变量和标号都有三种属性:段地址、偏移地址及类型。变量

是存放在存储器单元中的操作数,其值可以改变,变量的类型可以是

BYTE(字节)、WORD(字)、DWORD(双字)等;标号是可执行

指令语句地址的符号表示,即用标志符来表示地址,标号的类型可以

是NEAR(近)或FAR(远)。

(2)简述汇编语言中伪指令的基本作用和特点,与机器指令相比

有何区别?

答:伪指令语句没有对应的机器代码,经汇编程序汇编后并不产

生目标代码,由汇编程序对源程序汇编期间进行处理,主要作用是完

成变量的定义、存储器的分配、段结构的定义,段的分配、过程的定

义程序开始和结束的指示等。而机器指令由CPU来执行,它的每一

条指令语句在源程序汇编时都要产生可供计算机执行的指令代码(即目

标代码)。

(3)试简述宏调用与子程序调用各自的作用和相互之间的区别。

答:宏调用的作用是在定义宏指令后,通过宏指令来表示对应的

程序片段。子程序调用的作用是定义一个由主程序可以用CALL指令调

用的程序。两者的区别:宏调用比子程序调用执行速度快;子程序调

用使用CALL语句实现,在CPU执行时进行处理,而宏调用由宏汇编

软件MASM中的宏处理程序来处理;子程序调用比宏调用节省内存空

间;宏调用比子程序调用灵活。

(4)8086汇编语言程序中段的类型有几种?段定义语句中定位

类型、组合类型和类别各起什么作用?

答:段类型有四类:数据段、代码段、堆栈段、附加段。定位类

型用于规定20位的段起始地址。组合类型规定该段与其他段的位置关

系。类别名的主要作用是将所有分类名相同的逻辑段组成一个段组。

3.根据题意定义变量

(1)将字节数据12H,567H存放在变量DATA1的存储单元中。

DATA1DW12H,567H

(2)将字节数据56H,0BCH存放在变量DATA2的存储单元中。

DATA2DB56HQBCH

(3)在DATA3为首地址的存储单元中连续存放字节数据5个W

6个(1,2,3),20个空单元。

DATA3DB5DUP(A),6DUP(1,2,3),20DUP(?)

(4)在STR1为首地址的存储单元中存放字符串’HOWARE

YOU'。

STR1DB'HOWAREYOU'

4.已知某数据段经汇编后数据在存储器中存放格式如下图,试写

出数据段定义。

DATA100H

(字节数据)0AH

10H

DATA204H

15

(字节数据)08H

08H

08H

09H

DATA377H

(字数据)65H

6CH

63H

6FH

6DH

•••

解:DATA1DB00H,0AH,10H

DATA2DB15DUP(04H,3DUP(08H),09H)

DATA3DW6577H,636CH,6D6FH

5.设数据段数据定义如下。

DATASEGMENT

STRDB'GOODMORNING-;$#

ADRDW3DUP(0,2z5)

DISPDW3

DATAENDS

(1)画出内存分配图。

STR47H

(字节数据)4FH

4FH

44H

20H

4DH

4FH

52H

4EH

49H

4EH

47H

21H

24H

ADROOH

3

(字数据)00H

02H

00H

05H

00H

DISP03H

(字数据)00H

(2)分别用两种求偏移量的指令将STR的偏移地址送BX.

解:①LEABX,STR

②MOVBXQFFSETSTR

6.写出以下指令在汇编后目标程序中对应的指令。

7.同时对于两条指令中分别出现的两个AND和两个OR是不是同

一种含义?为什么?

(1)MOVBXJ234HGT1000H对应MOVBXQFFFFH

(2)SBBDXJ024SHR3对应SBBDXQ080H

(3)ANDAL,7AND47H对应ANDAL,07

(4)ORDL,NOT(7OR54H)对应ORDLZA8

(5)MOVAX,HIGH(1000H+5)对应MOVAX,0010

(6)ADDAXZHIGH1000H+5对应ADDAX,0015

注意:汇编后显示的立即数均为16进制数

第(3)、(4)条指令中出现的两个AND和OR中,前面的

AND和OR是指令系统中的指令助记符,是在程序执行时进行运算的;

后面的AND和OR是逻辑运算符,是在编程过程中进行运算的,逻辑

运算对象只能是常数,其结果也是常数。

8.程序在数据段中定义的数据如下。

DATASEGMENT

VARIDB4,6

VAR2DD200DUP(?)

DATAENDS

以下三条指令分别汇编成什么?(可立即数方式表示)

(l)MOVCL,LENGTHVAR2汇编成MOVCL,C8

(2)MOVBLJYPEVARI汇编成MOVBL,01

(3)MOVBXzSIZEVAR2汇编成MOVBXQ320

注意:汇编后显示的立即数均为16进制数

9.给定宏定义如下。

DIFMACROX,Y

MOVAX,X

SUBAX,Y

ENDM

ABSDIFMACROVI,V2,V3

LOCALNEXT

PUSHAX

DIFVI,V2

CMPAX,0

JGENEXT

NEGAX

NEXT:MOVV3,AX

POPAX

ENDM

试展开以下调用,并判定调用是否有效(展开后的指令必须符合

8086CPU指令系统要求)。

(1)ABSDIFDX,AX,CX

+PUSHAX

+MOVAXZDX

+SUBAX,AX

+CMPAX,0

+JGENEXT

+NEGAX

+NEXT:MOVCX,AX

+POPAX

(2)ABSDIF[100]/[DI],BX

+PUSHAX

+MOVAXJ100]

+SUBAXJDI]

+CMPAX,0

+JGENEXT

+NEGAX

+NEXT:MOVBX,AX

+POPAX

(3)ABSDIF[BX+SI],[BPL1OOH;调用无效。语法错误(立即数的使

用)。

10.写一个宏定义,要求能把任意一个寄存器的最低位移至另一个

寄存器的最高位中。

解:宏定义如下:

SMOVMACROXI,X2

ANDXI,0001H

RORXI,1

ANDX2JFFFH

ORX2,X1

ENDM

n利用DOS功能调用从键盘输入60个字符到缓冲区BUF中,

在按下ENTER键后在屏幕上显示这些字符。请写出程序段。

解:程序段如下:

DATASEGMENT

BUFDB60;用户定义存放60个字节的缓冲区

NUMBDB?;系统填入实际输入字符字节数

CHARSDB60DUP(?);存放输入字符的ASCII码值

DATAENDS

CODESEGMENT

ASSUMECS:CODEZDS:DATA

START:MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETBUF

MOVAH,0AH

INT21H

XORBX,BX

MOVBL,NUMB

MOVCHARS[BX];$,;字符串后加一个结束符

MOVDLQDH;回车

MOVAH,2

INT21H

MOVDLZOAH;换行

MOVAH,2

INT21H

MOVDX,OFFSETCHARS

MOVAH,9

INT21H

MOVAH,4cH

INT21H

CODEENDS

ENDSTART

第5章练习题

2.读程序

(1)欲把AX寄存器的内容倒序,即D15-D0,D14-D1,…,

D0-D15,请在空格处填上正确的指令。

MOVBX,AX

MOVCX,16

AGAIN:RCLBXJ

RCRAX,1

LOOPAGAIN

(2)若要完成50-(1+2+3+4+5)的运算,并把最终运算结果转

换成分离8421BCD码,高位。AH,低位->AL,请在空格处填上正确

的指令。

MOVCX,5

MOVAX,50

NEXT:SUBAKCX

LOOPNEXT

AAM

(3)有一输出设备,8位状态端口地址为62H,最高位为时,CPU

可以向该设备的8位数据端口(地址61H)发送数据;否则,等待。

根据题意,请在空格处填上正确的指令。

WAIT:INAL,62H

TESTAL,80H

JNZWAIT

OUT61H,AL

(4)要求把源串AREA1中的100个字传送给目的串AREA2,指针

按地址增量方向修改,请在空格处填写正确的指令。

MOVSLOFFSETAREA1

MOVDI,OFFSETAREA2

MOVCXJ00

CLD

REPMOVSW

2.编程题

(1)试编写一程序,把数组STRING中存放的20个8位二进制

数分成正数数组和负数数组,并统计正数、负数和零的个数,结果分

别存放在P、M、Z三个单元。

DATASEGMENT

STRINGDB20DUP(?)

POSIDB20DUP(?)

NEGADB20DUP(?)

PDBOOH

MDBOOH

ZDBOOH

DATAENDS

CODESEGMENT

ASSUMECS:CODEZDS:DATA

START:MOVAX,DATA

MOVDS,AX

XORBX,BX

MOVSI,BX

MOVDLBX

MOVCX,20

LP:MOVALZSTRING[BX]

CMPALZO

JGEPl

MOVNEGA[DI],AL

INCDI

INCM

JMPNEXT

PUNEP2

INCZ

JMPNEXT

P2:MOVPOSI[SI],AL

INCSI

INCP

NEXT:INCBX

LOOPLP

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

(2)试编写一程序,完成10个一位十进制数累加,累加结果以

分离式BCD码形式存放于AH(高位),AL(低位)寄存器。

DATASEGMENT

STRINGDB'1112220004'

DATAENDS

CODESEGMENT

ASSUMECS:CODEZDS:DATA

START:MOVAX,DATA

MOVDS,AX

MOVCXz10

XORBX,BX

MOVAX,0

LP:ADDAL,STRING[BX]

AAA

INCBX

LOOPLP

MOVAH,4cH

INT21H

CODEENDS

ENDSTART

(3)试编写一程序,将2个字节的二进制数,变换成用ASCII码

表示的四位十六进制数(用四字节表示)。

DATASEGMENT

NUMDW12345;0〜65535

ASCDB4DUP(?)

DATAENDS

CODESEGMENT

ASSUMECS:CODEZDS:DATA

START:MOVAX,DATA

MOVDS,AX

MOVBX,NUM

LEADIZASC

MOVCX/0404H

LP1:ROLBX,CL

MOVDLZBL

ANDDLZOFH

CMPDLJO

JBLP2

ADDDL,7

LP2:ADDDL,'O'

MOV[DI]ZDL

INCDI

DECCH

JNZLP1

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

(4)试用串操作指令SCAS,在10个字节的数据块BLOCK中,

搜索与2EH相等的数,若找到,则将该数地址存放于ADR中,并在

SIGNAL单元中作标记OFFH;否则,SIGNAL为00H。

DATASEGMENT

BLOCKDB26H,27H,28H,29H,2AH,2BH,2cH,2DH,2EH,2FH

ADRDW?

SIGNALDB?

DATAENDS

CODESEGMENT

ASSUMECS:CODEZDS:DATAZES:DATA

START:MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVDI,OFFSETBLOCK

CLD

MOVCXJO

MOVALZ2EH

REPNZSCASB

JNZAA

MOVSIGNAL,OFFH

DECDI

MOVADRZDI

JMPNEXT

AA:MOVSIGNAL,OOH

NEXT:MOVAH,4cH

INT21H

CODEENDS

ENDSTART

(5)请按如下说明编写子程序。

子程序功能:把用ASCII码表示的两位十进制数转换为压缩BCD

码。

入口参数:DH:十位数的ASCII码,DL:个位数的ASCII码。

出口参数:AL:对应压缩BCD码。

TRANSPROCNEAR

PUSHCX

PUSHDX

MOVCL,4

SUBDH,'O'

SUBDL,O

SHLDHZCL

ADCDL,DH

MOVALZDL

POPCX

POPDX

RET

TRANSENDP

(6)编写一程序,计算100个16位正整数之和,如果和不超过

16位字的范围(0~65535),则保存其和到SUM,如超过则显示

"Overflow!〃。

DATASEGMENT

DAT1DW25DUP(OO34H,O345H/OO0OH/OOOOH)

SUMDW?

STRINGDB'Overflow!'QDHQAH;$'

DATAENDS

CODESEGMENT

ASSUMECS:CODEZDS:DATA

START:MOVAX,DATA

MOVDS,AX

MOVSLOFFSETDAT1

MOVBXQFFSETSUM

MOVCXJ00

XORAX,AX

LI:ADCAX,[SI]

JCOVER

INCSI

INCSI

LOOPLI

MOV[BX],AX

JMPNEXT

OVER:MOVDX,OFFSETSTRING

MOVAH,9

INT21H

NEXT:MOVAH,4cH

INT21H

CODEENDS

ENDSTART

3.问答题

(1)汇编语言程序的开发有哪些步骤,其工作过程需哪些软件来

实现?可产生哪些输出文件?

答:步骤如下:1)明确任务,确确算法2)绘制流程图3)编写

汇编语言程序4)上机调试程序。

编写汇编语言程序时:1)需要EDIT.COM软件建立源程序文件,

并保存为.ASM文件。2)需MASM.EXE软件汇编源程序文件,可产

生扩展名为OBJ的目标文件、扩展名为LST的列表文件和扩展名为

CRF的对照文件。3)需要LINK.EXE软件与目标文件连接,可产生扩

展名为EXE的可执行文件、扩展名为MAP的列表文件和扩展名为LIB

的库文件。

上机调试时,需要DEBUG.EXE调试软件。

(2)程序结束软中断有哪几种实现方法?有什么区别?

答:程序结束软中断有三种实现方法:INT20H、INT21H、INT

27H。

INT20H的功能是终止当前进程,关闭所有打开的文件,清除磁

盘缓冲区,返回控制台的命令接收状态,实现程序退出时,不需要任

何入口参数。INT21H用于系统功能调用,该软中断包括3种情况:

无返回程序结束(入口参数AH=O,无返回号)、程序结束并驻留

(入口参数AH=31H,返回号AL=1)、带返回程序结束(入口参数

AH=4CH,返回号AL=1)oINT27H用于驻留退出,入口参数

DX=XX设置驻留程序的长度。

(3)用汇编语言编程序有哪几种结构?

答:顺序结构;分支结构;循环结构;子程序结构。

(4)子程序结构中,主程序和子程序之间参数传递有哪几种方法?

答:参数传递的实现方案可分为:寄存器传送、固定缓冲区传送、

地址表传送、堆栈传送。

第6章练习题

1.选择题

(DC,(2)B,(3)C

2.填空题

(1)随机存取存储器,丢失,只读存储器,不会丢失

(2)电荷,电荷泄露,刷新

(3)128,10

(4)48000H,4FFFFH,32K

3.简答题

(1)半导体存储器的主要性能指标有哪些?

答:半导体存储器的主要性能指标有:存储容量、存取速度、功

耗、可靠性、价格。

(2)存储器芯片由哪几部分组成?各部分功能是什么?

答:存储芯片由存储矩阵、地址译码器、存储器控制电路、三态

双向缓冲器组成。存储矩阵的功能是把能够寄存二进制信息的基本电

路的集合体的这些基本存储电路按阵列形式排列和编址;地址译码器

的功能是将CPU发送来的地址信号进行译码后产生地址编码,以便选

中存储矩阵中的某一个或某几个基本存储电路,使其在存储器控制逻

辑的控制下进行读/写操作;存储器控制电路通过相应的信号引脚,接

收来自CPU或外部电路的控制信号,经组合变换,产生芯片内部各部

分的控制信号;三态双向缓冲器的作用是使组成半导体RAM的各个存

储芯片很方便地与系统数据总线相连接。

(3)简述SRAM和DRAM的各自特点。

答:SRAM的特点为速度快,不必配合内存刷新电路,可提高整

体的工作效率,但集成度低,功耗较大,相同的容量体积较大。

DRAM的特点是需要刷新来补充电荷。

(4)DRAM为什么要刷新?存储系统如何进行刷新?

答:DRAM由电容组成,通过高低电平表示存储的状态,由于是

电容器作为载体,产生电荷泄露,故需要刷新来补充电荷。刷新按行

进行,即每当CPU或外部电路对动态存储器提供一个行地址信号,使

存储体中的某一行被选中,同时令列地址无效,即关闭所有的列选通

道,这样,该行中所有基本存储电路的数据将在内部读出,并在相应

列刷新放大器作用下被放大和刷新。

(5)什么是高速缓冲器?与主体有什么关系?基本工作原理是什

么?

答:高速缓冲器为缓存,位于CPU与内存之间的临时存储器,以

提高CPU数据输入输出速率。高速缓冲器的原理是根据局部性原理,

把主存储器中访问概率高的内容存放在缓冲器中,当CPU需要读取数

据时就首先在缓冲器中查找是否有所需内容,如果有则直接从缓冲器

中读取;若没有则再主存中读取该数据,然后同时送往CPU的高速缓

冲器。

3.一个5124的RAM芯片需要多少根地址线?多少根数据线?若

要组成一个64Ki的存储器,需要多少个RAM芯片?多少芯片组?多

少根芯片组选择地址线?

答:一个5124的RAM芯片需要9根地址线,4根数据线。组成

一个64K&的存储器需要256个RAM芯片,128个芯片组,7根芯片

组选择地址线。

4.由Intel2164DRAM芯片组成一个64K8的存储器,共需多少个

DRAM芯片?若进行刷新操作,需要几次才能刷新完毕?

答:组成一个64K&的存储器,共需8个DRAM芯片。需要128

次才能刷新完毕,7个触发器。

第7章练习题

1.选择题

(1)B(2)A.B(3)C

2.填空题

(1)01B0H,01B3H,4

(2)8,36

(3)中断请求、中断判优、中断响应、中断服务、中断返回

3.问答题

(1)试说明8086CPU对INTR的响应过程。若某外部中断源通

过8259A的IR4接入8086CPU系统,试说明应做哪几个方面的工作

才能使该中断正常工作。

答:响应过程:1)CPU在每执行完一条指令后,自动检测是否有

INTR中断请求;2)判断是否响应INTR线上的中断请求;3)确定中

断向量地址;4)保存断点;5)执行中断服务程序;6)中断返回。

若外部中断源通过IR4接入8086系统,应做:1)设置8259A的

初始化命令字和相关操作命令字;2)系统开中断。

(2)说明软中断与子程序调用在使用时有何区别。

答:软中断是由CPU根据程序的某条指令或者程序员对标志寄存

器中某个标志位的设置而产生的;子程序调用是由CALL指令引起的。

(3)采用DMA方式为什么能进行高速数据传送?

答:DMA是一种直接存储器存取方式,利用这种方式,可以在没

有CPU干预的情况下,存储器与外设之间或存储器与存储器之间进行

直接数据传输,这样可以大大提高数据传输的速度。

(4)简述DMA控制器8237A的工作周期。

答:8237A在系统中的工作状态可分为两种工作周期:DMA空闲

周期和DMA有效周期。

当8237A的所有通道均没有DMA请求时,芯片即处于空闲周期,

此时8237A作为普通接口芯片受CPU控制,处于从属状态。当8237A

采样到某通道有DMA请求,即向CPU发总线请求信号,一旦获得总

线控制权则由空闲周期进入有效周期,此时8237A作为系统的主控芯

片,处于主控状态.

(5)8237A在进行单字节方式DMA传送和块传送时,有什么区

别?

答:1)单字节传送方式:每次DMA操作仅传送一个字节数据,传

送后当前地址寄存器加1或减1,并将当前字节计数器减1,保持请求

信号HQR无效,交出总线控制权,随后再次请求DMA传送下一个字

节数据,如此往复直到当前字节计数器减为OFFFFH时终止。

2)数据块传送方式:8237A一旦获得总线控制权,便开始连续传

送数据,每传送一个字节就自动修改地址,并使要传送的字节数减1,

直到当前字节计数器减为OFFFFH时产生终止信号,或者受到外部的信

号时结束传送,交出总线权。

4.下面是一个对8259A进行初始化的程序,请加上注释,并具体

说明各初始化命令字的含义。

MOVAL,13H;设置ICW1命令字边沿触发方式,单片8259A

需要设置ICW4

MOVDX,40H

OUTDXZAL

INCDX;DX增1,为设置下面的命令字做准备

MOVALz08H;设置ICW2中断类型号为从08H~OFH

OUTDX,AL

MOVAL,09H;设置ICW4为8088模式,一般E0I缓冲方式,

全嵌套方式

OUTDX,AL

系统分配给8259A的I/O地址为40H和41H

5.设8259A的偶地址是1000H,试编写屏蔽8259A中的IR3,

IR4和IR6中断请求的程序。

MOVDX,1000H;指向8259A的偶地址

MOVALZO1O11OOOB;使11\/m的口3、D4、D6位为1

OUTDX,AL

8259A的OCW1可以实现中断源的屏蔽与开放。

6.某8086CPU系统的中断系统由两片8259A级联组成,从片联

在主片的IR3上,主、从8259A的IR5上各接有一个外部中断源,其

中断类型码分别为ODH,95H。假设它们的中断入口地址均在同一段

中,段基址为1000H,偏移地址分别是200H,300H;所有中断都采

用边沿触发方式、全嵌套方式、正常EOI结束方式。

(1)写出主、从8259A中断向量地址的范围;

(2)试编写全部初始化程序。

解:(1)主8259A的中断类型码的范围为:O8HOFH,中断向量地址的

范围为:20H3cH。从8258A的中断类型码的范围:90H97H,中断向量期止范围

为:240H25cH。

(2)主8259A初始化程序段

MOVAX,00H

MOVDS,AX;中断向量表的段地址为0000H

MOVBXQDH4;取中断向量地址

MOVAX,200H;取中断向量并送入中断向量表

MOV[BX]fAX

MOVAX,1000H

MOV[BX+2LAX

MOVALQOOIOOOIB;ICW1边沿愈虫发,级联方式,写入ICW4

OUT30HtAL

MOVAL,08H;ICW2中断类型号范围

OUT31HfAL

MOVALfOOOOOlOOB;ICW3从片联在主片的IR3上

OUT31HfAL

MOVAL^OOUIOIB;ICW4全嵌套方式,正常EOI结束方式

OUT31H,AL

从8259A初始化程序段

MOVAXQ0H

MOVDS,AX;中断向量表的段地址为0000H

MOVBX,95HA;取中断向量地址

MOVAX,300H;取中断向量并送入中断向量表

MOV[BX],AX

MOVAXJ000H

MOV[BX+2],AX

MOVAL^OOIOOOIB

OUT36H,AL

MOVALz90H

OUT37HZAL

MOVAL,00000011

OUT37H,AL

MOVAL,0001

7.设计8237A的初始化程序。要求:通道0工作于快传送写模式,

地址加1变化,允许自动预置功能;通道1工作于单字节传送,地址

减1变化,禁止自动预置功能;通道2、通道3和通道1工作于相同

的方式。8237A的DACK为高电平有效,DREQ为低电平有效,采用

循环优先级方式启动8237A工作。

MOVDXQMA+0DH;DMA+0DH为复位命令端口地址

MOVAL,0;发复位命令

OUTDX,AL

MOVALJ0110100B;设置通道0方式字

MOVDXQMA+0BH

OUTDX,AL

MOVALZO1OO1OO1B;设置通道1方式字

MOVDX,DMA+0BH

OUTDXZAL

MOVAL^IOOIOIOB;设置通道2方式字

MOVDX,DMA+0BH

OUTDX,AL

MOVAL,01001011B;设置通道3方式字

MOVDX,DMA+0BH

OUTDXZAL

MOVALJOOIOOOOB;设置控制字

MOVDX,DMA+08H

OUTDX,AL

8.试编写程序段,要求利用8237A在存储区的两个区域BUF1和

BUF2之间直接传送数据,传送的数据长度为64KB

MOVAL,04H

MOVDX,DMA+08H;控制寄存器端口

OUTDX,AL;设控制字,禁止8237A工作

MOVDXQMA+0DH;复位命令端口

OUTDX,AL;发复位命令

MOVDXQMA+00H;通道0地址寄存器端口

MOVAX,BUF1;源数据区首址

OUTDX,AL;写入地址彳氐8位

MOVAL,AH

OUTDX,AL;写入地址高8位

MOVDXQMA+02H;通道1基地址与当前地址

MOVAX,BUF2;目的数据区首址

OUTDX,AL;写入地址彳氐8位

MOVAL,AH

OUTDX,AL;写入地址高8位

MOVDXQMA+03H;通道1基计数与当前字节计数

MOVAX,OFFFFH

OUTDX,AL;写入初始值低8位

MOVALZAH

OUTDX,AL;写入初始值高8位

MOVDX,DMA+0CH;先/后触发器端口

OUTDXZAL;清先/后触发器端口

MOVDX,DMA+0BH;方式寄存器端口

MOVAL,88H

OUTDX,AL;设通道0方式字,数据块读增量

MOVDXQMA+0CH

OUTDXZAL;清先/后触发器端口

MOVDXQMA+0BH;方式寄存器端口

MOVAL,85H

OUTDX,AL;设通道1方式字,数据块写增量

MOVDX,DMA+0CH

OUTDX,AL;清先/后触发器端口

MOVDXQMA+OFH;主屏蔽字端口

MOVAL,0CH

OUTDXZAL;屏蔽通道2、3

MOVDXQMA+OCH

OUTDX,AL;清先/后触发器端口

MOVDX,DMA+08H;控制寄存器端口

MOVALz01H

OUTDX,AL;设控制字,允许存储器到存储器,启动8237A工作

MOVDXQMA+OCH

OUTDX,AL;清先/后触发器端口

MOVDX,DMA+09H;请求寄存器端口

MOVAL,04H

OUTDX,AL;向通道0发出DMA请求

MOVDXQMA+08H;读状态寄存器端口

AA1:INAL,DX

JZAA1

MOVDXQMA+OCH

OUTDX,AL;清先/后触发器端口

MOVDX,DMA+09H;请求寄存器端口

MOVAL,OOH

OUTDX,AL;通道0撤销DMA请求

MOVDXQMA+OCH

OUTDX,AL;清先/后触发器端口

MOVDXQMA+08H;设控制字

MOVAL,04H

OUTDX,AL;禁止8237A工作

HLT

第8章练习题

1.选择题

(1)C(2)B

2.填空题

设某接口的状态端口地址为100H,状态位从D7位输入,数据端

口的地址为200H,输入数据的总字节数为200,输入数据段放在内存

单元的首地址为300,查询式输入数据的程序段如下。

MOVSL300

MOVCX,200

INPUT:INALJOOH

TESTAL,80H

JZINPUT

INAL200H

MOV[SI]ZAL

INCSI

LOOPINPUT

3.问答题

(1)当接口电路与系统总线相连接时,为什么要遵循〃输入要经

过三态,输出要锁存〃的原则?

答:接口电路是介于主机和外设之间的一种缓冲电路,它使外设

与总线隔离,起缓冲、暂存数据的作用。因为数据总线是各种设备以

及存储器传送数据的公共总线,任何设备都不允许长期占用数据总线,

而仅允许被选中的设备在读/写周期中享用数据总线,这就需要接口

电路为输入设备提供三态缓冲作用,只在读/写周期中为被选中的设

备开放与系统数据总线

温馨提示

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

评论

0/150

提交评论