微机原理习题集以及答案第二版

更新时间:2024-06-13 21:48:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一部分 例题与习题

第1章 微型计算机基础

1.1 例 题

1.把十进制数137.875转化为二进制数。P7 解:把十进制数转换成二进制数时,需要对一个数的整数部分和小数部分分别进行处理,得出结果后再合并。

整数部分:一般采用除2取余法 小数部分:一般采用乘2取整法

余数 低位 整数 高位

2 | 137 -------------- 1 0.875 2 | 68 -------------- 0 × 2 ------------- 1 2 | 34 -------------- 0 1.750 2 | 17 -------------- 1 × 2 2 | 8 -------------- 0 1.500 ------------- 1

2 | 4 -------------- 0 × 2 ------------- 1 2 | 2 -------------- 0 1.000

1 -------------- 1 高位 低位 (137)10=(10000111)2 (0.875)10=(0.1101)2

所以,(137.875)10=(10001001.111)2

2.把二进制数10011.0111转换为八进制数和十六进制数。P9

解:八进制、十六进制都是从二进制演变而来,三位二进制数对应一位八进制数,四位二进制数对应一位十六进制数,从二进制向八进制、十六进制转换时,把二进制数以小数点为界,对小数点前后的数分别分组进行处理,不足的位数用0补足,整数部分在高位补0,小数部分在低位补0。

(10 011.011 1)2=(010 011.011 100)2=(23.34)8 (1 0011.0111)2=(0001 0011.0111)2=(13.7)16 3.将八进制数23.34转换为二进制数。P9 解:(23.34)8=(010 011.011 100)2=(10011.0111)2

4.X=0.1010,Y=-0.0111,求[X-Y]补,并判断是否有溢出?P11 解:[X-Y]补=[X]补+[-Y]补

[X]补=0.1010 [Y]补=1.1001 [-Y]补=0.0111 0.1010 + 0.0111

1.0001

1

说明:当异号相减运算时,通过补码,减法运算转化为两个正数的加法运算,结果为负(符号位为1),表示运算结果溢出。

5.10010101B分别为原码、补码、BCD码表示时,对应的十进制数为多少? 解:[X]原=10010101,X=-21

[X]补=10010101,[X]原=11101011,X=-107 [X]BCD=10010101,X=95

6.简述计算机为什么能实现自动连续的运行?

解:计算机能实现自动连续的运行,是由于计算机采用了存储程序的工作原理。把解决问题的计算过程描述为由许多条指令按一定顺序组成的程序,然后把程序和处理所需要的数据一起输入到计算机的存储器中保存起来。计算机接收到执行命令后,由控制器逐条取出并执行指令,控制整个计算机协调地工作,从而实现计算机自动连续的运行。

1.2习 题

1.选择题

(1)8086是( )。 P1 A.微机系统 B.微处理器 C.单板机 D.单片机 (2)下列数中最小的数为( )。P7

A.(101001)2 B.(52)8 C.(2B)16 D.(50)10 (3)下列无符号数中,其值最大的数是( )。P7

A.(10010101)2 B.(227)8 C.(96)16 D.(150)10 (4)设寄存器的内容为10000000,若它等于-127,则为( )。P10

A.原码 B.补码 C.反码 D.ASCII码

(5)在小型或微型计算机里,普遍采用的字符编码是( )。P13

A.BCD码 B.16进制 C.格雷码 D.ASCII码 (6) 若机器字长8位,采用定点整数表示,一位符号位,则其补码的表示范围是( P12 )。 A. -(27-1) ~ 27 B. -27 ~ 27-1 C. -27 ~ 27 D. -(27-1) ~ 27-1 (7)二进制数00100011,用BCD码表示时,对应的十进制数为( )。P14 A. 23 B. 35 C.53 D.67 (8)已知[X]补=10011000,其真值为( )。P10

A.-102 B.-103 C.-48 D.-104 (9)二进制数10100101转化为十六进制是( )。P7

A.105 B.95 C.125 D.A5 (10)连接计算机各部件的一组公共通信线称为总线,它由( )。P4 A.地址总线和数据总线组成 B.地址总线和控制总线组成

C.数据总线和控制总线组成 D.地址总线、数据总线和控制总线组成 (11)计算机硬件系统应包括( )。P3

A.运算器、存储器、控制器 B.主机与外围设备

2

C.主机和实用程序 D.配套的硬件设备和软件系统 (12)计算机硬件能直接识别和执行的只有( )。 A.高级语言 B.符号语言 C.汇编语言 D.机器语言 (13)完整的计算机系统是由( )组成的。P3 A.主机与外设 B.CPU与存储器

C.ALU与控制器 D.硬件系统与软件系统 (14)计算机内进行加、减法运算时常采用( )。P10

A.ASCII码 B.原码 C.反码 D.补码 (15)下列字符中,ASCII码值最小的是( )。P13 A.a B.A C.x D.Y (16)下列字符中,其ASCII码值最大的是( )。P13 A.D B.9 C.a D.y (17)目前制造计算机所采用的电子器件是( )。P1

A.中规模集成电路 B.超大规模集成电路 C.超导材料 D.晶体管 (18)计算机中的CPU指的是( )。P3

A.控制器 B.运算器和控制器 C.运算器、控制器和主存 D.运算器

