微机原理与接口技术(苏州大学出版社) - 习题答案

更新时间:2024-05-11 20:00:01 阅读量: 综合文库 文档下载

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

习 题

习题一

1.1 电子计算机分成几代?各代计算机有那些特点?

解:大体上可以分为五代(电子管、晶体管、集成电路、VLSI,以及智能超级计算机时代),但是第五代计算机的定义尚未统一,也有第六代计算机的说法。 1.2 电子计算机有那些特点?有那些主要的应用?

解:速度快、精度高、具有记忆与逻辑判断能力、自动执行程序,交互性能好,多种信息表达方式,等等。 主要应用包括:科学计算、自动控制、信息处理、辅助设计、办公自动化、娱乐教育、通讯、电子商务,等等。

1.3 微型计算机与大中型计算机的主要区别是什么?

解:微型计算机广泛采用高集成度的器件,尽量做到小型化,以便家庭、办公室和移动便携的商业应用。 1.4 当前微型计算机的发展趋势是什么?

解:(1) 发展高性能的32位微处理器;(2) 发展专用化的单片微型计算机;(3) 发展带有软件固化的微型计算机;(4) 发多微处理机系统和计算机网络;(5) 充实和发展外围接口电路。

1.6 为什么计算机采用二进制作为运算的基础?为什么计算机中同时又采用十进制和十六进制表示数字? 解:二进制数的运算简单且易于进行逻辑判断,与此相对应的两电平数字电路也容易实现且工作可靠。采用十六进制是为了简化表达,因为一位十六进制数字等于四位二进制数字。采用十进制是为了与常人的思维方式兼容,便于一般人员使用计算机。

1.7 二进制数字与十六进制数字之间有什么关系?

解:一位十六进制数字等于四位二进制数字。例如1010B用十六进制表示即为0AH 1.8 什么是模?钟表系统中小时、分钟、秒计数的模各是多少?

解:模数从物理意义上讲,是某种计量器的容量。在计算机中,机器表示数据的字长是固定的。对于n位数来说,模数的大小是:n位数全为1,且最末位再加1。 小时的模是12,分钟的模是60,秒的模是60。

1.9 计算机中为什么大都采用补码表示数据?它有什么优点?

解:数的原码表示形式简单,适用于乘除运算,但用原码表示的数进行加减法运算比较复杂,引入补码之后,减法运算可以用加法来实现,从而简化机器内部硬件电路的结构,且数的符号位也可以当作数值一样参与运算,因此在计算机中大都采用补码来进行加减法运算。而且用补码表示数据,0就只有一种表示方法。 1.10 什么是ASCII码?它能表示多少信息?

解:ASCII码英文全称America Standard Code for Information Interchange,中文意思:美国信息交换标准码。ASCII码划分为两个集合:128个字符的标准ASCII码和附加的128个字符的扩充和ASCII码。第0~32号及第127号(共34个)是控制字符或通讯专用字符,第33~126号(共94个)是字符,其中第48~57号为0~9十个阿拉伯数字;65~90号为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。在计算机的存储单元中,一个ASCII码值占一个字节(8个二进制位),其最高位(b7)用作奇偶校验位。

1.11 什么是计算机发展中的“摩尔定律”?

解:30多年前,37岁的美国科学家戈登·摩尔在一本杂志上发表了一篇文章,大胆提出了后来为世人称之为\摩尔定律\的论 述。摩尔在文中提出了这样的观点:处理器(CPU)的功能和复杂性每年(其后期减慢为18个月)会增加一倍,而成本却成比例地递减。

1.12 分别用二进制、八进制和十六进制表示下列十进制数据: (1)100 (3)1000

(2)200 (4)10000

解:(1)1100100,144,64 (2)11001000,310,C8

文件名:微机原理与接口技术习题

第 1 页 共 61 页

错误!未指定书签。与接口技术

(3)1111101000,1750,3E8 (4)10011100010000,23420,2710 1.13 将下列十进制数转换为二进制数: (1)175 (3)0.625

(2)257 (4)0.156250

解:(1)10101111(2)100000001(3)0.101(4)0.00101 1.14 将下列二进制数转换为BCD码: (1)1101

(2)0.01

(4)11011.001

(3)10101.101

解:(1)00010011(2)0.00100101 (3)00100001.011000100101 (4)00100111.000100100101

1.15 将下列二进制数分别转换为八进制数和十六进制数: (1)10101011

(2)1011110011

(4)11101010.0011

(3)0.01101011

解:(1)253,AB(2)1363, 2F3(3)0.326,0.6B(4)352.14,EA.3 1.16 分别选取字长为8位和16位,写出下列数据的原码、反码。 (1)X= +31

(2)Y= -31 (4)W= -169

(3)Z= +169

解:(1)00011111,00011111;0000000000011111,0000000000011111 (2)10011111,11100000;1000000000011111,1111111111100000 (3)0000000010101001,0000000010101001 (4)1000000010101001,1111111101010110

1.17 分别选取字长为8位和16位,写出下列数据的原码、补码。 (1)X= +65

(2)Y= -65 (4)W= -257

(3)Z= +129

解:(1)01000001,01000001;0000000001000001,0000000001000001 (2)11000001,10111111;1000000001000001,1111111110111111 (3)0000000010000001,0000000010000001 (4)1000000100000001,1111111011111111

1.18 已知数的补码形式表示如下,分别求出数的原码与真值。 (1)[X]补= 0 .10011 (3)[Z]补= FFFH

解:(1)0.10011,0.59375 (2)1.01101,-0.40625 (3)801H,-1 (4)800H,-0

1.19 如果将FFH与01H相加,会产生溢出吗? 解:不会(FF=-1,-1+1=0)

1.20 选取8位字长,分别用补码计算下列各式,并且判断是否有进位及溢出?(首先转化为补码表示,运算后再判断)

(1)01111001+01110000 (3)01111100-01111111

(2)-01111001-01110001 (4)-01010001+01110001

(2)[Y]补= 1 .10011 (4)[W]补= 800H

解:(1)11101001 最高有效位有进位,符号位无进位,有溢出

文件名:微机原理与接口技术习题 第 2 页 共 61 页

习 题

(2)00010110 最高有效位无进位,符号位有进位,有溢出 (3)11111101 最高有效位无进位,符号位无进位,无溢出 (4)00100000 最高有效位有进位,符号位有进位,无溢出 1.21 用16位补码计算下列各式,并判断结果是否有进位及溢出:

(1)1234+5678H

(2)8888H-9999H

(3)-3456H-8899H

(4)-7788H+0FFFFH

解:(1)68ACH,最高有效位无进位,符号位无进位,无溢出 (2)8001H, 最高有效位有进位,符号位有进位,无溢出 (3)4311H,最高有效位有进位,符号位有进位,无溢出 (4)0879H,最高有效位无进位,符号位有进位,有溢出

1.22 分别写出用下列表示方法所能够表示的有符号和无符号数据的范围:

(1)8位二进制 (3)16位二进制

(2)10位二进制 (4)32位二进制

解:(1)-128--+127,0—255 (2)-512--+511,0—1023 (3)-32768--+32767,0—65535

(4)-2147483648--+2147483647,0--4294967296 1.23 分别写出下列字符串的ASCII码:(书13、14页) (1)10abc

(2)RF56

(3)Z#12

(4)W=-2

解:(1)00110001001100000110000101100010 (2)01010010010001100011010100110110 (3)01011010001000110011000100110010 (4)01010111001111010010110100110010

1.24 写出下列数字所代表的无符号数、有符号数和ASCII码:

(1)89H (3)1234H

(2)48H (4)8899H

解:(1)137,-9,0011100000111001 (2)72,+72,0011010000111000

(3)4660,+4660,00110001001100100011001100110100 (4)34969,-2201,00111000001110000011100100111001

1.25 已知[x+y]补=7001H,[x-y]补=0001H,试求[2x]补,[2y]补,[x]补,[y]补,x和y。 解:7002H,7000H,3801H,3800H,3801H,3800H

1.26 对于字长为24位和32位的二进制补码,分别写出其数据的表示范围的一般表达式。

各自所能够表示的负数的最小值与正数的最大值是多少?

2323解:-2 -2

-- +2-1,-8388608,+8388607

