微机原理及汇编语言课后习题解答

更新时间:2024-05-19 08:58:01 阅读量: 综合文库 文档下载

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

微机原理与汇编语言

课后习题解答

第 1 页 共 27 页

第1章 计算机基础知识

1.微处理器、微型计算机和微型计算机系统三者之间有什么不同? 2.为什么把微型计算机的基本结构说成是总线结构? 3.试说明字节和字长的概念。

4.CPU在内部结构上由哪几部分组成?CPU应具备哪些主要功能? 5.为什么把微型计算机的基本结构说成是总线结构? 6.微型计算机采用总线结构有什么优点?

7.____________是以CPU为核心,加上存储器、I/O接口和系统总线组成的。 A.微处理器 B.微型计算机 C.微型计算机系统 8.堆栈指针的作用是用来指示______________。

A.栈底地址 B.栈顶地址 C.下一条要执行指令的地址 9.在微程序控制器中,机器指令与微指令的关系是________________。 A.每条机器指令对应一条微指令

B.一段由机器指令编成的程序由一条微指令来执行 C.每条机器指令由一段微指令编成的微程序来解释执行 10.计算机内的“溢出”是指其运算的结果_________________。 A.为无穷大

B.超出了计算机内存储单元所能存储的数值范围

C.超出了该指令所指定的结果单元所能存储的数值范围 11.程序计数器(PC)的位数取决于____________。

A.存储器的容量 B.指令字长 C.机器字长

12.8位补码操作数“10010011”等值扩展为16位后,其机器数为_________。 A.1111111110010011 B.0000000010010011 C.100000001010011

13.计算机的字长越长,一个字所能表示的数据精度就越高;在完成同样精度的运算 时,则处理速度______。

A.越高 B.越低 C.不一定

14.具有指令流水线结构的CPU,一般情况下指令的执行时间主要取决于______。 A.指令执行的步骤 B.CPU有无等待状态

C.CPU的时钟周期 D.CPU内的Cache存储器大小 15.将下列十进制数分别转化为二进制数、十六进制数和压缩BCD码。 (1)15.32 (2)325.16 (3)68.31 (4)214.126 解:(1)15.32 = 1111.0101B = F.5H=00010101.00110010BCD

(2)325.16 = 10000101.0001B = 85.1H= 001100100101.00010110BCD (3)68.31 = 1000100.0100B = 64.4H= 01101000.00110001BCD

(4)214.126 = 11010110.0010B = D6.2H= 001000010100.000100100110BCD

第 2 页 共 27 页

16.将下列二进制数分别转化为十进制数和十六进制数。

(1)10110101 (2)11001011 (3)10101.1001 (4)101101.0101 解:(1)10010101=149=225Q=95H (2) 11001010 = 202 = 312Q = CAH

(3) 10111.1101 = 23.8125 = 27.64Q = 17.DH (4) 111001.0101 = 57.625 = 71.24Q = 39.5H 17.将下列十六进制数分别转化为二进制数、十进制数。

(1)FAH (2)12B8H (3)5A8.62H (4)2DF.2H 18.若X=—107,Y=+74按8位二进制可写出:。[X]补=____, [Y]补=_____ [X+Y]补=________,[X—Y]补=_________。

19.X=34AH,Y=8CH。问:有三位和两位十六进制数X和Y,

(1)若X,Y是纯数(无符号数),则:X十Y=________H;X—Y=________H。 (2)若X,Y是有符号数,则:X+Y=________H;X—Y=________H。

20.已知X=85,Y=76(均为十进制数),求[—85]补,[—76]补。并利用补码的加、减

法运算规则计算[X—Y]补,[—X+Y]补,[—X—Y]补。结果的各机器数及其真值请用十六进制表示,并由运算过程中的标志位OF判断结果是否溢出。 21. (1)设[X]补=10101010B,则[1/2X]补的值是什么? (2)设[X]补=11010100B,则[-1/4X]补的值是什么?

第2章 微型计算机结构

1. 8086是多少位的微处理器?为什么?

答:8086是16位的微处理器,因为8086在其芯片内部采用16位数据传输,每周期能传送或接收16位数据。

2. EU与BIU各自的功能是什么?如何协同工作?

答:EU即指令执行部件,其主要功能是执行命令;BIU即总线接口部件,其主要功能是负责完成CPU与储存器或I/O设备之间的数据传送。EU经过BIU进行片外操作数的访问,BIU为EU提供将要执行的指令。EU与BIU可分别独立工作,当EU不需BIU提供服务时,BIU可进行填充指令队列的操作。

3. 8086/8088微处理器内部有那些寄存器,它们的主要作用是什么?

答:8086CPU内共有14个16位寄存器,AX、BX、CX、DX、SP、BP、DI、SI。AX、BX、CX、DX一般作为通用数据寄存器。SP为堆栈指针寄存器,BP、DI、SI在间接寻址时作为地址寄存器或变址寄存器。总线接口部件设有段寄存器CS、DS、SS、ES和指令指针寄存器IP。段寄存器存放段地址,与偏移地址共同形成存储器的物理地址。IP的内容