(19)计算机发展阶段的划分通常是按计算机所采用的( )。P1 A.内存容量 B.电子器件 C.程序设计语言 D.操作系统 (20)计算机系统总线中,可用于传送读、写信号的是( )。P4 A.地址总线 B.数据总线 C.控制总线 D.以上都不对 (21)通常所说的“裸机”指的是( )。P4-P5

A.只装备有操作系统的计算机 B.不带输入输出设备的计算机 C.未装备任何软件的计算机 D.计算机主机暴露在外 (22)计算机的字长是指( )。P14

A.32位长的数据 B.CPU数据总线的宽度

C.计算机内部一次并行处理的二进制数码的位数 D.CPU地址总线的宽度

(23)计算机运算速度的单位是MIPS,其含义是( )。P15

A.每秒钟处理百万个字符 B.每分钟处理百万个字符 C.每秒钟执行百万条指令 D.每分钟执行百万条指令 (24)键盘输入1999时,实际运行的ASCII码是( )。P13 A.41H49H47H46H B.51H59H57H56H C.61H69H67H66H D.31H39H39H39H 2.填空题

(1)计算机中的软件分为两大类:___________软件和_______软件。P5

3

(2)部件间进行信息传送的通路称为___________。P4

(3)为判断溢出,可采用双符号位补码进行判断,此时正数的符号用 表示,负数的符号用 表示。P11

(4)8位二进制补码所能表示的十进制整数范围是_______。P11

(5)用16位二进制数表示的无符号定点整数,所能表示的范围是_______。P12 (6)若[X]补=00110011B,[Y]补=11001100B,[X-Y]补= B。P11

(7) 十进制数255的ASCII码,表示为 ,用压缩BCD码表示为 ,其十六进制数表示为 。P13

(8)总线是连接计算机各部件的一组公共信号线,它是计算机中传送信息的公共通道,总线由 、 和控制总线组成。P4

(9)数据总线用来在 与内存储器(或I/O设备)之间交换信息。P16 (10)在微机的三组总线中, 总线是双向的。P4

(11)地址总线由 发出,用来确定CPU要访问的内存单元(或I/O端口)的地址。P4

(12)以微处理器为基础,配上 和输入输出接口等,就成了微型计算机。 3.将下列十进制数分别转换成二进制数、十六进制数。P10 (1)124.625 (2)635.05 (3)301.6875 (4)3910

4.将二进制数1101.101B、十六进制数2AE.4H、八进制数42.57Q转换为十进制数P8。 5.用8位二进制数表示出下列十进制数的原码、反码和补码。P10 (1)+127 (2)-127 (3)+66 (4)-66

6.设机器字长16位,定点补码表示,尾数15位,数符1位,问:P12 (1)定点整数的范围是多少? (2)定点小数的范围是多少?

7.请写出下列字母、符号、控制符或字符串的ASCII码。P13 (1)B (2)h (3)SP(空格) (4)5 (5)$ (6)CR(回车) (7)LF(换行) (8)* (9)Hello 8.什么是微处理器、微型计算机、微型计算机系统?P1 9.简述数据总线和地址总线的特点。P4

10.衡量微机系统的主要性能指标有哪些?P14

4

第2章 16位和32位微处理器

2.1 例 题

1.简述8086总线分时复用的特点。P25

解:为了减少引脚信号线的数目,8086微处理器有21条引脚是分时复用的双重总线,即AD15~AD0,A19/S6~A16/S3以及BHE/S7。这21条信号线在每个总线周期开始(T1)时,用来输出所寻址访问的内存或I/O端口的地址信号A19~A0以及“高8位数据允许”信号

BHE;而在其余时间(T2~T4)用来传输8086同内存或I/O端口之间所传送的数据D15~

D0以及输出8086的有关状态信息S7~S3。

2.何为时钟周期?它和指令周期、总线周期三者之间的关系是什么?P36 解:(1)时钟脉冲的重复周期称为时钟周期。时钟周期是CPU的时间基准,由CPU的主频决定。

(2)指令周期是执行一条指令所需要的时间,包括取指令、译码和执行指令的时间。指令周期由一个或多个总线周期组成,不同指令的指令周期所包含的总线周期个数是不同的,它与指令的性质与寻址方式有关。

(3)一个总线周期至少由4个时钟周期组成,分别表示为T1、T2、T3、T4。 3.8086有哪两种工作方式?主要区别是什么?

解:微处理器有两种工作方式:最小方式和最大方式。

(1)系统中只有一个CPU,对存储器和I/O接口的控制信号由CPU直接产生的单处理机方式称为最小方式,此时MN/MX接高电平;P44 (2) 对存储器和I/O接口的控制信号由8288总线控制器提供的多处理机方式称为最大方式,此时MN/MX接低电平,在此方式下可以接入8087或8089。

4.有一个16个字的数据区,它的起始地址为70A0H:DDF6H,如下图所示。请写出这个数据区首、末字单元的物理地址。P56

70A0H:DDF6H ?????? 图1.2.1 存储器单元分布图

16个字

解:首地址=70A00H+DDF6H=7E7F6H

末地址=7E7F6H+16×2-2=7E7F6H+20H-2H=7E814H

5