31-- +2

31-1,-2147483648,+2147483647

(2)-4.825 (4)-8800

1.27 将下列十进制数转换为24位(8位阶符阶码+16位符号及尾数)浮点数:(书6页)

(1)+8.5 (3)12.48

解:(1)00000100 0100010000000000 (2)00000011 1100110100110011 (3)00000100 0110001111010111 (4)00001110 1100010011000000

文件名:微机原理与接口技术习题 第 3 页 共 61 页

错误!未指定书签。与接口技术

1.28 设二进制浮点数的阶码为3位、阶符1位,尾数为6位、尾符1位,分别将下列各数

表示成规格化的浮点数:

(1)1111.0111B (3)-12/128

(2)-1111.10101B (4)189/64

解:(1)01000111101 (3)10111110000

(2)01001111110 (4)00100101111

习题二

2.1 典型的“与”门、“或”门与“非”门是用什么电路实现的? 解:可以用简单的二极管和三极管实现(详见电子技术基础教材)。 2.2 试利用三种基本门电路设计Y=A+B+C的逻辑电路。(或门) 解:

A B C ?1 A Y B C & Y

题2.2 题2.3 2.3 试利用三种基本门电路设计Y=A?B?C的逻辑电路。(与门)

2.4 什么是三态门?什么情况下需要使用三态门?试分析三态门的工作原理。 解:高电平,低电平,高阻态称为三态。可以具备这三种状态的门器件就叫做三态门。 2.5 试利用3-8译码器74LS138设计一个4-16译码器。 解:

2.6 组合逻辑电路与时序逻辑电路有什么区别?各自的用途是什么?

解:组合逻辑电路可以有若个输入变量和若干个输出变量,其每个输出变量是其输入的逻辑函数,其每个时刻的输出变量的状态仅与当时的输入变量的状态有关,与本输出的原来状态及输入的原状态无关,也就是输入状态的变化立即反映在输出状态的变化。

时序逻辑电路任意时刻的输出不仅取决于该时刻的输入,而且还和电路原来的状态有关。也就是说,组合逻辑电路没有记忆功能,而时序电路具有记忆功能。 2.7 布尔代数和真值表是怎样的关系?各自的特点是什么?

文件名:微机原理与接口技术习题 第 4 页 共 61 页

习 题

解:布尔代数亦称开关代数或逻辑代数,可写成下述表达式:Y=f(X,Y,Z, ?)。它有两个特点:1、其中的变量X,Y,Z, ?等都只有两种可能的数值:0和1。2、函数f只有三种基本逻辑操作:“与”、“或”及“非”。

真值表又称功能表,它是指由自变量的各种取值组合而成,反映与函数值之间对应关系的一种表格。函数取值为“1”的项数,表明函数运算多项式中的项数。 从真值表写出布尔代数式的方法可以用下面两段话来描述:

⑴ 写布尔代数式先看真值表中结果为1的项,有几项就有几个“或”项;

⑵ 每一项的各因素间是“与”关系。写该项时每个因素都写上,然后酌情取“反”。至于哪个因素要取反,要看该因素在这项里是否是“0”状态,是“0”状态则取“反”,否则不取“反”。 2.8 简述TTL电路和CMOS电路的异同之处和各自的特点。 解:TTL和CMOS电路比较:

1)TTL电路是电流控制器件,而CMOS电路是电压控制器件。 2)TTL电路的速度快,传输延迟时间短(5-10ns),但是功耗大。 CMOS电路的速度慢,传输延迟时间长(25-50ns),但功耗低。

CMOS电路本身的功耗与输入信号的脉冲频率有关,频率越高,芯片集越热,这是正常现象。 3)CMOS电路的锁定效应:

CMOS电路由于输入太大的电流,内部的电流急剧增大,除非切断电源,电流一直在增大。这种效应就是锁定效应。当产生锁定效应时,CMOS的内部电流能达到40mA以上,很容易烧毁芯片。 特点:

1. TTL逻辑电平即Transistor-Transistor Logic。最小输出高电平VOHmin:2.4V ,输出低电平VOLmax:0.4V。在室温下,一般输出高电平是3.5V 输出低电平是0.2V。最小输入高电平VIHmin:2.0V ,最大输入低电平VILmax:0.8V ;它的噪声容限是0.4V。

2. CMOS逻辑电平即Complementary metal-oxide-semiconductor 。逻辑电平电压接近于电源电压,0逻辑电平接近于0V。而且具有很宽的噪声容限。

2.9 请列出常用的TTL组合逻辑电路型号和CMOS组合逻辑电路型号。 解:TTL组合逻辑电路型号:

5400/7400系列是最流行的TTL集成器件,如:74--、74S--、74LS--、74AS--、74ALS--、74F--。 CMOS组合逻辑电路型号:

4000系列(前缀为MC的产品,则标为MC14000),40000系列为互补场效应管系列;54/74HC,54/74HCT,54/74AHC,54/74AHCT及54/74HCU系列为高速CMOS电路。

2.10 为什么常用数字电路中有2-4译码器和3-8译码器,却没有1-2译码器? 解:用反相器即可完成1-2译码器的功能。

2.11 电子计算机主要包括哪几个组成部分?其基本功能是什么?

解:电子计算机主要包括输入设备、输出设备、存储器、运算器和控制器。

输入设备的作用是将程序、原始数据、文字、字符、控制命令或现场采集的数据等信息输入到计算机。 输出设备把外算机的中间结果或最后结果、机内的各种数据符号及文字或各种控制信号等信息输出。 存储器的功能是存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息。 运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。

控制器是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。 2.12 半加器与全加器之间的主要区别是什么?

解:半加器电路要求有两个输入端,用以两个代表数字(A0,B0)的电位输入;有两个输出端,用以输出总和S0及进位C1。从真值表得出布尔代数式: C1=A0×B0,S0=A0⊕B0

可以用“与门”及“异或门”(或称“异门”)来实现真值表的要求。

文件名:微机原理与接口技术习题 第 5 页 共 61 页

(3)16K×1

习 题 (4)256K×8

解:(1)10条地址线,8条数据线

(2)12条地址线,4条数据线 (3)14条地址线,1条数据线 (4)18条地址线,8条数据线

4.8 分别用1K×4位16K×1位芯片构成64K×8位的存储器,各需要多少片芯片? 解:128;32

4.9 试为某8位微机系统设计一个具有16KB的ROM和48KB的RAM的存储器。ROM选用2716(2K*8),地址从0000H开始;RAM紧随其后,芯片采用6264(8K×8)。

4.10 某RAM芯片的引脚中有12根地址线,8根数据I/O线,该存储器芯片的容量为多大?若该芯片在系统中的起始地址为1000H,其结束地址是多少? 解:4K*8,5095H

4.11 某CPU有16根地址线(A0~A15),试分析下图中片选信号 ̄ ̄、CS1 ̄ ̄所指定的存储器地址范围。CS2

解:

 ̄ ̄:CS10000H-6FFFH,或者1000H-7FFFH,或者8000H-EFFFH

CPUA12A15 &CS1≥CS2文件名:微机原理与接口技术习题 第 11 页 共 61 页

错误!未指定书签。与接口技术

 ̄ ̄CS2: 0000H-6FFFH

4.12 试为8088CPU设计192K×8位存储器系统。其中程序区为64K×8位,置于CPU寻址空间最高端,采用27256(32K×8位);数据区为128K×8位,采用62256(32K×8位),置于寻址空间最低端。写出地址分配关系,画出所设计的电路图。 解:

RAM: 00000-07FFFH ROM: 20000-27FFFH

08000-0FFFFH 28000-2FFFFH 10000-17FFFH 18000-1FFFFH

习题五

5.1 分别指出下列指令中源操作数和目的操作数的寻址方式。

(1) MOV BX,1000H (2) MOV BL,[BX] (3) MOV BUF[BX],AX (4) MOV BX,[BP][SI] (5) MOV [DI],DL (6) MOV AX,RESULT

解: (1)源:立即数寻址;目的:寄存器寻址

(2)源:寄存器间接寻址;目的:寄存器寻址 (3)源:寄存器寻址;目的:寄存器相对寻址 (4)源:基址变址寻址;目的:寄存器寻址 (5)源:寄存器寻址;目的:寄存器间接寻址 (6)源:直接寻址;目的:寄存器寻址