第 3 页 共 27 页

为下一条将要执行指令的偏移地址,与CS共同形成下一条指令的物理地址。 4. 8086对存储器的管理为什么采用分段的办法?

答:8086是一个16位的结构,采用分段管理办法可形成超过16位的存储器物理地址,扩大对存储器的寻址范围 (1MB,20位地址)。若不用分段方法,16位地址只能寻址64KB空间。

5. 在8086中,逻辑地址、偏移地址、物理地址分别指的是什么?具体说明。

答:逻辑地址是在程序中对存储器地址的一种表示方法,由段地址和段内偏移地址两部分组成,如1234H:0088H。偏移地址是指段内某个存储单元相对该段首地址的差值,是一个16位的二进制代码。物理地址是8086芯片引线送出的20位地址码,用来指出一个特定的存储单元。

6. 给定一个存放数据的内存单元的偏移地址是20C0H,(DS)=0C00EH,求出该内存单

元的物理地址。

答:物理地址=(DS)*10H+20C0H=0C00EH*10H+20C0H=0C21A0H 7. 8086/8088为什么采用地址/数据引线复用技术? 答:考虑到芯片成本,8086/8088采用40条引线的封装结构。40条引线引出8086/8088的所有信号是不够用的,采用地址/数据线复用引线方法可以解决这一矛盾,从逻辑角度,地址与数据信号不会同时出现,二者可以分时复用同一组引线。 8. 8086与8088的主要区别是什么?

9. 怎样确定8086的最大或最小工作模式?最大、最小模式产生控制信号的方法有何不

同?

10.8086被复位以后,有关寄存器的状态是什么?微处理器从何处开始执行程序? 11.8086基本总线周期是如何组成的?各状态中完成什么基本操作?

答:基本总线周期由4个时钟(CLK)周期组成,按时间顺序定义为T1、T2、T3、T4。在T1期间8086发出访问目的地的地址信号和地址锁存选通信号ALE;T2期间发出读写命令信号RD#、WR#及其它相关信号;T3期间完成数据的访问;T4结束该总线周期。 12.结合8086最小模式下总线操作时序图,说明ALE、M/IO#、DT/R#、RD#、READY信号

的功能。

答:ALE为外部地址锁存器的选通脉冲,在T1期间输出;M/IO#确定总线操作的对象是存储器还是I/O接口电路,在T1输出;DT/R#为数据总线缓冲器的方向控制信号,在T1输出;RD#为读命令信号;在T2输出;READY信号为存储器或I/O接口\准备好\信号,在T3期间给出,否则8086要在T3与T4间插入Tw等待状态。 13.8086中断分哪两类?8086可处理多少种中断?

答:中断分为硬件中断和软件中断。8086为每个中断源分配了一个中断类型码,其取值范围为0-255,即可处理256种中断。

硬件中断又可分为两类:可屏蔽中断和不可屏蔽中断。不可屏蔽中断:由NMI引脚引入,它不受中断允许标志位的影响;可屏蔽中断:由INTR引脚引入,它受中断允许标志位的影响。

第 4 页 共 27 页

14.8086可屏蔽中断请求输入线是什么?“可屏蔽”的涵义是什么?

15.中断向量表的功能是什么?已知中断类型码分别是84H和0FAH,它们的中断向量应

放在中断向量表的什么位置?

答:中断向量是指中断服务程序入口地址的偏移量与段基值,一个中断向量占据4字节空间。中断向量表是8088系统内存中最低端1K字节空间,它的作用就是按照中断类型号从小到大的顺序存储对应的中断向量,总共存储256个中断向量。在中断响应过程中,CPU通过从接口电路获取的中断类型号(中断向量号)计算对应中断向量在表中的位置,并从中断向量表中获取中断向量,将程序流程转向中断服务程序的入口地址。 84H是它的I/O地址代表它的中断类型是21即为dos系统功能调用 FAH应为0FAH,即DOS系统功能调用中的打开文件(FCB)功能

调用参数DS:DX=FCB首地址 返回参数AL=00文件找到AL=FF文件未找到 16.简述在最小工作模式下,8086如何响应一个总线请求?

17. 在基于8086的微计算机系统中,存储器是如何组织的?是如何与处理器总线连接

的?BHE#信号起什么作用? 18.“80386是一个32位微处理器”,这句话的涵义主要指的是什么? 19.80X86系列微处理器采取与先前的微处理器兼容的技术路线,有什么好处?有什么不

足?

20.80386内部结构由哪几部分组成?简述各部分的作用。 21.80386有几种存储器管理模式?都是什么?

22.在不同的存储器管理模式下,80386的段寄存器的作用是什么?

23.试说明虚拟存储器的含义,它与物理存储器有什么区别?80386虚拟地址空间有多

大?

第3章 指 令 系 统

1. 简要分析8086的指令格式由哪些部分组成,什么是操作码?什么是操作数?寻址和

寻址方式的含义是什么?8086指令系统有哪些寻址方式? 答:8086的指令格式由操作码和操作数字段组成。 操作码:要完成的操作。 操作数:参与操作的对象。