5.根据8086存储器读写时序图,回答如下问题:P15

图1.2.2 存储器读周期时序图

图1.2.3存储器写周期时序图

6

(1)地址信号在哪段时间内有效?P27 (2)读操作和写操作的区别?P38

(3)存储器读写时序与I/O读写时序的区别?P38 (4)什么情况下需要插入等待周期TW?P40 解:(1)在T1周期,双重总线AD15~AD0,A19/S6~A16/S3上输出要访问的内存单元的地址信号A19~A0。

(2)读操作和写操作的主要区别是:

① DT/R控制信号在读周期中为低电平,在写周期中为高电平。 ② 在读周期中,RD控制信号在T2~T3周期为低电平(有效电平);在写周期中,WR控制信号为低电平(有效电平)。

③ 在读周期中,数据信息一般出现在T2周期以后。在T2周期,AD15~AD0进入高阻态,此时,内部引脚逻辑发生转向,由输出变为输入,以便为读入数据作准备。而在写周期中,数据信息在双重总线上是紧跟在地址总线有效之后立即由CPU送上的,两者之间无高阻态。

(3)存储器操作同I/O操作的区别是:

在存储器周期中,控制信号M/IO始终为高电平;而在I/O周期中,M/IO始终为低电平。

(4)CPU在每个总线周期的T3状态开始采样READY信号,若为低电平,则表示被访问的存储器或I/O设备的数据还未准备好,此时应在T3状态之后插入一个或几个TW 周期,直到READY变为高电平,才进入T4状态,完成数据传送,从而结束当前总线周期。

2.2 习 题

1.选择题

(1)在8086/8088的总线周期中,ALE信号在T1期间有效。它是一个( )。P41 A.负脉冲,用于锁存地址信息 B.负脉冲,用于锁存数据信息 C.正脉冲,用于锁存地址信息

D.正脉冲,用于锁存数据信息

(2)8086/8088的最大模式和最小模式相比至少需增设( )。P42 A.数据驱动器 B.中断控制器 C.总线控制器 D.地址锁存器 (3)在8086CPU中,不属于总线接口部件的是( )P196 A.20位的地址加法器 B.指令队列

C.段地址寄存器 D.通用寄存器

(4)在8088系统中,只需1片8286就可以构成数据总线收发器,而8086系统中构成数据总线收发器的8286芯片的数量为( )。P33

A.1 B.2 C.3 D.4

7

(5)CPU内部的中断允许标志位IF的作用是( )。P9

A.禁止CPU响应可屏蔽中断 B.禁止中断源向CPU发中断请求 C.禁止CPU响应DMA操作 D.禁止CPU响应非屏蔽中断

(6)在8086的存储器写总线周期中,微处理器给出的控制信号(最小模式下)WR,RD,

。 M/IO分别是( )

A.1,0,1 B.0,1,0 C.0,1,1 D.1,0,0

(7)当8086CPU从总线上撤消地址,而使总线的低16位置成高阻态时,其最高4位用来输出总线周期的( )。P10

A.数据信息 B.控制信息 C.状态信息 D.地址信息

(8)8086CPU在进行I/O写操作时,M/IO和DT/R必须是( )。 A.0,0 B.0,1 C.1,0 D.1,1

(9)若在一个总线周期中,CPU对READY信号进行了5次采样,那么该总线周期共包含时钟周期的数目为( )。

A.5 B.6 C.7 D.8

(10)8086系统复位后,下面的叙述错误的是( )。 A.系统从FFFF0H处开始执行程序 B.系统此时能响应INTR引入的中断 C.系统此时能响应NMI引入的中断 D.DS中的值为0000H (11)CPU访问内存时,RD信号开始有效对应的状态是( )。 A.T1 B.T2 C.T3 D.T4

(12)下列说法中属于最小工作模式特点的是( )。P31

A.CPU提供全部的控制信号 B.由编程进行模式设定 C.不需要8286收发器 D.需要总线控制器8288 (13)8088CPU的指令队列缓冲器由( )组成。P18

A.1字节移位寄存器 B.4字节移位寄存器 C.6字节移位寄存器 D.8字节移位寄存器 (14)在8086/8088CPU中,与DMA操作有关的控制线是( )。P28 A.NMI B.HOLD

C.INTR D.INTA

(15)8086CPU中,不属于EU部分的寄存器是( )P19 A.IP B.BP C.DI D.SP

2.填空题

(1)8086/8088微处理器被设计为两个独立的功能部件: 和 。P10

8

(2)当8086进行堆栈操作时,CPU会选择 段寄存器来形成20位堆栈地址P22。 (3)8086CPU时钟频率为5MHz时,它的典型总线周期为 ns。P36 (4)8086CPU的最大方式和最小方式是由引脚 信号的状态决定。P25 (5)当Intel 8086工作在最大方式时,需要 芯片提供控制信号。P34

(6)若8086系统用8位的74LS373来作为地址锁存器,那么需要 片这样的芯片。P33

(7)根据功能不同,8086的标志位寄存器可分为 标志和 标志。P21 (8)8086/8088CPU中与中断操作有关的控制标志位是__________,与串操作有关的控制标志位是__________,与单步操作有关的控制标志位是__________。P21