(7)源:寄存器寻址:目的:直接寻址; (8)源:相对基址变址寻址;目的:寄存器寻址

5.2 设已知:(BX)=2000H,(SI)=120H,(DS)=1200H,(SS)=200H,(BP)=3000H,符号地址VARE=1000H。试回答在以下各种寻址方式下操作数存放于何处,如果是在存储单元中,则计算单元的物理地址是什么?

(1)使用BX的寄存器寻址(例如:MOV AX,BX)

(2)立即数寻址(例如:MOV AX,1234)

(3)使用BX的寄存器相对寻址(例如:MOV AX,[BX]) (4)直接寻址(例如:MOV AX,[1234])

(5)使用SI的寄存器间接寻址(例如:MOV AX,[SI])

(6)使用BP和SI的基址变址寻址(例如:MOV AX,[BP][SI])

文件名:微机原理与接口技术习题 第 12 页 共 61 页

习 题

(7)使用BX和SI的相对基址变址寻址(例如:MOV AX,[BX][SI])

解: (1)操作数在BX寄存器中;

(2)操作数在指令中;

(3)操作数在存储单元中,物理地址=15000H; (4)操作数在存储单元中,物理地址=13000H; (5)操作数在存储单元中,物理地址=12120H; (6)操作数在存储单元中,物理地址=05120H; (7)操作数在存储单元中,物理地址=15120H。

5.3 现有(DS)=2000H,(BX)=100H,(SI)=2H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=0B7H),(21203H)=65H。试指出下列各条指令单独执行后累加器中的内容是什么?

(1) MOV AX,1200H (2) MOV AX,BX