寻址:寻找操作数或操作数地址的过程。

寻址方式:指令中给出的找到操作数或操作数地址采用的方式。 8086指令系统的寻址方式主要有立即数寻址、寄存器寻址、存储器寻址和I/O端口寻址,存储器寻址可进一步分为直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、

第 5 页 共 27 页

相对基址变址寻址;I/O端口指令IN和OUT使用的端口寻址方式有直接寻址和间接寻址。 2. 设(DS)=2000H,(ES)= 2100H,(SS)= 1500H,(SI)= 00A0H,(BX)= 0100H,(BP)= 0010H,

数据变量VAL的偏移地址为0050H,请指出下列指令的源操作数字段是什么寻址方式?它的物理地址是多少?

(1) MOV AX,21H (2) MOV AX,BX (3) MOV AX,[1000H] (4) MOV AX,VAL (5) MOV AX,[BX] (6) MOV AX,ES:[BX] (7) MOV AX,[BP] (8) MOV AX,[SI] (9) MOV AX,[BX+10] (10) MOV AX,VAL[BX]

(11) MOV AX,[BX][SI] (12) MOV AX,VAL[BX][SI] 解:(1)MOV AX,21H

立即寻址,源操作数直接放在指令中 (2)MOV AX,BX

寄存器寻址,源操作数放在寄存器BX中 (3)MOV AX,[1000H]

直接寻址,EA = 1000H,PA =(DS)×10H+EA = 2000H×10H+1000H = 21000H (4)MOV AX,VAL 直接寻址,EA = [VAL] = 0050H,PA =(DS)×10H+EA = 2000H×10H+0050H = 20050H (5)MOV AX,[BX]

寄存器间接寻址,EA =(BX)= 0100H,PA =(DS)×10H+EA = 2000H×10H+0100H = 20100H

(6)MOV AX,ES:[BX]

寄存器间接寻址,EA =(BX)= 0100H,PA =(ES)×10H+EA = 2100H×10H+0100H = 21100H

(7)MOV AX,[BP]

寄存器间接寻址,EA =(BP)= 0010H,PA =(SS)×10H+EA = 1500H×10H+0010H = 15010H

(8)MOV AX,[SI]

寄存器间接寻址,EA =(SI)= 00A0H,PA =(DS)×10H+EA = 2000H×10H+00A0H = 200A0H

(9)MOV AX,[BX+10]

寄存器相对寻址,EA =(BX)+10D = 0100H+000AH= 010AH,PA =(DS)×10H+EA = 2000H×10H+010AH = 2010AH (10)MOV AX,VAL[BX]

寄存器相对寻址,EA =(BX)+[VAL]= 0100H+0050H= 0150H,PA =(DS)×10H+EA = 2000H×10H+0150H = 20150H (11)MOV AX,[BX][SI]

第 6 页 共 27 页

基址变址寻址,EA = (BX)+(SI)= 0100H+00A0H = 01A0H,PA = (DS)×10H+EA = 2000H×10H+01A0H = 201A0H (12)MOV AX,VAL[BX][SI]

基址变址相对寻址,EA = (BX)+(SI)+[VAL]= 0100H+00A0H+0050H = 01F0H,PA =(DS)×10H+EA = 2000H×10H+01F0H = 201F0H

3. 给定寄存器及存储单元的内容为:(DS) = 2000H,(BX) = 0100H,(SI) = 0002H,(20100) =32H,(20101)=51H,(20102) =26H,(20103)= 83H,(21200)=1AH,(21201)=B6H,(21202)=D1H,(21203)=29H。试说明下列各条指令执行完后,AX寄存器中保存的内容是什么。

(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] 解:(1)MOV AX,1200H 执行后,(AX)= 1200H (2)MOV AX,BX 执行后,(AX)= (BX)= 0100H (3)MOV AX,[1200H] 直接寻址,EA = [VAL] = 1200H,PA =(DS)×10H+EA = 2000H×10H+1200H = 21200H,执行后,(AX)= B61AH (4)MOV AX,[BX]

EA = (BX)= 0100H,PA =(DS)×10H+EA = 2000H×10H+0100H = 20100H,执行后,(AX)= 5132H

(5)MOV AX,1100H[BX]

EA =(BX)+1100H = 0100H+1100H = 1200H,PA =(DS)×10H+EA = 2000H×10H+1200H = 21200H,执行后,(AX)= B61AH (6)MOV AX,[BX][SI]

EA =(BX)+(SI)= 0100H+0002H = 0102H,PA =(DS)×10H+EA = 2000H×10H+0102H = 20102H,执行后,(AX)= 29D1H

4. 试说明指令MOV BX,10H[BX]与指令LEA BX,10H[BX]的区别。

答:前者是数据传送类指令,表示将数据段中以(BX+10H)为偏移地址的16位数据送寄存器BX.;后者是取偏移地址指令,执行的结果是(BX)= (BX)+10H,即操作数的偏移地址为(BX)+10H。