(9)8086CPU在执行指令过程中,当指令队列已满,且EU对BIU又没有总线访问请求时,BIU进入 状态。P19

(10)复位后,8086将从 地址开始执行指令。P37

(11)8086/8088CPU的A19/S6~A16/S3在总线周期的T1 期间,用来输出__________位地址信息中的__________位,而在其它时钟周期内,用来输出__________信息。P27 (12)8086CPU工作在最小模式下,控制数据流方向的信号是__________、__________、__________、__________、__________。P27

(13)当8086/8088CPU在进行写数据操作时,控制线RD、WR应分别输出______电平、______电平。P27

(14)为了减轻总线负载,总线上的部件大都具有三态逻辑,三态逻辑电路输出信号的三个状态是__________、__________、__________。P28

3.完成下列各式补码运算,并根据结果设置标志位SF、ZF、CF、OF。P21 (1) 96+(-19) (2) 90+107 (3) (-33)+14 (4) (-33)+(-14)

4.写出下列存储器地址的段地址、偏移地址和物理地址。P20 (1)2314H:0035H (2)1FD0H:000AH

5.在8086系统中,下一条指令所在单元的物理地址是如何计算的?P22

6.若某存储器容量为2KB,在计算机存储系统中,其起始地址为2000H:3000H,请计算出该存储器物理地址的范围。P22

7.8086的复位信号是什么?有效电平是什么?CPU复位后,寄存器和指令队列处于什么状态?P27

8.8086CPU标志寄存器中的控制位有几个?简述它们的含义。P21

9.设8088的时钟频率为5MHz,总线周期中包含2个TW等待周期。问:P36 (1)该总线周期是多少?

(2)该总线周期内对READY信号检测了多少次? 10.8086CPU与8088CPU的主要区别有哪些?P16

11.8086/8088CPU由哪两部分构成?它们的主要功能是什么?P17 12.8086CPU系统中为什么要用地址锁存器?P32

13.8086/8088CPU处理非屏蔽中断NMI和可屏蔽中断INTR有何不同?P28 14.简述8086/8088CPU中指令队列的功能和工作原理。P37

15.简述8086/8088CPU中DEN、DT/R控制线的作用。P29

9

16.说明空闲状态的含义。

17.简述时钟发生器8284的功能。

18.简要说明8086、80286、80386CPU的主要区别。

10

XOR AL,BL OR BL,AL

(AL)= _______,(BL)= _______。 (8) 执行下列指令后, MOV AX,1234H MOV CL,4 ROL AX,CL DEC AX MOV CX,4

MUL CX HLT

寄存器AH的值是 ,寄存器AL的值是 ;寄存器DX的值是 。 (9)已知(AX)=0FFFFH,(DX)=0001H MOV CX,2 LOP:SHL AX,1 RCL DX,1

LOOP LOP

程序段执行后,(DX)= , (AX)= 。 (10)填写执行下列程序段后的结果。 MOV DX,8F70H MOV AX,54EAH OR AX,DX AND AX,DX

NOT AX

XOR AX,DX TEST AX,DX

(AX)=__________ 、 (DX)=__________ 、 SF=__________

OF=________、 CF=_________、 PF=_________ 、 ZF=__________ (11) DAT1 DW 12H,23H,34H,46H,57H

DAT2 DW 03H

LEA BX, DAT1 ADD BX, DAT2 MOV DX,[BX] MOV AX,4[BX]

SUB AX,DX

执行上列程序段后,AX的内容为 。

3.设DS=2000H,SS=1500H,(ES)=3000H,(SI)=00B0H,(BX)=1000H,(BP)=0020H,指出下列指令的源操作数的寻址方式是什么?若该操作数为存储器操作数,请计算其物理地址。

(1) MOV AX,DS:[0100H]

16

(2) MOV BX,0100H (3) MOV AX,ES:[SI] (4) MOV CL,[BP] (5) MOV AX,[BX][SI] (6) MOV CX,BX

(7) MOV AL,3[BX][SI] (8) MOV AL,[BX+20]

4.段地址和偏移地址为3017:000A的存储单元的物理地址是什么?如果该存储单元位于当前数据段,写出将该单元内容放入AL中的指令。

5.判别下列指令的对错,如有错误,请指出其错误所在。 (1) MOV AX,BL (2) MOV AL,[SI] (3) MOV AX,[SI] (4) PUSH CL

(5) MOV DS,3000H (6) SUB 3[SI][DI],BX (7) DIV 10

(8) MOV AL,ABH

(9) MOV BX,OFFSET [SI] (10) POP CS

(11) MOV AX,[CX]

(12) MOV [SI],ES:[DI+8] (13) IN 255H,AL (14) ROL DX,4

(15) MOV BYTE PTR [DI],1000 (16) OUT BX,AL

(17) MOV SP,SS:DATA_WORD[BX][SI] (18) LEA DS,35[DI] (19) MOV ES,DS (20) PUSH F 6.设(DS)=1000H,(AX)=050AH,(BX)=2A80H,(CX)=3142H,(SI)=0050H,(10050H)=3BH,(10051H)=86H,(11200H)=7AH,(11201H)=64H,(12AD0H)=0A3H,(12AD1H)=0B5H。试分析下列指令分别执行后,AX中的内容。 (1) MOV AX,1200H