(3) MOV AX,[1200H] (4) MOV AX,[BX] (5) MOV AX,1100H[BX] (6) MOV AX,[BX[SI] (7) MOV AX,1100H[BX][SI] (8) MOV AL,[BX]

解: (1)(AX)=1200H; (2)(AX)=100H; (3)(AX)=4C2AH; (4)(AX)=3412H

(5)(AX)=4C2AH; (6)(AX)=7856H; (7)(AX)=65B7H; (8)(AX)=××12H

5.4 指出下列指令的错误是什么?

(1) MOV BL,AX (2) MOV [BX],[BP+SI] (3) MOV CS,AX (4) MOV DS,1000H (5) MOV BX,[SI][DI] (6) MOV [2000H],10

解: (1)类型属性不匹配; (2)两操作数都是存储单元; (3)把CS用作目的操作数

(4)立即数送段寄存器; (5)源操作数中两个均为变址寄存器; (6)类型属性不明确

5.5 设当前数据段寄存器的内容为1B00H,在数据段偏移地址为2000H开始的单元内,含有一个内容为0FF10H和8000H的指针,它们是一个16位变量的偏移地址和段地址,试写出把该变量装入AX的指令序列,并画出内存图。

解: LDS BX,[2000H]

MOV AX,[BX]

5.6 设当前(SP)=0100H,(AX)=2000H,(BX)=0B100H,试回答:

执行指令 PUSH AX后,(SP)为多少?画出堆栈示意图。

再执行指令 PUSH BX 和 POP AX 后,(SP)为多少?画出堆栈示意图。

解: (1) 执行 PUSH AX 后: (SP)=00FEH

(2) 执行 PUSH BX 和 POP AX 后: (SP)=00FEH

5.7 要求从85号端口读入一个字节数据,然后到数据段首地址为1000H的表格中换取相应的数据码,再将该数据输出至3000号端口,试编写指令序列。 解: IN AL,85

MOV BX,1000H XLAT

MOV DX,3000 OUT DX,AL

5.8 试编写将某十进制数字转换成七段代码的程序段。设该十进制数字存储在名为BCDKEY的字节变量中,要求将转换的结果送入RESULT变量(十进制数字与相应七段代码的对应表如下)。

十进制数字 0 1 2 3 4 5 6 7 8 9 七段代码 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH

第 13 页 共 61 页

文件名:微机原理与接口技术习题

错误!未指定书签。与接口技术

解: MOV AL,BCDKEY

MOB BX,DISPLAY XLAT

MOV RESULT,AL

5.9 根据以下要求编写相应的指令:

(1)将AX寄存器和BX寄存器的内容相加,结果存入BX寄存器。 (2)用增量指令使采用BX寄存器间接寻址的单元中的字节内容加1。

(3)用BX寄存器和位移量300H的寄存器相对寻址方式把存储器中的一个字和(CX)相加,结果送回该存储单元中。

(4)用寄存器BX和SI的基址变址寻址方式,把存储器中的一个字节与AH寄存器的内容相加,并保存在AH中。

(5)采用合适的指令,将1000H单元中的字与1200H单元中的字相加,结果存入1000H单元。 解: (1) ADD BX,AX

(2) INC BYTE PTR[BX] (3) ADD [BX+300H],CX (4) ADD AH,[BX][SI] (5) MOV BX,1000H MOV AX,[1200H] ADD [BX],AX

5.10设以下表达式中的变量名均为16位带符号数所在单元的地址,编写指令序列,完成下列运算(出发运算的余数舍去):

(W×Y)/(A+70)→X

(A-B×C)/(X-Y)→Z

解:(1) MOV AX,W

IMUL Y

MOV BX,A ADD BX,70 IDIV BX MOV X,AX

(2) MOV AX,B

IMUL C

MOV BX,AX MOV CX,DX MOV AX,A CWD

SUB AX,BX SBB DX,CX MOV BX,X SUB BX,Y IDIV BX MOV Z,AX

5.11 变量VARA1和变量VARA2已定义如下:

VARA1 DW 23A8H,0280H VARA2 DW 0A210H,1248H

(1)将VARA1和VARA2单元中的对应字数据相加,结果存入VARA2指示的单元中

(2)将VARA1单元中的两个字作为双字和VARA2单元中的两个字组成的双字相加,结果存放在VRAR2单元中,双字的存放格式都是低位字在低地址单元、高位字在高地址单元中。 文件名:微机原理与接口技术习题

第 14 页 共 61 页

习 题

解: (1) MOV AX,VARA1

ADD VARA2,AX

(2) MOV AX,VARA1

ADD VARA2,AX MOV AX,VARA1+2 ADC VARA2+2,AX

5.12 写出完成以下组合式BCD码计算的指令序列:

BCD1+BCD2-BCD3→DX

解: MOV AL,BCD1

ADD AL,BCD2 DAA

MOV DL,AL

MOV AL,BCD1+1 ADC AL,BCD2+1 DAA

MOV DH,AL MOV AL,DL SUB AL,BCD3 DAS

MOV DL,AL MOV AL,DH

SBB AL,BCD3+1 DAS

MOV DH,AL

5.13 指出下列各条指令是否正确,如不正确,则指出其错在何处。 (1) MOV CS,1000H (2) ADC BX,25H (3) ADD [BX],20 (4) MUL AX,BL (5) PUSH CS (6) MOV DX,2000H (7) ADD [BX+SI],30H (8) POP CS (9) INC [SI] (10)MOV [BX],[SI]

解: (1)错误 (2)正确 (3)错误 (4)错误 (5)正确

(6)正确 (7)错误 (8)错误 (9)错误 (10)错误

5.14 用逻辑运算指令分别写出完成下列要求的指令:

将BX寄存器中的高4位清零。

将CX寄存器中的第0、1两位置1。 将AL寄存器的中间4位变反。

测试AX的最高位和次高位是否为0。

解:(1) MOV AX,0FFFH

AND BX,AX

(2) MOV AX,3

OR CX,AX

(3) MOV BL,3CH

XOR AL,BL

(4) MOV BX,3FFFH

TEST AX,BX

5.15 设(BX)=0A6H,(CL)=3,CF为1,试指出下列各条指令单独执行后BX中的值。

(1) SAR BX,1 (2) SHR BX,CL

第 15 页 共 61 页

文件名:微机原理与接口技术习题

错误!未指定书签。与接口技术

(3) SHL BL,CL (4) SAL BL,1 (5) ROR BX,CL (6) RCL BX,CL (7) ROL BH,1 (8) RCR BL,1

解: (1)(BX)=0053H (2) (BX)=0014H (3) (BX)=0030H (4) (BX)=004CH

(5)(BX)=0C014H (6) (BX)=0534H (7) (BX)=0A6H (8) (BX)=00D3H

5.16 已知有一32位的无符号数在(DX,AX)中,试编写指令序列,将该32位数左移4位,将低4位用0填补;将移出的高4位存入CH的低4位中。

解: MOV CL,4

MOV CH,DH SHR CH,CL SHL DX,CL MOV BL,AH SHR BL,CL SHL AX,CL OR DL,BL

5.17 利用移位指令、传送指令和加法指令完成乘法运算(AX)×10。 解: SAL AX,1

MOV BX,AX MOV CL,2 SAL AX,CL ADD AX,BX

5.18 试分别指出在下列3种条件下执行指令 SUB AX,BX 时,对标志位OF、CF、SF、ZF影响的情况: (1) (AX)=14C6H , (BX)=80DCH (2) (AX)=42C8H , (BX)=608DH (3) (AX)=0D023H , (BX)=9FD0H

解: (1) OF=1,CF=1,SF=1,ZF=0

(2) OF=0,CF=1,SF=1,ZF=0 (3) OF=0,CF=0,SF=0,ZF=0

5.19 在8086/8088指令系统中,哪些指令可以加重复前缀?重复前缀共有哪几种形式?它们的操作功能是什么?

解: 可加重复前缀的指令有:MOVS、STOS、SCAS、LODS、CMPS; 重复前缀的形式有:REP、REPE/REPZ、REPNE/REPNZ

5.20 在一个名为STRING、长度为100字节的字符串中查找是否含有字符“$”,如果有则将第一次发现的“$”字符所在单元的偏移地址送入BX寄存器中;如果未曾找到,则将0FFFFH送入BX寄存器中。 解: CLD

MOV AL,‘$’ LEA DI,STRING MOV CX,100 REPNE SCASB JNE ZER DEC DI

MOV BX,DI JMP STOP

ZER: MOV BX,0FFFFH STOP: HLT

文件名:微机原理与接口技术习题 第 16 页 共 61 页

习 题

5.21 将2000H段中名为BUFST的缓冲区中长度为200个字节的数据串移到3000H段中名为DSTST的缓冲区中。编写两种采用不同指令实现该功能的程序段。 解:(1) MOV AX,2000H

MOV DS,AX MOV AX,3000H MOV ES,AX MOV CX,200 CLD

LEA SI,BUFST LEA DI,DSTST REP MOVSB HLT

(2) MOV AX,2000H

MOV DS,AX MOV AX,3000H MOV ES,AX MOV CX,200

MOV SI,OFFSET BUFST MOV DI,OFFSET DSTST

AGN: MOV AL,[SI]

MOV ES:[DI],AL INC SI INC DI LOOP AGN HLT

5.22 将1000段中名为DATSTR的字符串,向高地址方向平移20个字节,字符串的长度为45字节。 解: STD

MOV AX,1000H MOV DS,AX MOV ES,AX

LEA SI,DATSTR+44 LEA DI,DATSTR+64 MOV CX,45 REP MOVSB HLT

5.23 用其它指令完成与下列指令同样的功能

(1) REP MOVSB (2) REPE CMPSW (3) REP STOSB (4) REPNE SCASB

解: (1) AGAIN:MOV AL,[SI] (2)AGAIN: MOV AL,[SI]

MOV ES:[DI],AL CMP AL,ES:[DI] INC SI INC SI INC DI INC DI LOOP AGAIN LOOPE AGAIN

(3) AGAIN: MOV ES:[DI],AL (4)AGAIN: CMP AL,[DI]

INC DI INC DI LOOP AGAIN LOOPNE AGAIN

文件名:微机原理与接口技术习题 第 17 页 共 61 页

错误!未指定书签。与接口技术

5.24 有100个学生的计算机课程成绩存放在COMPUT缓冲区中,编写指令序列统计85分以上、60~85分、60分以下各有多少人,并把统计结果存入ORDER开始的三个字节单元中。 解: LEA SI,COMPUT

MOV CX,100 MOV BL,10 MOV BH,0 MOV DX,0

AGAIN: MOV AL, [SI]

CBW

IDIV BL CMP AL,9 JGE RANGE1 CMP AL,8 JE GE85 CMP AL,6 JGE RANGE2 INC BH JMP NEXT

GE85: CMP AH,5

JGE RANGE1

RANGE2: INC DL

JMP NEXT

RANGE1: INC DH

NEXT: INC SI

LOOP AGAIN

MOV ORDER,DH MOV ORDER+1,DL MOV ORDER+2,BH HLT

5.25 在内存数据区从4000H开始存放着由30个字符组成的字符串,编写指令序列,查找并统计串中空格符的个数,并将统计结果存入4020H单元中。 解: MOV SI,4000H

MOV CX,30 SUB BL,BL MOV AL,20H

AGAIN: CMP AL,[SI]

JNZ NEXT INC BL

NEXT: INC SI

LOOP AGAIN MOV SI,4020H MOV [SI],BL HLT

5.26 编写一指令序列,统计寄存器BX中内容含“1”的个数,将统计结果送入CX寄存器中。 解: SUB CX,CX GOON: CMP BX,0

JZ STOP

文件名:微机原理与接口技术习题 第 18 页 共 61 页

SHR BX,1 JNC JUMP INC CX

JUMP: JMP GOON STOP: HLT

5.27 试分析下列程序段:

习 题

ADD AX,BX JNO L1 JNC L2 SUB AX,BX JNC L3 JNO L4 JMP L5

如果AX和BX的内容给定如下: AX BX (1) 147BH 80DCH (2) 0B568H 54B7H (3) 4C28H 608DH (4) 0D023H 9FD0H (5) 94B7H 0B568H

问在该5种条件下,以上程序执行完后程序将转向哪里?

解: (1) L1; (2) L1; (3) L2; (4) L5; (5) L5

5.28 设在内存数据段中有一个由28个字节数据组成的数组,数组的起始地址为2000H,试编写程序段,将其分成正数组和负数组,正数组存放于2020H开始的单元中;负数组存放于2040H开始的单元中。 解: MOV BX,2000H

MOV CX,1CH MOV SI,2020H MOV DI,2040H

LOOP1: MOV AL,[BX]

SUB AL,0 JS NEGAT MOV [SI],AL INC SI JMP NEXT

NEGAT: MOV [DI],AL

INC DI

NEXT: LOOP LOOP1

HLT

5.29 在首地址为VALU的字数组中,存放有10个无符号数,编写指令序列,求出它们的平均值并存放于BL寄存器中(只取整数)。再统计出数组中有多少个小于平均值的数,将结果存于DL寄存器中。 解: MOV SI,0

MOV DX,0 MOV CX,DX

AVERAGE: MOV AL,VALU[SI]

CBW

ADD DX,AX INC SI

文件名:微机原理与接口技术习题 第 19 页 共 61 页

错误!未指定书签。与接口技术

LOOP AVERAGE MOV AX,DX MOV BL,10 DIV BL MOV BL,AL MOV SI,0 MOV DX,0 MOV CX,0

COMPARE: MOV AL,VALU[SI]

CMP AL,BL JAE GOON INC DL

GOON: INC SI

LOOP COMPARE HLT

5.30 有20个ASCII码表示的分离式BCD码存放在缓冲区UNPBCD中,编写指令序列将它们转换成组合式BCD码,即把两个相邻字节单元的数码合并成一个字节单元,高地址单元存放在高4位,低地址单元存放在低4位,转换结果存放于PABCD缓冲区中。 解: MOV CX,14H

LEA SI,UNPBCD LEA DI,PABCD

CONVERT: PUSH CX

MOV AL,[SI] SUB AL,30H MOV BL,AL

MOV AL,[SI+1] SUB AL,30H MOV CL,4 SHL AL,CL ADD AL,BL MOV [DI],AL POP CX ADD SI,2 INC DI

LOOP CONVERT HLT

习题六

6.1 请指出变量与标号都有哪些属性?它们的主要区别是什么? 解:变量的属性有:段属性,偏移属性,类型属性。

标号的属性有:段属性,偏移属性,距离属性。

变量和标号都是一种符号地址。变量的内容是代表存放在某些存储单元中的数据,变量名就代表这些单元的起始地址;标号是代表一条指令目标代码的起始地址。

文件名:微机原理与接口技术习题 第 20 页 共 61 页

习 题

6.2 在一个数据段中,试用伪指令定义下列数据或字符变量,并画出内存分配示意图。 ⑴ 为十进制数58定义字节变量DEDAT

⑵ 为二进制数11011010B定义字节变量BINDAT ⑶ 为十六进制数B7A2H定义字变量HEXDAT ⑷ 定义6个0的字变量

⑸ 为字符串‘I have a pen’定义字节变量STRING 解: (1) DEDAT DB 58

(2) INDAT DB 11011010B (3) HEX DB 0B7A2H (4) DW 6 DUP(0)

(5) STRING DB ‘I have a pen’

6.3 已知在某数据段中有如下变量定义: VRWD

DW 256 DUP(?)

现要求对这些变量单元既能进行字操作,同时在另一种场合又能进行字节操作,请问应该如何解决? 解: 用LABEL伪指令进行字节定义:

VRBD LABEL BYTE VRWD DW 256(?)

6.4 已知有如下赋值语句: ALPHA GAMMA

EQU 100 EQU 2

⑵ ALPHA MOD GAMMA+BETA ⑷ (BETA/3) MOD 5

BETA EQU 25

试指出下列表达式的值为多少? ⑴ ALPHA*100 ⑶ (ALPHA+2)*BETA-2 ⑺ BETA AND 7

⑸ (ALPHA+3)*(BETA MOD GAMMA) ⑹ ALPHA GE GAMMA ⑻ GAMMA OR 3

解: (1) 10000 (2) 26 (3) 2446 (4) 3

(5) 309 (6) 0FFFFH (7) 08H (8) 0BH

6.5 分析如下程序,画出堆栈最满时各单元的地址及内容。 STASEG TOP STASEG CODSEG

START:MOV

SEGMENT AT 1000H DW 200 DUP(?) LABEL WORD ENDS SEGMENT

ASSUME CS:CODSEG,SS:STASEG AX,STASEG MOV SS,AX MOV SP,OFFSET TOP PUSH DS SUB AX,AX PUSH AX PUSH BX PUSHF

文件名:微机原理与接口技术习题 第 21 页 共 61 页

错误!未指定书签。与接口技术

CODSEG

解:

?? ?? POPF POP BX POP AX ?? ENDS END START

(1) 10000 (2) 26 (3) 2446 (4) 3

6.6 编写一完整的汇编语言源程序,在数据段中定义一双字变量VARLD,再在附加段中也定义一双字变量VARLE,然后将这两个双字内容相加,结果存放于数据段的RESU变量中。

解:

START:

6.7 循环程序一般由哪几部分构成?各部分的功能是什么?

解: (1) 循环初始化部分。主要是设定循环的初始状态,为循环作准备。如设置循环最大次数,循环过程中相关寄存器所需的初始值等等。

(2)循环工作部分。这是循环程序的主体部分,它完成该循环体所要实现的主要功能,如数据的传送、运算等。

(3)循环参数调整部分。主要功能是用于修改某些数据,以保证每次循环时参与运行的某些信息能发生有规律的变化,使完成的功能不完全重复。

(4)循环控制部分。循环控制部分是循环程序设计的关键,它根据循环控制条件来控制循环的运行和结束,该控制功能由循环控制指令完成。

6.8 设有一汇编语言源程序如下:

DATA SEGMENT

WVLD LABEL WORD VARLD DD 58A027B4H RESU DW ?,? DATA ENDS EXTR SEGMENT

WVLE LABEL WORD VARLE DD 0F4C2380H EXTR ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:EXTR MOV AX,DATA MOV DS,AX MOV AX,EXTR MOV ES,AX MOV AX,WVLD ADD AX,ES:WVLE MOV RESU,AX MOV AX,WVLD+2 ADC AX,ES:WVLE+2 MOV RESU+2,AX MOV AH,4CH INT 21H CODE ENDS END START

文件名:微机原理与接口技术习题 第 22 页 共 61 页

习 题

DATSEG SEGMENT CONDAT DB 3EH,0F7H,68H,9CH,7FH ORG 1000H SUM DW ? DATSEG ENDS PROSEG SEGMENT ASSUME CS:PROSEG,DS:DATSEG MAIN PROC FAR START: PUSH DS SUB AX,AX PUSH AX MOV AX,DATSEG MOV DS,AX LEA BX,CONDAT MOV CX,5 XOR DX,DX NMP: MOV AL,[BX] AND AL,AL JS NEXT ADD DL,AL JNZ NEXT INC DH NEXT: INC BX LOOP NMP LEA BX,SUM MOV [BX],DX RET MAIN ENDP PROSEG ENDS END START

简要说明此程序的功能,指出程序运行后四个通用寄存器AX、BX、CX、DX中的内容各是什么?程序运行的结果是什么?保存在什么地方?

解: 程序功能是,统计CONDAT数据区的9个字节,将正数之和送入1000H单元;将前几个为0的数的个数送入1001H单元。

程序执行结果:(AX)=0010H (BX)=1000H (CX)=0 (DX)=023EH。

6.9设内存自1000H开始的存储区中,存放有20个带符号数,试编一程序段,找出其中最小的数,存于数据区2000H中。

解:

SCAN:

NEXT:

MOV AX,1000H MOV DS,AX LEA BX,BUFF MOV CX,[BX] MOV AX,0 ADD BX,2 MOV DX,[BX] CMP DX,AX JGE NEXT XCHG AX,DX LOOP SCAN

MOV [BX],2000H

第 23 页 共 61 页

正数之和等于3EH保存于1000H单元中;数组前面0的个数是2,保存于1001H单元中。

文件名:微机原理与接口技术习题

错误!未指定书签。与接口技术

6.10 在内存的BUFF缓冲区中,存放有一个数据块,数据块的长度存放在BUFF和BUFF+1单元中,从BUFF+2开始存放的是以ASCII码表示的十进制数。编写程序段,将这些ASCII码转换成组合式BCD码(即把两个相邻字节单元的数码并成一个字节单元),高地址的放在高4位。转换后的压缩BCD码存放到BUFF+2开始的单元中。

解:

CONTI:

6.11 设有一由无符号数组成的数组,数组名为ORDER,数组长度为60。编写程序,求该数组中的最大值。

解:

DATA SEGMENT

ORDER DW 60 DUP(?) MAX DW ? DATA ENDS STACKS SEGMENT DW 256 DUP(0) TOP LABEL WORD CODE SEGMENT ASSUME CS:CODE CONVER PROC FAR PUSHF PUSH AX PUSH BX PUSH CX PUSF DX PUSH SI PUSU DI

LEA SI,ASCDES MOV DI,10 MOV CX,5 MOV AX,0 MUL DI

MOV BL,[SI] MOV BH,0 SUB BL,30H ADD AX,BX INC SI LOOP CONTI

MOV BYDAT,AX POP DI POP SI POP DX POP CX POP BX POP AX POPF RET

CONVER ENDP CODE ENDS END

MOV [BX],AX HLT

文件名:微机原理与接口技术习题 第 24 页 共 61 页

START: ;

STOP:

NEXT:

STACKS ENDS

习 题

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACKS MOV AX,DATA MOV DS,AX

MOV AX,STACKS MOV SS,AX

MOV SP,OFFSET TOP LEA SI,ORDER MOV CX,60

CALL FAR PTR SUBPRG MOV MAX,AX MOV AH,4CH INT 21H CODE ENDS CODE1 SEGMENT ASSUME CS:CODE1 SUBPRG PROC FAR PUSHF

CMP CX,2 JZ STOP DEC CX ADD SI,2 CALL SUBPRG MOV AX,[SI] CMP AX,2[SI] JNC NEXT

XCHG AX,2[SI] MOV [SI],AX MOV AX,[SI] SUB SI,2 POPF RET

SUBPRG ENDP CODE1 ENDS END START

6.12 编写子程序,将从键盘输入的小写字母用大写字母在屏幕显示出来,如不是字母则结束。

解:

NEXT:

CODE SEGMENT ASSUME CS:CODE KEYIN PROC FAR PUSH AX PUSH DX MOV AH,1 INT 21H

CMP AL,61H JB EXIT CMP AL,7AH JA EXIT

文件名:微机原理与接口技术习题 第 25 页 共 61 页

错误!未指定书签。与接口技术

6.13 编写子程序,要求从键盘输入一个4位的十六进制数,然后将其转换成二进制数并在屏幕上显示出来。

解:

START:

AGAIN:

DECI:

LOOP1:

ONE: DISPL:

DATPRO SEGMENT BUFF DB 5 DB ?

DB 5 DUP(?) DATPRO ENDS PROSEG SEGMENT

ASSUME CS:PROSEG,DS:DATPRO MOV AX,DATPRO MOV DS,AX LEA DX,BUFF MOV AH,0AH INT 21H

MOV BL,[BUFF+1] LEA SI,BUFF+2 MOV AL,[SI] CMP AL,30H JB EXIT CMP AL,39H JBE DECI CMP AL,61H JB EXIT CMP AL,66H JA EXIT SUB AL,27H SUB AL,30H MOV CL,4 SHL AL,CL MOV CX,4 SHL AL,1 JC ONE

MOV DL,30H JMP DISPL MOV DL,31H PUSH AX MOV AH,2 INT 21H POP AX LOOP LOOP1 SUB AL,20H MOV DL,AL MOV AH,02H INT 21H JMP NEXT POP DX POP AX RET

KEYIN ENDP CODE ENDS END KEYIN

文件名:微机原理与接口技术习题 第 26 页 共 61 页

EXIT:

INC BL INC SI CMP BL,0 JNZ AGAIN MOV AH,4CH INT 21H PROSEG ENDS END START

习 题

6.14 编写一个子程序,实现8位无符号数的除法运算,被除数、除数、商和余数存放在自DATA开始的存储单元中。

解: CODESUB SEGMENT

ASSUME CS:CODESUB SUBPRO PROC FAR PUSH AX PUSH BX PUSH DX

MOV AL,DATA CBW

DIV DATA+1 PUSH AX CBW

CALL DISPL POP AX

MOV AL,AH CBW

CALL DISPL POP DX POP BX POP AX RET

SUBPRO ENDP ; DISPL PROC NEAR MOV BL,100 DIV BL PUSH AX

ADD AL,30H MOV DL,AL MOV AH,2 INT 21H POP AX

MOV AL,AH CBW

MOV BL,10 DIV BL PUSH AX

ADD AL,30H MOV DL,AL MOV AH,2

INT 21H

文件名:微机原理与接口技术习题 第 27 页 共 61 页

错误!未指定书签。与接口技术

6.15设有一个由30个数据组成的数组DGRP,编写一完整的汇编语言程序,将该数组分成正数组PGRP和负数组NGRP,并且统计和显示这两个数组中数据的个数。

解:

START:

NEXT:

GOON:

DATSEG SEGMENT

DGRP DW 30 DUP(?) PGRP DW 30 DUP(?) NGRP DW 30 DUP(?) DATSEG ENDS PROSEG SEGMENT MAIN PROC FAR

ASSUME CS:PROSEG,DS:DATSEG PUSH DS

SUB AX,AX PUSH AX

MOV AX,DATSEG MOV DS,AX MOV CX,30 MOV DX,0 LEA BX,DGRP LEA SI,PGRP LEA DI,NGRP MOV AX,[BX] AND AX,AX JL NEGD INC DH

MOV [SI],AX ADD SI,2 JMP GOON

NEGD: INC DL MOV [DI],AX ADD DI,2 ADD BX,2 LOOP NEXT MOV BL,10 MOV AL,DL CALL DISPL MOV AL,DH CALL DISPL RET

POP AX

MOV DL,AH ADD DL,30H MOV AH,2 INT 21H MOV DL,‘,’ MOV AH,2 INT 21H RET

DISPL ENDP CODESUB ENDS END

文件名:微机原理与接口技术习题 第 28 页 共 61 页

MAIN ENDP

习 题

DISPL PROC NEAR CBW

DIV BL PUSH AX

ADD AL,30H MOV DL,AL MOV AH,2 INT 21H POP AX

ADD AH,30H MOV DL,AH MOV AH,2 INT 21H MOV DL,‘,’ MOV AH,2 INT 21H RET

DISP ENDP PROSEG ENDS END START

6.16 设有一组考核数据以字节为单位存放在名为TEST的内存缓冲区中,这些数据都是不超过100的正整数,其中第1个单元存放的是该数组中数据的个数。若将小于60的数划分为等第C,60~80划分为等第B,大于80的数划分为等第A,编程分别统计这三个等第中数据的个数,并在屏幕上显示出统计结果。

解: ;

START:

STATI:

BCRANK:

DATASEG SEGMENT

TEST DB 256 DUP(?) A DB 0 B DB 0 C DB 0 DATASEG ENDS

CODESEG SEGMENT MAIN PROC FAR

ASSUME CS:CODESEG,DS:DATASEG PUSH DS SUB AX,AX PUSH AX

MOV AX,DATASEG MOV DS,AX LEA SI,TEST MOV CL,[SI] MOV CH,0 INC SI

MOV AL,[SI] CMP AL,80 JBE BCRANK INC A JMP NEXT CMP AL,60

第 29 页 共 61 页

文件名:微机原理与接口技术习题

错误!未指定书签。与接口技术

CRANK: NEXT: ;

6.17 从键盘输入某班学生某门课程的成绩,存入内存中,然后将成绩进行分析统计,分别求出九十分以上、八十至八十九分、七十至七十九分、六十至六十九分、六十分以下这五个分数段中各有多少人?五个分数段分别用A、B、C、D、E表示,全班的平均成绩是多少(只取整数)?并将统计结果在屏幕上显示出来。

.MODEL SMALL

JB CRANK

INC B JMP NEXT INC C INC SI

LOOP STATI MOV AL,A CALL DISPL MOV AL,B CALL SISPL MOV AL,C CALL DISPL RET

MAIN ENDP DISPL PROC NEAR CBW

MOV BL,100 DIV BL PUSH AX

ADD AL,30H MOV DL,AL MOV AH,2 INT 21H POP AX

MOV AL,AH CBW

MOV BL,10 DIV BL PUSH AX

ADD AL,30H MOV DL,AL MOV AH,2 INT 21H POP AX

ADD AH,30H MOV DL,AH MOV AH,2 INT 21H MOV DL,‘,’ MOV AH,2 INT 21H RET

DISP ENDP CODESEG ENDS END START

文件名:微机原理与接口技术习题 第 30 页 共 61 页

习 题

.DATA

data DB 10 DUP(?)

buffer DB \buffer1 DB \buffer2 DB \buffer3 DB \below60 DB 0 below70 DB 0 below80 DB 0 below90 DB 0 below100 DB 0

.CODE

newline PROC ;换行 PUSH AX PUSH DX MOV AH,02H MOV DL,0DH INT 21H MOV DL,0AH INT 21H POP DX POP AX RET newline ENDP ;

dispave PROC;将buffer2中的内容作为一行显示 PUSH AX PUSH DX MOV DX,OFFSET buffer2 MOV AH,09H INT 21H POP DX POP AX RET dispave ENDP ;

ave PROC PUSH AX PUSH BX PUSH CX PUSH DX MOV BX,OFFSET data MOV CX,10 MOV AX,0 CLC next: ADD AL,[BX] DAA ADC AH,0 CLC INC BX

LOOP next

MOV CL,10H

文件名:微机原理与接口技术习题 第 31 页 共 61 页

错误!未指定书签。与接口技术

DIV CL

MOV BX,AX MOV AH,02H MOV CL,4 MOV DL,BL SHR DL,CL ADD DL,'0'

INT 21H POP DX POP CX

POP BX POP AX RET

ave ENDP ;

detail PROC

PUSH AX PUSH BX PUSH CX PUSH DX MOV CX,10

MOV SI,OFFSET data

start5: MOV BL,[SI] .IF BL>=0&&BL<60H INC below60 .ELSEIF BL>=60H&&BL<70H INC below70 .ELSEIF BL>=70H&&BL<80H INC below80 .ELSEIF BL>=80H&&BL<90H INC below90 .ELSEIF BL>=90H&&BL<=99H INC below100 .ENDIF INC SI

LOOP start5 POP DX POP CX POP BX POP AX RET

detail ENDP ;

dispscores PROC PUSH AX

PUSH DX

MOV DX,OFFSET buffer3 MOV AH,09H INT 21H

MOV AH,02H

INT 21H POP DX MOV AL,DL

文件名:微机原理与接口技术习题 第 32 页 共 61 页

习 题

INT 21H POP AX RET

dispscores ENDP .STARTUP MOV DX,OFFSET buffer

MOV AH,09H INT 21H

CALL newline CALL newline MOV DI,OFFSET data MOV CX,10 start: MOV DX,0 MOV AH,01H INT 21H SUB AL,'0' MOV BL,16 MUL BL MOV DL,AL MOV AH,01H INT 21H SUB AL,'0' ADD DL,AL MOV [DI],DL INC DI MOV DL,20H MOV AH,02H INT 21H

LOOP start

CALL newline CALL dispave CALL ave CALL newline CALL newline MOV DX,OFFSET BUFFER1 MOV AH,09H INT 21H CALL newline CALL detail

MOV AL,'A'

MOV DL,below100 CALL dispscores MOV AL,'B'

MOV DL,below90 CALL dispscores MOV AL,'C'

MOV DL,below80 CALL dispscores

MOV AL,'D' MOV DL,below70 CALL dispscores MOV AL,'E' MOV DL,below60

文件名:微机原理与接口技术习题 第 33 页 共 61 页

错误!未指定书签。与接口技术

CALL dispscores .EXIT END

习题七

7.1 什么是中断?中断有什么作用?

解:中断是指在计算机执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前正在执行的程序而转去执行相应的时间处理程序。待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程。

利用中断,计算机可以较好的实现CPU与外部设备之间的同步工作,进行实时处理,可以大大提高CPU的工作效率。

7.2 8086/8088系统中,中断分为哪几类?

解:硬件中断(外部中断);软件中断(内部中断)。

硬件中断又可分为:非屏蔽中断、可屏蔽中断。 7.3 8086/8088CPU上中断请求和中断响应信号是什么? 解:INTA

7.4 中断标志IF的作用是什么?

解:IF中断标志位,IF=1表示允许CPU响应可屏蔽中断。 7.5 什么是中断向量? 中断向量表? 解:中断向量是中断服务程序的人口地址。

中断向量表是将各个中断服务程序的入口地址有次序地存放在内存一片连续区域中,所形成的地址表被称为中断向量表,也称为中断服务程序的入口地址表。

7.6 中断类型码为50H,则其对应的中断向量存放在哪几个存储单元? 解:500H

7.7 设78H号中断的中断向量为1000:2340H,写出该中断向量在内存中的具体存放情况。 解:

10H 00H 23H 40H 7.8 简述8259A的工作原理。

解:第一个负脉冲到达时,IRR的锁存功能失效,使当前中断服务寄存器ISR中的相应位置1,并使IRR寄存器中的相应位清零。

第二个负脉冲到达时,中断类型寄存器中的内容ICW2送到数据总线的D7~D0,CPU将此作为中断类型码

第二个脉冲结束时,将第一个脉冲到来时设置的当前中断服务寄存器ISR的相应位清零。 7.9 一片8259A可提供多少个中断类型码? 解:8个

7.10 8259A的设定中断优先级方式有几种?各有什么特点? 解:全嵌套方式:固定优先级,IR0最高,IR7最低。

特殊全嵌套:响应同级中断请求。

文件名:微机原理与接口技术习题 第 34 页 共 61 页

习 题

优先级自动循环:某级被响应后,降为最低。 优先级特殊循环方式:编程指定最低优先级。 7.11 8259A的中断结束方式有几种?各有什么特点?

解:(1)自动结束方式:8259A收到INTA#后自动把ISRn位清0。 (2)非自动结束方式:

(a)一般结束方式:8086发命令清除ISR中级最高的位,结束中断。 (b)特殊结束方式:将ISR中指定位清0。 7.12 8259A屏蔽中断源的方式有几种?各有什么特点?

解:(1)普通屏蔽方式:IMR某位置1,对应的中断被屏蔽;IMR某位置0,允许该级中断产生。

(2)特殊屏蔽方式:IMR某位置1,同时使ISR的对应位复位以屏蔽本级中断,开放较低级别中断。 7.13 8259A连接数据总线的方式有几种?各有什么特点?

解:缓冲方式:在多片8259A级联的大系统中,8259A通过总线驱动器与系统数据总线相连。 非缓冲方式:在只有单片8259A或片数不多8259A时,将8259A直接于数据总线相连。 7.14 8259A的中断请求触发方式有几种?各有什么特点?

解:边沿触发方式:上升沿作为中断请求信号,IR出现上升沿信号后,可一直保持高电平。 电平触发方式:高电平作为中断请求信号,但必须在EOI命令或CPU开放中断之前撤除高电平。 7.15 在8259A中,通过奇地址访问的寄存器有几个?通过偶地址访问的寄存器有几个? 解:(1)奇地址四个:ICW2、ICW3、ICW4、OCW1 (2)偶地址三个:ICW1、OCW2、OCW3

7.16 8259A初始化时设置为非中断自动结束方式,编写中断服务程序时应注意什么? 解:需要8086发命令清除ISR中级最高的位或其他指定的位,才可以产生中断。 7.17 8259A初始化的过程如何?

解:(1)顺序逻辑复位,准备按ICW2,ICW3,ICW4的顺序接收初始化字; (2)清除ISR和IMR;

(3)指定优先级次序为IR0、IR1??; (4)从片的地址设置为7; (5)设定为普通屏蔽方式; (6)设置为非自动中断结束方式; (7)状态读出电路预置为IRR。

7.18 外设向CPU提出中断申请,但没有得到响应,其原因有哪些? 解:(1)中断请求被屏蔽

(2)中断不是开放的或者是允许的 (3)在现行指令的结束后才响应中断

7.19 编程对8259A初始化。设系统中有一片8259A,中断请求信号为边沿触发,中断类型码为58H~5FH,一般全嵌套方式,不用缓冲方式,中断自动结束。8259A的端口地址为20H、21H。 解:

PIC1 EQU 20H

PIC2 EQU 21H ICW1 EQU 13H ICW2 EQU 58H ICW4 EQU 3H OCW1 EQU 0FFH INIT PROC NEAR MOV AL,ICW1 OUT PIC1,AL MOV AL,ICW2

文件名:微机原理与接口技术习题

第 35 页 共 61 页

错误!未指定书签。与接口技术

OUT PIC2,AL MOV AL,ICW4 OUT PIC2,AL MOV AL,OCW1 OUT PIC2,AL STI

INIT ENDP

7.20 写操作命令字实现禁止8259A的IR0和IR7引脚的中断请求,然后撤消这一禁止命令。设8259A的端口地址为200H、202H。 解:MOV AL,110000001B

MOV DX,200H OUT DX,AL

MOV AL,100000000B OUT DX,AL

习题八

8.1 什么是I/O端口?8086CPU最多可以访问多少个I/O端口?访问时用什么指令?

解:I/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路,I/O接口中可以由CPU进行读或写的寄存器被称为I/O端口 。

64K个8位端口,或者32K个16位端口。 输入输出指令。

8.2 解释IN指令和OUT指令的数据流动方向。

解:IN指令:输入指令,数据从外部设备流向CPU; OUT指令:输出指令,数据从CPU流向外部设备。 8.3 直接寻址I/O指令的I/O端口号存储在何处?

解:只用于寻址00H ~ FFH前256个端口,操作数i8表示端口号 8.4 间接寻址I/O指令的I/O端口号存储在何处?

解:可用于寻址全部64K个端口,DX寄存器的值就是端口号,对大于FFH的端口只能采用间接寻址方式 8.5 16位IN指令将数据输入到那个寄存器?

解:AX

8.6 通常I/O接口内有哪三类寄存器?它们各自的作用是什么?

解:用于存取数据的寄存器,存取命令信息的寄存器以及存取外设所处状态的寄存器,习惯上把这些寄存器称为端口: 1、数据端口;2、命令端口; 3、状态端口。

1数据端口:用于中转数据信息。一种情况是CPU通过数据总线,将待传送给外设的数据先传送到数据端口,然后由I/O设备通过与I/O接口电路相连接的数据线取得该数据。另一种情况是I/O设备首先将输入数据锁存于数据端口,然后,CPU通过数据端口将该数据读入CPU中。

2命令端口:用于传送对I/O设备的命令信息。CPU将命令信息通过数据总线写入I/O接口电路的命令寄存器中,然后传送到I/O设备,以便控制外设的操作。

文件名:微机原理与接口技术习题 第 36 页 共 61 页

习 题

3状态端口:用于传送外设所处的状态信息。状态端口是输入端口,CPU通过读取状态端口的数据,以此了解外设当前所处的工作状态。

8.7 为什么I/O设备必须通过接口才能与CPU相连?

解:因为CPU与外部设备通信在运行速度和数据格式上差异很大。 8.8 接口芯片具有哪些功能?

解:(1)设置数据的寄存、缓冲逻辑,以适应CPU与外设之间的速度差异,接口通常由一些寄存器或RAM芯片组成,如果芯片足够大还可以实现批量数据的传输;

(2)能够进行信息格式的转换,例如串行和并行的转换;

(3)能够协调CPU和外设两者在信息的类型和电平的差异,如电平转换驱动器、数/模或模/数转换器等;

(4)协调时序差异;

(5)地址译码和设备选择功能;

(6)设置中断和DMA控制逻辑,以保证在中断和DMA允许的情况下产生中断和DMA请求信号,并在接受到中断和DMA应答之后完成中断处理和DMA传输。 8.9 接口芯片分为哪几类?

解:(1)并行接口,EPP口(增强并行口)和ECP口(扩展并行口)(2)串行接口 (3)磁盘接口,可分为IDE接口,EIDE接口和SCSI接口(4)USB接口(5)I/O扩展槽,可分为ISA插槽,EISA插槽,VESA插槽,PCI插槽

8.10比较存储器映像编址I/O与独立编址I/O的优缺点。

解:(1)统一编址

优点:不需要设立专门的I/O指令,用访问内存的指令就可以访问外设,指令类型多,功能齐全,还可以对端口进行算术运算,逻辑运算以及移位操作等。I/O端口空间不受限制。

缺点:是I/O端口占用了内存空间,减少了内存容量。 (2)独立编址

优点:不占用内存空间,使用专门I/O指令访问I/O端口,I/O速度快。

缺点:CPU的引脚上必须具有能区分出访问内存还是访问I/O端口的信号,作为I/O接口电路中端口译码电路以及存储器片选译码电路的输入信号。 8.11 8086系统中采用哪种I/O编址方式?

解:独立编址。

8.12 当G1输入为高电平,G2A和G2B均为低电平时,74LS138译码器的输出是什么?

解:此时译码器处于工作状态,输出的是与输入的二进制代码相对应的高、低电平信号。

8.13设计一个I/O端口译码器,使用一个74LS138,产生8位端口地址:10H、12H、 14H、 16H、18H、1AH、1CH、1EH。

解:

文件名:微机原理与接口技术习题 第 37 页 共 61 页

错误!未指定书签。与接口技术

8.14 简述CPU与外设之间数据传送的几种方式。

解:外围设备和内存之间的常用数据传送控制方式有四种 :

(1)程序直接控制方式:就是由用户进程直接控制内存或CPU和外围设备之间的信息传送。这种方式控制者都是用户进程。

(2)中断控制方式:被用来控制外围设备和内存与CPU之间的数据传送。这种方式要求CPU与设备(或控制器)之间有相应的中断请求线,而且在设备控制器的控制状态寄存器的相应的中断允许位。

(3)DMA方式:又称直接存取方式。其基本思想是在外围设备和内存之间开辟直接的数据交换通道。 (4)通道方式:与DMA方式相类似,也是一种以内存为中心,实现设备和内存直接交换数据的控制方式。与之不同的是,在DMA方式中数据传送方向、存放数据内存始址以及传送的数据块长度等都是由CPU控制,而在通道方式中这些都是由专管输入输出的硬件——通道来进行控制。

8.15 CPU以并行通讯方式从外设输入信息。设状态端口地址为286H,数据端口地址为287H,已将数据读走标志为D0=1。请编写一个程序,利用查询方式实现100个字节数据的输入。输入的数据存放在数据段中以BLOCK开始的地址中(请在程序中加上相应的注释说明)。

解:

.MOCEL SMALL .DATA

BLOCK DB 100 DUP(?) .CODE .STARTUP MAIAN:

MOV BX,OFFSET BLOCK MOV SI,0 MAIN1:

MOV DX,0286H IN AL,DX AND AL,02H JZ MAIN1 MOV DX,0287H

文件名:微机原理与接口技术习题

第 38 页 共 61 页

IN AL,DX MOV [BX+SI],AL INC SI CMP SI,100 JNE MAIN1 .EXIT END

习 题

8.16 CPU以并行通讯方式向外设输出信息。设状态端口地址为216H,数据端口地址为217H。外设准备好标志为D7=1,D7=0为外设未准备好(忙)。输出数据选通信号为D0=1。请编写一个程序,利用查询方式实现50个字节数据的输出。输出的数据存放在数据段中以BUFFER开始的地址中(请在程序中加上相应的注释说明)。

.MOCEL SMALL .DATA

BLOCK DB 50 DUP(?) .CODE .STARTUP MAIAN:

MOV BX,OFFSET BLOCK MOV SI,0 MAIN1:

MOV DX,0216H IN AL,DX AND AL,80H JZ MAIN1 MOV DX,0217H MOV AL,[BX+SI] OUT DX,AL INC SI CMP SI,50 JNE MAIN1 .EXIT END

8.17 一个完整的中断过程包括那几个阶段?其中哪些步骤由系统自动完成?哪些环节由用

户完成?

解:一个完整的中断过程由中断请求、中断响应和中断处理3个阶段组成。 一次中断处理过程通常要经过如下几个步骤完成: 1中断请求:由中断源发出并送给CPU的控制信号。

2关中断:保证在此之后的一小段时间内CPU不能响应新的中断请求。

文件名:微机原理与接口技术习题 第 39 页 共 61 页

错误!未指定书签。与接口技术

3保存断点,保护现场:用中断隐指令实现。断点和现场信息一般保存在堆栈中,保存信息一定要完整完成,以保证被停下来的程序得以继续正常运行。

4判别中断源,转中断服务:找出中断服务程序的入口地址。多个中断源时找出中断优先级最高的中断源。

5开中断,以便尽快地进入可以响应更高级别中断请求的运行状态。 6若有更高级别中断请求到来,则进行新的中断响应过程。

7执行中断服务程序,完成后准备返回主程序,为此,执行关中断。 8恢复现场,恢复断点。

9开中断。关中断和开中断是为了保证能完整的恢复现场的操作。开中断之后,若有更高级别中断请求来到,则进入新的中断响应过程。

10返回断点。

其中第3与第8步由系统自动完成,2,4,5,7,9,10步由用户完成。 8.18 中断方式与DMA方式相比有何不足?各用在什么场合?

解:中断方式传送数据的速度比DMA慢,不适于高速外设的要求。

中断方式主要应用于处理复杂随机事件、控制中低速1/O;DMA方式高速、批量数适用于据的简单传送。

8.19 某字符输出设备的数据端口地址是100H,控制/状态端口地址是101H,当状态端口D7位为1时表示设备准备好,用D0对输出设备选通。试编写查询方式输出数据的程序,将存储器中以BUF为首地址的一串字符(以$为结束符)输出给该设备。

解:

.MOCEL SMALL .DATA

BUF DB \.CODE .STARTUP MAIAN:

MOV BX,OFFSET BUF MOV SI,0 MAIN1:

MOV DX,0101H MOV AL,01H OUT DX,AL IN AL,DX AND AL,80H JZ MAIN1 MOV DX,0100H MOV AL,[BX+SI] CMP AL,'$' JE MAIN3 OUT DX,AL

文件名:微机原理与接口技术习题

第 40 页 共 61 页

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

Top