5. 假设(DS)=3000H,(CS)=1000H,(IP)=1500H,(BX)=1000H,位移量大DATA=50H

(31000H)=1250H,(31050H)=2400H,(31052H)=6000H。确定下列转移指令的转移地址。 (1)JMP 2500H (2) JMP BX

(3)JMP WORD PTR[BX] (4) JMP DWORD PTR[BX+DATA] 解:(1)JMP 2500H

第 7 页 共 27 页

(IP)=2500H (2) JMP BX

(IP)=(BX)=1000H (3)JMP WORD PTR[BX]

物理地址=(DS)*10H+(BX)=3000H*10H+1000H=31000H,所以(IP)=1250H

(4) JMP DWORD PTR[BX+DATA] 物理地址=(DS)*10H+(BX)+(DATA)=3000H*10H+1000H+50H=31050H,所以(IP)=2400H 6. 设堆栈指针SP的初值为2500H, (AX)=1234H,(BX)=5678H。执行指令PUSH AX后,

(SP)=?,再执行指令PUSH BX及POP AX之后,(SP)=? (AX)=? (BX)=? 解:堆栈指针SP总是指向栈顶,每执行一次PUSH指令SP-2,执行一次POP指令SP+2.所以,执行PUSH AX指令后,(SP)=24FEH;再执行PUSH BX及POP AX后,(SP)=24FEH,(AX)=(BX)=5678H

7. 分析下列指令的正误,对于错误的指令要说明原因并加以改正。 (1) MOV AH,BX (2) MOV [BX],[SI]

(3) MOV AX,[SI][DI] (4) MOV MYDAT[BX][SI],ES:AX (5) MOV BYTE PTR[BX],1000 (6) MOV BX,OFFSET MAYDAT[SI] (7) MOV CS,AX (8) MOV DS,BP 解:(1) MOV AH,BX

错误,寄存器类型不匹配,可改为MOV AX,BX (2) MOV [BX],[SI]

错误,两个操作数不能都为存储单元,可改为MOV BX,[SI]或MOV [BX],SI (3) MOV AX,[SI][DI]

错误,寻址方式中只能出现一个变址寄存器,可改为MOV AX,[BX][DI]。 (4) MOV MYDAT[BX][SI],ES:AX

错误,AX前不能有段跨越前缀,去掉ES:,改为MOV MYDAT[BX][SI],AX (5) MOV BYTE PTR[BX],1000 错误,1000超出字节空间存储范围 (6) MOV BX,OFFSET MAYDAT[SI] 正确

(7) MOV CS,AX

错误,MOV指令CS不能做目的操作数,可改为MOV DS,AX (8) MOV DS,BP 正确

注:本题错误改正部分有的答案并不唯一,可参考原题题意改成合法形式。 8. 设VAR1、VAR2为字变量,LAB为标号,分析下列指令的错误之处并加以改正。 (1) ADD VAR1,VAR2 (2) MOV AL,VAR2 (3) SUB AL,VAR1 (4) JMP LAB[SI]

第 8 页 共 27 页

(5) JNZ VAR1

解:(1) ADD VAR1,VAR2

错误,两个操作数不能都为存储单元,可改为 MOV BX,VAR2 ADD VAR1,BX

(2) MOV AL,VAR2

错误,数据类型不匹配,可改为MOV AX,VAR2 (3) SUB AL,VAR1

错误,数据类型不匹配,可改为SUB AX,VAR1 (4) JMP LAB[SI]

错误,寄存器相对寻址形式中不能用标号做位移量,可改为JMP VAR1[SI] (5) JNZ VAR1

错误,条件跳转指令只能进行段内短跳转,所以后面只能跟短标号。可改为JNZ LAB (6) JMP NEAR LAB

错误,缺少运算符PTR,可改为JMP NEAR PTR LAB

注:本题错误改正部分有的答案并不唯一,可参考原题题意改成合法形式。

9. 已知 (AL)=6CH, (BL)=0A9H,试问执行指令ADD AL,BL后,AF、CF、OF、PF、SF、和

ZF的值各为多少?

解:指令ADD AL,BL的功能为AL+BL→AL,其运算过程如下:

6CHA9H 115H

由以上运算可知,

低4位向高4位有进位,所以AF=1; 最高位产生了进位,所以CF=1;

该运算是一个正数加一个负数,所以不会产生溢出,所以OF=0;只有正数+正数=负数,或者负数+负数=正数时,才可能产生溢出现象;

该运算结果的低8位为0001 0101,含有奇数个1,所以PF=0; 该运算结果的最高位为符号位,为0,所以SF=0; 当前的运算结果不为零,所以ZF=0。 10.试判断下列程序执行后,(BX)=的内容。

MOV CL,5 MOV BX,01C9H ROL BX,1 RCR BX,CL

解:该程序段是首先将BX内容不带进位循环左移1位,再循环右移5位。即相当于将原BX内容不带进位循环右移4位

第 9 页 共 27 页

01C9H=0000 0001 1100 1001B

程序执行后,为1001 0000 0001 1100B 故结果为901CH