(2) MOV AX,DS:[1200H] (3) MOV AX,[SI]

(4) OR AX,[BX] [SI] (5) MOV AX,50H [BX]

7.设某用户程序(SS)=0925H,(SP)=30H,(AX)=1234H,(DS)=5678H,如有两条进栈指令: PUSH AX

17

PUSH DS

试列出两条指令执行后,堆栈中各单元变化情况,并给出堆栈指针SP的值。

8.设(AL)=2FH,(BL)=97H,试写出下列指令分别执行后CF、SF、ZF、OF、AF和PF的内容。

(1) ADD AL,BL P65 (2) SUB AL,BL

(3) AND AL,BL P72 (4) OR AL,BL (5) XOR AL,BL

9.执行下列程序段后,AX和CF中的值是多少?

STC MOV CX,0403H MOV AX,0A433H

SAR AX,CL P73 XCHG CH,CL SHL AX,CL

10.设(AX)=0119H,试分析,执行下列程序段后,AX和CF的内容分别是多少? MOV CH,AH ADD AL,AH DAA P70 XCHG AL,AH ADC AL,34H DAA

XCHG AH,AL

HLT

11.分析下面的程序段,执行后AX和IP的内容为多少? MOV BX,16

MOV AX,0FFFFH

MUL BX P79 JMP DX

12.下列程序段运行后,HCOD和HCOD+1两字节单元内容是什么? HEX DB ‘0123456789ABCDEF’ HCOD DB ?,? ┇

MOV BX,OFFSET HEX MOV AL,1AH MOV AH,AL

AND AL,0FH P72 XLAT

MOV HCOD[1],AL

18

MOV CL,12 SHR AX,CL

XLAT

MOV HCOD,AL

13.下列程序运行后,Z单元的内容是多少?简要说明程序的功能。(设X、Y单元的内容分别为90H、0B0H)

MOV AX,0 P20 MOV AL,X ADD AL,Y ADC AH,0 MOV BL,2

DIV BL MOV Z,AL

14.分析下面程序段, 程序运行后AL、BL中的内容分别是多少? MOV AL,200 P20 SHR AL,1 MOV BL,AL MOV CL,2 SHR AL,CL ADD AL,BL

15.分析下面程序段, 程序运行后AL、CF中的内容分别是多少? MOV AH,0 P20 MOV AL,01H MOV BL,4

NEG AL DIV BL

MOV CL,02H RCL AL,CL

16.试分析下列程序段执行后,CL内容分别是什么? CF是1还是0? MOV AL,1 P20 MOV BL,AL MOV CL,AL

NEG AL

ADC CL,BL

17.下列程序运行到NEXT时,CX和ZF的内容分别是多少? STR1 DB ‘COMPUTERNDPASCAL’ SCA DB ‘N’ ┇

LEA DI,STR1 P21 MOV AL,SCA

19

MOV CX,10H

CLD

REPNE SCASB NEXT:??

18.已知DS和ES指向同一个段,且当前数据段从0000H到00FFH单元内容分别为01H,02H,03H,?,0FFH,00H。问下列程序段执行后,0000~0009H的内容是些什么值。 MOV SI,0000H MOV DI,0001H MOV CX,0080H

CLD

REP MOVSB P66

19.执行下列程序段后,SP及CF的值分别是多少? MOV SP,6000H PUSHF P63 POP AX

OR AL,01H

PUSH AX POPF

20.填入适当指令,使程序段能实现将AL中低位十六进制数转换为ASCII码。 AND AL,0FH ADD AL,30H

CMP AL,3AH P65 JL LP2

_______________ LP2: ......

20

第4章 汇编语言程序设计

4.1 例 题

1.设有一数据段DSEG,其中连续定义下列5个变量或常量,用段定义语句和数据定义语句写出数据段:P48

(1)DATA1为一字符串变量:‘WELCOME TO MASM!’。 (2)DATA2为十进制字节变量:32,90,-20。 (3)DATA3为连续10个00H的字节变量。

(4)DATA4为双字变量,其初始值为12345678H

(5)COUNT为一符号常量,其值为以上四变量所用字节数。 解:定义数据段如下:

DSEG SEGMENT

DATA1 DB ‘WELCOME TO MASM!’ DATA2 DB 32,90,-20 DATA3 DB 10 DUP (00H) DATA4 DD 12345678H COUNT EQU $-DATA1

DSEG ENDS

其中$–DATA1中$表示当前汇编地址计数器值,用其减去DATA1的偏移地址可得该数据段所用字节数。

2.设有以下数据段定义:P102

DSEG SEGMENT X1 EQU 30H X2 EQU 70H X3 EQU 0F7H DSEG ENDS

给出下列指令分别执行后,AL中的内容是多少? (1) MOV AL,X1+X2

(2) MOV AL,X2 MOD X1 (3) MOV AL,X1 EQ X3 (4) MOV AL,X1 AND X3 (5) MOV AL,X1 OR X3 (6) MOV AL,X2 GT X1 解:(1) (AL)= 30H+70H = 0A0H (2) (AL)= 70H MOD 30H = 10H

(3) X1 EQ X3 = 30H EQ 70H 为逻辑运算,其值为假,故(AL)=00H

21