11.写出能够完成下列操作的8086CPU指令。 (1) 把4629H传送给AX寄存器; (2) 从AX寄存器中减去3218H; (3) 把BUF的偏移地址送入BX中。

12.根据以下要求写出相应的汇编语言指令。

(1) 把BX和DX寄存器的内容相加,结果存入DX寄存器中;

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

(3) 用寄存器BX和位移量21B5H的变址寻址方式把存储器中的一个字和(CX)相加,并把结果送回存储器单元中;

(4) 用位移量2158H的直接寻址方式把存储器中的一个字与数3160H相加,并把结果送回该存储器中;

(5) 把数25H与(AL)相加,结果送回寄存器AL中。 13.按下列要求写出相应的指令或程序段。 (1)使BL寄存器中的高、低四位互换; (2)屏蔽AX寄存器中的b10和b5位;

(3)分别测试AX寄存器中b13和b2位是否为1。

14.执行以下两条指令后,标志寄存器FLAGS的六个状态为各为何值?

MOV AX,95C8H ADD AX,8379H

解:指令的功能为95C8H+8739H→AL,其运算过程如下:

95C8H

8379H

11941H 由以上运算可知,

低4位向高4位有进位,所以AF=1; 最高位产生了进位,所以CF=1;

该运算是两个负数相加结果为正数,产生溢出,所以OF=1; 该运算结果的低8位为0100 0001,含有偶数个1,所以PF=1; 该运算结果的最高位为符号位,为0,所以SF=0; 当前的运算结果不为零,所以ZF=0。

第 10 页 共 27 页

15.若(AL)=85H,(BL)=11H,在分别执行指令MUL和IMUL后,其结果是多少?

第4章 汇编语言程序设计

1. 请分别用DB、DW、DD伪指令写出在DATA开始的连续8个单元中依次存放数据11H、

22H、33H、44H、55H、66H、77H、88H的数据定义语句。 解:定义如下:

DATA DB 11H,22H,33H,44H,55H,66H,77H,88H DW 2211H,4433H,6655H,8877H DD 44332211H,88776655H

2. 若程序的数据段定义如下,写出各指令语句独立执行后的结果:

DSEG SEGMENT

DATA1 DB 10H,20H,30H DATA2 DW 10 DUP(?) STRING DB ‘123’ DSEG ENDS

(1) MOV AL,DATA1

(2) MOV BX,OFFSET DATA2 (3) LEA SI,STRING ADDBX,SI 解:(1)取变量DATA1的值. 指令执行后,(AL)=10H. (2)取变量DATA2的偏移地址. 指令执行后,(BX)=0002H.

(3)先取变量STRING的偏移地址送寄存器SI,之后送SI的内容与DI的内容相加并将结果送DI.指令执行后,(SI)=0016H;(DI)=(DI)+0018H

3. 试编写求两个无符号双字长数之和的程序。两数分别在MEM1和MEM2单元中,和放

在SUM单元。 解:程序编写如下: DATA SEGMENT

MEM1 DW 6655H,8877H MEM2 DW 8877H,6655H

SUM DW 2 DUP(?) ;55667788H+77885566H=0CCEECCEEH DATA ENDS CODE SEGMENT

第 11 页 共 27 页

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,MEM1+2 ADD AX,MEM2+2 MOV SUM+2,AX MOV AX,MEM1 ADC AX,MEM2 MOV SUM,AX MOV AH,4CH INT 21H CODE ENDS

END START

4. 试编写程序,测试AL寄存器的第4位是否为0?

解:程序编写如下: CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: TEST AL,08H JZ L1

L1:

MOV AH,4CH

INT 21H CODE ENDS

END START

5. 编写程序,将BUFFER中的一个8位二进制数转换为ASCII码,并按位数高低顺序存

放在ANSWER开始的内存单元中。

解:程序编写如下: DATA SEGMENT

BUFFER DB 4AH

ANSWER DB 2 DUP(?) DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX

第 12 页 共 27 页

MOV AL,BUFFER MOV CL,4 SHR AL,CL CMP AL,10 JC L1 ADD AL,7 L1: ADD AL,30H MOV ANSWER,AL

MOV AL,BUFFER

AND AL,0FH CMP AL,10 JC L2 ADD AL,7 L2: ADD AL,30H

MOV ANSWER+1,AL

MOV AH,4CH

INT 21H CODE ENDS

END START

6. 假设数据项定义如下:

DATA1 DB ‘HELLO! GOOD MORNING!’ DATA2 DB 20 DUP(?)

用串操作指令编写程序段,使其分别完成以下功能: i. 从左到右将DATA1中的字符串传送到DATA2中;

ii. 传送完后,比较DATA1和DATA2中的内容是否相同; iii. 把DATA1中的第3和第4个字节装入AX; iv. 将AX的内容存入DATA2+5开始的字节单元中。 解:编写程序段如下: (1) LEA SI,DATA1 LEA DI,DATA2 MOV CX,20

CLD

REP MOVSB (2) LEA SI,DATA1 LEA DI,DATA2 MOV CX,20

CLD

第 13 页 共 27 页

REPE CMPSB

JNZ NO ;不同转移到NO ;否则二字符串相同

NO:

(3) LEA SI,DATA1+2 LODSB MOV AH,AL LODSB

(4) LEA DI,DATA2+5 XCHG AH,AL STOSB MOV AL,AH STOSB

7. 执行下列指令后,AX寄存器中的内容是多少?

TABLE DW 10,20,30,40,50 ENTRY DW 3 ?

MOV BX,OFFSET TABLE ADD BX,ENTRY MOV AX,[BX] 解:分析:

MOV BX,OFFSET TABLE ;BX=0000H ADD BX,ENTRY ;BX=0003H MOV AX,[BX] ;AX=1E00H

由以上分析可知,执行指令后,AX=1E00H。

8. 编写程序段,将STRING1中的最后20个字符移到STRING2中(顺序不变)。

解:程序编写如下: LEA SI,STRING1 LEA DI,STRING2 MOV CX,60 CLD LOAD:LODSB DEC CX CMP CX,20 JNZ LOAD REP MOVSB

9. 假设一个48位数存放在DX:AX:BX中,试编写程序段,将该48位数乘2。

解:编写程序段如下:

第 14 页 共 27 页

CLC

SHL BX,1 SHL AX,1 SHL DX,1

10.试编写程序,比较AX,BX,CX中带符号数的大小,并将最大的数放在AX中。

解:编写程序如下:

CMP AX,BX

JG LL1 XCHG AX,BX

LL1: CMP AX,CX JG LL2 XCHG AX,CX LL2:

11.若接口03F8H的第1位(b1)和(b3)同时为1,表示接口03F8H有准备好的8位数

据,当CPU将数据取走后,b1和b3就不再同时为1了。仅当又有数据准备好时才再同时为1。

试编写程序,从上述接口读入200B的数据,并顺序放在DATA开始的地址中。 解:编写程序如下:

LEA BX,DATA MOV CX,200

LP0: MOV DX,03F8H ;状态端口地址

LP1: IN AL,DX AND AL,0AH CMP AL,0AH JNZ LP1

MOV DX,03F9H ;数据端口地址 IN AL,DX MOV [BX],AL INC BX

LOOP LP0

12.画图说明下列语句分配的存储空间及初始化的数据值。 (1)DATA1 DB ‘BYTE’,12,12H,2 DUP(0,?,3) (2)DATA2 DW 4 DUP(0,1,2),?,-5,256H

解:(1)存储空间分配情况如图(a)所示; (2) 存储空间分配情况如图(b)所示。

第 15 页 共 27 页

图(a) 图(b)

13.请用子程序结构编写如下程序:从键盘输入一个二位十进制的月份数(01~12),然

后显示出响应的英文缩写名。 解:编写程序如下:

DATA SEGMENT

TAB DB “Jan.Feb.Mar.Apr.May.Jun.Jul.Aug.Sep.Oct.Nov.Dec.” MESS DB “请输入二位月份:”,24H CR DB 10,13,24H DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA MAIN PROC FAR START: MOV AX,DATA MOV DS,AX LP: LEA DX,MESS MOV AH,9 INT 21H

CALL KEYMONTH ;键盘输入二位月份 CMP AL,‘Q’ JZ QUIT

CALL DISMONTH ;显示月份的英文缩写名 JMP LP QUIT: MOV AH,4CH INT 21H

第 16 页 共 27 页

MAIN ENDP KEYMONTH PROC MOV BL,0

MOV CX,2

CON: MOV AH,1 INT 21H

CMP AL,‘Q’ JZ EXIT SUB AL,30H JL CON CMP AL,9 JG CON XCHG AL,BL MOV BH,10 MUL BH ADD BL,AL DEC CX JNZ CON MOV AL,BL EXIT: RET KEYMONTH ENDP DISMONTH PROC SUB AL,1 MOV BL,4 MUL BL LEA BX,TAB ADD BX,AX MOV CX,3 DIS: MOV DL,[BX] MOV AH,2 INT 21H INC BX LOOP DIS LEA DX,CR MOV AH,9 INT 21H RET

第 17 页 共 27 页

DISMONTH ENDP CODE ENDS

END START 14.给出下列等值语句: LPHA EQU 100 BETA EQU 25 GRAMM EQU 4

试求出下列表达式的值:

(1)ALPHA*100+BETA; (2)(ALPHA + 4)*BETA-2 (3)(BETA/3)MOD 5; (4)GRAMM OR 3

解:(1) ALPHA*100+BETA=10025 (2) (ALPHA + 4)*BETA-2=2598

(3) (BETA/3)MOD 5=3 (4) GRAMM OR 3=7

15.图示以下数据段在存储器中的存放形式。 DATA SEGMENT

DATA1 DB 10H,34H,07H,09H DATA2 DW 2 DUP(42H) DATA3 DB ‘HELLO’ DATA4 EQU 12 DATA5 DD OABCDH DATA ENDS

解:图示如下:

第 18 页 共 27 页

16.阅读下边的程序段,试说明它实现的功能是什么? DATA SEGMENT