(4) (AL) = X1 AND X3 = 30H AND 0F7H = 30H P98 (5) (AL)= X1 OR X3 = 30H OR 0F7H = 0F7H

(6) X2 GT X1 = 70H GT 30H为逻辑运算,其值为真,故(AL)=0FFH 3.分析下列程序段,回答所提问题。 P98

DA1 DW 1F28H

DA2 DB ? ......

XOR BL,BL

MOV AX,DA1 LOP: AND AX,AX JZ EXIT SHL AX,1

JNC LOP INC BL JMP LOP

EXIT:MOV DA2,BL 试问:(1)程序段执行后,DA2字节单元内容是什么?

(2)在程序段功能不变情况下,是否可用SHR指令代替SHL指令? 解:

XOR BL,BL ;(BL)=0

MOV AX,DA1 ;(AX)= 1F28H

LOP:AND AX,AX ;使标志位根据AX中内容而变化 JZ EXIT ;若(AX)=0,则转EXIT

SHL AX,1 ;逻辑左移1位,移出位进入CF JNC LOP

INC BL ;如CF=1,则BL加1

JMP LOP

EXIT:MOV DA2,BL

(1)如上分析,该程序段被用来统计DA1中内容含二进制1的个数。DA2字节单元内容为DA1中内容含二进制“1”的个数,也即(DA2)=7。 (2)无论逻辑左移还是逻辑右移指令,均能将DA1中的二进制数位一位一位地移到CF中,其程序段功能不变,故可用SHR指令代替SHL指令。 4.分析下列程序段,回答所提问题。 DA1 DB 87H

DA2 DB ? ...... XOR AH,AH MOV AL,DA1 MOV CL,4 SHR AL,CL

22

MOV DL,10

MUL DL

MOV BL,DA1 AND BL,0FH ADD AL,BL MOV DA2,AL 试问:(1)程序段执行后,DA2字节单元内容是什么?

(2)在程序段功能不变情况下,是否可用SAR指令代替SHR指令? 解: P73-74

XOR AH,AH ;(AH)=0

MOV AL,DA1 ;(AL)= 87H MOV CL,4 ;

SHR AL,CL ; 取AL的高四位,(AL)=07H MOV DL,10

MUL DL ;高四位的数字乘以10 MOV BL,DA1

AND BL,0FH ;取DA1的低四位 ADD AL,BL

MOV DA2,AL ;相加得到(DA2)=57H

分析:将DA1的高四位乘以10,再加上低四位,实际完成了将DA1中的BCD码转换为二进制的运算。

由分析得:(DA2)=57H。

在程序段功能不变情况下,不能用SAR指令代替SHR指令,因为SAR不能将AL的高四位从其中分离出来。 5. ......

DA_B DB 0CH,9,8,0FH,0EH,0AH,2,3,7,4 ...... XOR AX, AX

XOR CL,CL XOR BX,BX

LOP: TEST DA_B[BX],01H JE NEXT

ADD AL,DA_B[BX] INC AH

NEXT:INC BX INC CL CMP CL,10

JNE LOP 试问:(1)上述程序段执行后,AH、AL寄存器中的内容是什么? (2)若将“JE NEXT”指令改为“JNE NEXT”,那么AH、AL寄存器中的内

23

容又是什么? 解:

XOR AX,AX ;(AX)=0

XOR CL,CL ;(CL)=0 XOR BX,BX ;(BX)=0 LOP: TEST DA_B[BX],01H JE NEXT ;若DA_B[BX]中二进制数的最低位为0,转NEXT ADD AL,DA_B[BX] ;否则累加该数到AL INC AH ;统计奇数个数到AH

NEXT:INC BX ;修改指针,指向下个二进制数

INC CL CMP CL,10

JNE LOP ;对10个数完成以上操作后,停止

分析可知,该程序实际是对10个数中的奇数求和。所以,(AH)=4;(AL)=34。 若将“JE NEXT”指令改为“JNE NEXT”,则程序功能变为统计偶数的个数,并累加它们的值,故(AH)=6;(AL)=50。

6.编写完整的汇编源程序,统计下面定义的数据缓冲区BUF中,非数字字符的个数,放入COUNT单元。设该数据缓冲区最后一个字符为‘$’, 数字字符指 ‘0’~‘9’。 DSEG SEGMENT P30

BUF DB ‘4334as432bbGGGn34kkkk$’

COUNT DW 0 DSEG ENDS 解:分析:(1)由于程序必须反复地从BUF中取出字符并判断,故采用循环程序结构。 (2)BUF缓冲区的最后一个字符为‘$’,故采用条件判断法来控制循环结束。 (3)非数字字符的个数是指ASCII码小于30H或大于39H的字符。 程序设计如下:

DSEG SEGMENT

BUF DB ‘4334as432bbGGGn34kkkk$’

SUM DW 0 DSEG ENDS

SSEG SEGMENT STACK STK DB 100 DUP (?) SSEG ENDS CSEG SEGMENT

ASSUME DS:DSEG,SS:SSEG,CS:CSEG START: MOV AX,DSEG MOV DS,AX

MOV SI,OFFSET BUF MOV DX,0 LP0: MOV AL,[SI]

24

CMP AL,‘$’ JE EXIT CMP AL,‘0’ JNC LP1 INC DX JMP LP2

LP1: CMP AL,3AH JC LP2 INC DX LP2: INC SI

JMP LP0

EXIT: MOV COUNT,DX MOV AH,4CH INT 21H CSEG ENDS

END START

4.2 习 题

1.选择题

(1)在计算机内部,计算机能够直接执行的程序语言是( )。K4.1 A.汇编语言 B.高级语言 C.机器语言 D.C语言 (2)执行下面的程序段后, BX的内容是( )。K4.2

NUM= 100

MOV BX, NUM NE 50

A.50 B.0 C.0FFFFH D.1 (3)数据定义 BUF DW 1,2,3,4 K4.2

执行指令MOV CL,SIZE BUF后,CL寄存器的内容是( )。 A.1 B.0 C.0FFFFH D.2

(4)假设VAR为变量,则指令MOV SI,OFFSET VAR的源操作数的寻址方式是(K4.3) A.间接寻址 B.存储器寻址 C.寄存器寻址 D.立即寻址 (5)数据定义BUF DB ‘1234’,执行指令MOV CL, LENGTH BUF后,CL寄存器的内容是( )K4.2

A. 1 B.2 C.3 D.4 (6)设数据段定义如下: DATA SEGMENT ORG 0100H X1 DB 25,‘25’ X2 DW ? Y1 EQU X1

25

表1.5.3 例4存储器芯片的地址范围

高位地址线 组别 A19 A18 A17 C 0 A16 B 0 A15 A 1 低位地址线 A14~ A1 A0 地址 范围 1#(偶片) 第1组 1 2#(奇片) 3#(偶片) 第2组 1 4#(奇片) 000000000000 × C8000H 1 ~ ~ ~ 111111111111 × CFFFFH 000000000000 × D0000H 1 0 1 0 ~ ~ ~ 111111111111 × D7FFFH

5.2 习 题

1.选择题

(1)内存又称主存,相对于外存来说,它的特点是( )。P117 A.存储容量大,价格高,存取速度快 B.存储容量小,价格低,存取速度慢 C.存储容量大,价格低,存取速度快 D.存储容量小,价格高,存取速度快 (2)集成度最高的存储线路是( )。 P117

A.六管静态线路 B.六管动态线路 C.四管动态线路 D.单管动态线路 (3)EPROM不同于ROM,是因为( )。P118

A.EPROM 只能改写一次 B.EPROM只能读不能写 C.EPROM 可以多次改写 D.EPROM断电后信息丢失 (4)在下面的多组存储器中,断电或关机后信息仍保留的是( )。P118 A.RAM、ROM B.ROM、EPROM C.SRAM、DRAM D.PROM、RAM

(5)下列几种存储芯片中,存取速度最快和相同容量的价格最便宜的分别是(P119)。 A.DRAM、SRAM B.SRAM、DRAM C.DRAM、ROM D.SRAM、EPROM

(6)对于8086CPU,用来选择低8位数据的引脚信号是( )。P126 A.AD0 B.AD15 C.AD7 D.AD8 (7)8086的存储系统采用“字节编址结构”,现有一个存储字地址为45678H,则该地址所在的存储体称为( )。P126

A.偶存储体、其数据线接在低8位的D7~D0上 B.奇存储体、其数据线接在低8位的D7~D0上

36

C.偶存储体、其数据线接在高8位的D15~D8上 D.奇存储体、其数据线接在高8位的D15~D8上

(8)若由1K×1位的RAM芯片组成一个容量为8K字(16位)的存储器时,需要该芯片数为( )。 P119

A.128片 B.256片 C.64片 D.32片

(9)在8086中,用一个总线周期访问一个字数据时,必须是( )。P126

A.BHE=0,A0=0 B.BHE=0,A0=1

C.BHE=1,A0=0 D.BHE=1,A0=1

(10) 8086组成的64KB的存储空间,选用EPROM的最佳方案是采用芯片为( )。 A.1片64K×8位 B.2片32K×8位 C.4片16K×8位 D.8片8K×8位

(11)如果存储体有1024个存储单元,采用双译码(行列译码)方式,则所需的地址译码输出线的最少数目是( )。P130

A.16 B.32 C.64 D.1024

(12)若CPU访问由256K×1的DRAM芯片组成的512K×8的存储系统,则CPU需使用的地址引脚数、DRAM的地址引脚数和所需的片选信号数依次为( )。P120

A.19,18,2 B.18,9,8 C.19,18,8 D.19,9,2

(13)若用8086CPU和其他芯片组成微机系统,要求内存容量中的EPROM为8KB,SRAM为16KB,所采用的EPROM和SRAM的芯片类型及数量在以下方案中最佳的是( )。P118

A.2片2732和2片6264 B.2片2732和8片6116 C.1片2764和2片6264 D.1片2764和8片6116 2.填空题

(1)P118按存储介质,存储器可分为: 存储器、 存储器和光盘存储器。

(2)P118ROM一般可分为:掩膜ROM、PROM、 和 四种。 (3)P117存储器是计算机中的记忆设备,主要用来存放 和 。 (4)P117计算机的内存一般是由 存储器和 存储器构成。 (5)P119用32片4K×4位的存储芯片构成字长为8位的存储系统的容量为 ,共需寻址线 根,每个存储芯片的最少引出脚是 根。