DATA1 DB ‘ABCDEFG’ DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA AAAA:MOV AX,DATA MOV DS,AX

MOV BX,OFFSET DATA1 MOV CX,7 NEXT: MOV AH,2 MOV AL,[BX] XCHG AL,DL INC BX INT 21H LOOP NEXT MOV AH,4CH INT 21H CODE ENDS END AAAA

答:程序功能是显示字符串‘ABCDEFG’

17.编写一程序段,把BUFFER开始的100个字节的内存区域初始化为55H、0AAH、55H、

0AAH、??、55H、0AAH。 解:编写程序如下:

DATA SEGMENT

BUFFER DB 100 DUP(?) DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,50 LEA BX,BUFFER LOP: MOV AL,55H MOV [BX],AL INC BX

MOV AL,0AAH

第 19 页 共 27 页

MOV [BX],AL INC BX LOOP LOP MOV AH,4CH INT 21H CODE ENDS

END START

18.有16个字节,编程序将其中第2、5、9、14、15个字节内容加3,其余字节内容乘

2(假定运算不会溢出)。 解:编写程序如下: DATA SEGMENT

BUFF DB 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 L EQU 0100100010000110B DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,16 MOV DX,L LEA BX,BUFF LP: MOV AL,[BX] SHL DX,1 JC LP1 ADD [BX],AL JMP LP2

LP1: ADD BYTE PTR[BX],3 LP2: INC BX LOOP LP MOV AH,4CH INT 21H CODE ENDS

END START

19.编写计算斐波那契数列前20个值的程序。斐波那契数列的定义如下: F(0)=0, F(1)=1,

F(N)=F(N-1)+F(N-2),N ≥ 2

第 20 页 共 27 页

解:编写程序如下:

DATA SEGMENT

TAB DW 0,1,18 DUP(?) DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA BX,TAB+4 MOV CX,18 LP: MOV AX,[BX-2] ADD AX,[BX-4] MOV [BX],AX ADD BX,2 LOOP LP

MOV AH,4CH

INT 21H CODE ENDS

END START

20.试编写将键盘输入的ASCII码转换为二进制数的程序。

解:编写程序如下: DATA SEGMENT NUM DW ? DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV BX,0 CON: MOV AH,1 INT 21H CMP AL,13 JZ QUIT SUB AL,30H JL CON CMP AL,9 JG CON

第 21 页 共 27 页

MOV AH,0

XCHG AX,BX

MOV CX,10

MUL CX

ADD BX,AX JMP CON QUIT: MOV NUM,BX

MOV AH,4CH

INT 21H CODE ENDS

END START

第5章

存储器系统

1. 半导体随机存储器RAM与只读存储器ROM有何区别?它们各有哪几种类型?

答:RAM是一种随机存储器,其中的任何存储单元都能随时读写,即存取操作与时间,存储单元物理位置顺序无关,一旦掉电,所存信息丢失。常见类型有静态RAM(SRAM)和动态RAM(DRAM)等。 ROM是一种只读存储器,其内容一经写入,在工作过程中就只能读出不能重写,即使掉电,信息也不会丢失。常见类型有掩模ROM,PROM,EPROM,EEPROM等。 2. 简述存储器的主要性能指标及目前采用较多的3级存储结构是什么? 3. 简述地址译码的两种方式,并指出它们在基本原理和适用场合上的区别。 4. 在基于8086的微计算机系统中,存储器是如何组织的?是如何与处理器总线连接

的?BHE#信号起什么作用?

5. 存储器的哪一部分用来存储程序指令及像常数和查找表一类的固定不变的信息?哪

一部分用来存储经常改变的数据?

6. 什么是高速缓冲存储器?在微机系统中使用高速缓冲存储器的作用是什么? 答:高速缓冲存储器(Cache)是存在于主存与CPU之间的一级存储器,一般由小容量但高速的SRAM组成。其主要功能是把CPU将要使用的指令和数据从主存储器中

第 22 页 共 27 页

复制到高速缓存中,再由高速缓存向CPU直接提供它所需要的大多数的指令和数据,实现CPU的零等待。

7. 存储器体系为什么采用分级结构,主要用于解决存储器中存在的哪些问题? 8. 什么是虚拟存储器?它的作用是什么?

9. 用8K×8位的静态RAM芯片组成16K×8位的存储器,地址线的高位与74LS138译码

器相连,采用全译码方式产生存储芯片的片选信号。试画出存储器与CPU之间的地址线、数据线及主要控制信号线的连接图。

10.为某8位机(地址总线为16位)设计一个32KB容量的存储器。要求采用2732芯片

构成8KB EPROM区,地址从0000H开始;采用6264芯片构成24KB RAM区,地址从2000H开始。片选信号采用全译码法。

第6章 输入输出和中断控制

1. 简述I/O端口的概念,I/O端口的地址空间是如何划分的? 2. 为什么无条件传送接口电路中两个寄存器可以分配一个地址。 3. 画出查询式输入程序流程图。 4. 叙述可屏蔽中断响应过程。