(6)8086CPU既可采用字访问方式,也可采用字节访问方式。存储器是由控制信号 和A0来决定的。

(7)P119计算机存储器的容量一般是以KB为单位的,其中1 KB等于 字节。 (8)P118存储记忆单元是构成存储器的最基本单元,用来存储 位二进制信息。 (9)P118动态存储器中的信息可以随机读写,但需不断 ,使其保持所存的信息。

3.半导体随机存取存储器的种类有那些?各有什么特点? 4.P118简述半导体只读存储器的种类和特点。 5.P132存储器与CPU连接时应考虑哪些问题?

37

6.叙述高位地址总线译码方法的种类和特点。

7.叙述8088和8086CPU对存储器进行字访问的异同。

8.设有一个具有15位地址和16位字长的存储器,试计算: (1)该存储器能存储多少字节信息?

(2)如果存储器由2K×4位的RAM芯片组成,需多少RAM芯片?需多少位地址进行芯片选择?

9.某微机系统中,CPU和EPROM的连接如图1.5.3所示,求此存储芯片的存储容量及地址空间范围。

A15~A0A15~ A0 A14A13≥1A12&A11~A0CPUA15IO/MRDD7~D01≥1EPROM&CE1OED7~D0 D7~D0D7~D0 图1.5.3 CPU和EPROM的连接图

10.某8088存储器系统,试使用6116、2732和74LS138译码器构成一个存储容量为12KB ROM(00000H~02FFFH)、8KB RAM(03000H~04FFFH)的存储系统。

11.微机存储器系统由3片RAM芯片组成,如图1.5.4所示,其中U1有12条地址线,8条数据线,U2、U3各有10条地址线,8条数据线,试计算芯片U1和U2、U3的地址范围以及该存储器的总容量。

A10~A1A11101074LS138AY0BY1CY2G2AY374LS138Y4G2BY7G110U1CS&≥1A12A13A19~A15A14≥1U2CSA0M/IOU3CS1≥1

图1.5.4 微机存储器系统图

38

12.16位微机存储器系统如图1.5.5所示,试分析存储器的类型和容量,并说明各存储器芯片的奇偶性和地址范围。

A14A15A16&A18A17A19A0M/IOA13~A1A14AY0&BY1CY2.G2A74LS13874LS..G2BY7G1A14A15AA1817A19A16&BHEM/IOAY0&BY1CY2.G2A74LS13874LS..G2BY7G1A13~A0CEA13~A0CEA12~A0CE OE A12~A0CEU1WRRDD7~D0D15~D8D7~D0 WE OE U2D7~D0 WE OE U3D7~D0 U4D7~D0 OE

图1.5.5 微机存储器系统图

39

第6章 输入输出与中断

6.1 例 题

1.简述查询式数据传送的工作过程。

解:查询式数据传送又称为“条件传送方式”。采用查询式方式传送数据前,CPU必须对外设的状态进行检测。其步骤如下:

(1)执行一条输入指令,读取所选外设的当前状态。

(2)如果外设“忙”或“未准备就绪”,则返回继续检测外设的状态。 (3)如果外设状态为“空”或“准备就绪”,则发出一条输入、输出指令,进行一次数据传送。

2.简述8086CPU响应INTR的中断过程。

解: 当CPU在INTR引脚上收到一个高电平中断请求信号并且中断允许标志IF为1时,会在当前指令执行完毕后开始响应中断请求。具体过程如下:

(1)执行中断响应总线周期。它包含两个连续的中断响应总线周期,在此期间,CPU首先从INTA引脚发出两个负脉冲,当外设接收到第二个负脉冲时,把中断类型码从数据总线上发给CPU。

(2)将标志寄存器的内容压入堆栈。 (3)把标志寄存器的IF和TF清0。

(4)保护断点,即把CS和IP的内容压入堆栈。

(5)根据中断类型码查找中断向量,并转入相应的中断处理程序。

(6)恢复断点和标志寄存器。依次从堆栈中弹出IP、CS和标志寄存器的内容。

3.若8086系统采用单片8259A,其中断类型码为46H,试问其中断向量表的中断向量地址是多少?这个中断源应连向IRR的哪一个输入端?若中断服务程序的入口地址为AB00H:0C00H,则其向量区对应的四个单元的值依次为多少?

解: (1)若中断类型码为n,中断向量地址为4n,所以,中断向量地址=46H×4=118H。 (2)中断类型码是由初始化命令字ICW2设置的。根据题意,中断类型码为46H=01000110B,低3位为110B,故该中断源连接到IR6的输入端。

(3)中断向量表中,前两个字节为IP值,后两个字节为CS值,则其向量区对应的四个单元的值依次为00H、0CH、00H、0ABH。

4.已知中断向量地址0020H~0023H的单元中依次存放40H、00H、00H、01H,还已知INT 8指令本身所在的地址为9000H:00A0H。若SP=0100H,SS=0300H,标志寄存器F=0240H,试指出在执行INT 8指令,刚进入它的中断服务程序时,SP、SS、IP、CS和堆栈顶上三个字的内容。

解: SP=0100H-6=00FAH

SS=0300H

40

本文来源:https://www.bwwdw.com/article/wm36.html

Top