答:当8086收到INTR的高电平信号时,在当前指令执行完且IF=1的条件下,8086在两个总线周期中分别发出INTA#有效信号;在第二个INTA#期间,8086收到中断源发来的一字节中断类型码;8086完成保护现场的操作,CS、IP内容进入堆栈,请除IF、TF;8086将类型码乘4后得到中断向量表的入口地址,从此地址开始读取4字节的中断处理程序的入口地址,8086从此地址开始执行程序,完成了INTR中断请求的响应过程。 5. 叙述DMA方式传送数据块过程 。

答: 一个数据块的DMA传送过程(采用周期挪用控制方式)如下: DMA传送操作分三个阶段:准备阶段、DMA传送阶段和传送结束阶段。

Ⅰ.准备阶段:在这个阶段中,CPU通过指令向DMA控制器发送必要的传送参数。 ①控制字送DMA控制器指出数据传送方向。 ②预置MBAP,即数据块在主存缓冲区的首址。

③置DAR外设的地址,如外设为磁盘机,其地址包括:磁盘机号、盘面号、柱面号

第 23 页 共 27 页

和扇区号。

④给WBC预置,指出数据传送字节/字数。 Ⅱ.DMA传送阶段

DMA接口上传送的一批数据是一个个传送的,在周期挪用控制方式下DMA控制器主要完成以下五个操作。

①外设准备好一次数据传送后,接口向主机发DMA请求。

②CPU响应DMA请求,把总线使用权让给DMA控制器。DMA控制器控制源、目的端口准备传送数据。

③DMA周期挪用一次,交换一个数据信息。

④归还总线使用权,修改主存地址指针和传送计数值。

⑤判断这批数据是否传送完毕:是,结束该工作阶段;没有,又开始传送下一个数据。DMA中信息传送过程. Ⅲ.结束阶段

DMA在两种情况下都会进入结束阶段,一种情况是一批数据传送完毕,这是正常结束。另一种情况是DMA发生故障,也要进入结束阶段,这是非正常结束。不论是哪一种情况进入结束阶段,DMA都向主机发出中断请求,CPU执行服务程序查询DMA接口状态,根据状态进行不同的处理。

DMA是程序中断传送技术的发展。它在硬件逻辑机构的支持下,以更快的速度、更简便的形式传送数据。程序中断与DMA相比有以下几个不同。

①中断方式通过程序实现数据传送,而DMA方式不使用程序直接靠硬件来实现,信息传送速度快。

②CPU对中断的响应是在执行完一条指令之后,而对DMA的响应则可以在指令执行过程中的任何两个存储周期之间,请求响应快。

③中断方式必须切换程序,要进行CPU现场的保护和恢复操作。DMA仅挪用了一个存储周期,不改变CPU现场,额外化销小。

④DMA请求的优先权比中断请求高。CPU优先响应DMA请求,是为了避免DMA所连接的高速外设丢失数据。

⑤中断方式不仅具有I/O数据传送能力,而且还能处理异常事件,DMA只能进行I/O数据传送。

总而言之,在进行I/O控制时,DMA控制方式比程序中断控制方式速度快,但程序中断控制方式的应用范围比DMA控制方式广。

6. 简述不同的I/O数据传送控制方式的特点及主要应用场合?

7. 简述中断处理程序的结构模式,说明中断和子程序调用之间的主要区别是什么? 8. 简述中断向量表的结构,说明中断系统是如何根据中断类型号获得中断处理程序入

口地址的。

9. 编写程序段,轮流测试两个设备的状态寄存器,只要一个状态寄存器的第0位为1,

则与其相应的设备就输入一个字符;如果其中任一状态寄存器的第3位为1,则整个

第 24 页 共 27 页

输入过程结束。两个状态寄存器的端口地址分别是24H和26H,与其相应的数据输入寄存器的端口号则为28H和30H,输入字符分别存入首地址为BUF1和BUF2开始的存贮区中。 10.设中断类型9的中断处理程序的首地址为INT9PRO,给出为中断类型9设置中断向量

的程序段。

11.8259A的初始化命令字(ICW)和操作命令字(OCW)的编程一般在什么时候进行?

12.写出设置8259A中断结束方式的相应指令。

13.简述初始化命令字寄存器和操作命令字寄存器的寻址方法。

14.中断硬件系统由两片8259A组成,从片的INT脚连到主片的IR2上,编写8259A初

始化程序,端口地址和工作方式自定。

第7章 常用数字接口电路

1. 如下图所示,PC系列微机应用系统以8255A作为接口,采集一组开关S0~S7的状态,

然后它通过一组发光二极管LED0~LED7显示出来,(Si闭合,对应LEDi亮;Si断开,对应LEDi灭),电路连接如图所示。已知8255A的A、B两组均工作在方式0。 (1)写出8255A的四个端口地址; (2)写出8255A的工作方式控制字; (3)编写程序完成上面的要求;

(4)若要求Si闭合时,对应LEDi亮一秒,然后再灭一秒,直到Si断开LEDi灭,试说明你采用的方法。

第 25 页 共 27 页

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

Top