微机原理与接口技术课后习题参考答案_第1页
微机原理与接口技术课后习题参考答案_第2页
微机原理与接口技术课后习题参考答案_第3页
微机原理与接口技术课后习题参考答案_第4页
微机原理与接口技术课后习题参考答案_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

《微机原理与接口技术》李华贵主编

课后习题参考答案

第1章(1.6习题)

1.简述名词的概念:微处理器、微型计算机、微型计算机系统。

答:

(1)微处理器:微处理器(Microprocessor)简称NP或MP,或CPU。CPU是采用大规

模和超大规模集成电路技术将算术逻辑部件ALU(ArithmeticLogicUnit)、控制部件CU

(ControlUnit)和寄存器组R(Registers)等三个基本部分以及内部总线集成在一块半导体

芯片上构成的电子器件。

(2)微型计算机:微型计算机(Microcomputer)是指以微处理器为核心,配上由大

规模集成电路制作的存储器、输入/输出接口电路及系统总线等所组成的计算机,简称微机。

(3)微型计算机系统:微型计算机系统由硬件与软件两大部分组成,分别称为硬件

(Hardware)系统与软件(Software)系统。其中,硬件(Hardware)系统由CPU、内存储

器、各类I/O接口、相应的I/O设备以及连接各部件的地址总线、数据总线、控制总线等组

成。

软件(Software)系统:计算机软件(Software)是指为运行、维护、管理、应用计算

机所编制的程序及程序运行所需要的数据文档资料的总和。一般把软件划分为系统软件和

应用软件。其中系统软件为计算机使用提供最基本的功能,但是并不针对某一特定应用领

域。而应用软件则恰好相反,不同的应用软件根据用户和所服务的领域提供不同的功能。

2.简述名词的概念:指令寄存器、地址寄存器、标志寄存器。

答:

(1)指令寄存器:指令寄存器(InstructionRegister,IR)用来保存计算机当前正在执

行或即将执行的指令。当一条指令被执行时,首先,CPU从内存取出指令的操作码,并存

入IR中,以便指令译码器进行译码分析。

(2)地址寄存器:地址寄存器(AddressRegister,AR)被动地接受IP传送给它的地址值

(二进制地址),AR的作用是保持IP送来的地址,并且以并行方式连接输出到CPU的地址

引脚上,以便CPU访问指定的内存单元。

(3)标志寄存器:标志寄存器(Flags,F)是CPU中不可缺少的程序状态寄存器,因此,

也称程序状态字寄存器(PSW),所谓状态是指算术或逻辑运算后,结果的状态以二进制

的0或1在标志寄存器中标识出来,例如,运算结果有进位,则进位标志位CF=1,否则为0。

3.何谓IA-32处理器?

《微机原理与接口技术》课后习题的参考答案

答:

Intel公司推出了32位结构的80386微处理器后,确定了80386芯片的指令集结构

(InstructionSetArchitecture)为以后开发80X86系列处理器的标准,称其为Intel32位结构

(IntelArchitecture-32,IA-32).后来的80486、Pentium等微处理器统称为IA-32处理器,

或称32位80X86处理器。

4.什么叫总线?总线包括哪三种?

答:

所谓总线,它将多个功能部件连接起来,并提供传送信息的公共通道,能为多个功能

部件分时共享,CPU通过总线连接存储器和I/O接口等,构成了微型计算机。

这里指的总线(BUS)包括地址总线、数据总线和控制总线三种。

5.地址总线的作用是什么?

答:

地址总线(AddressBus,AB),通常是CPU用来发出地址信息的,用于对存储器和I/O

接口进行寻址。

6.什么叫溢出?判断溢出的方法是什么?

答:

(1)溢出通常指计算机运算的结果超出/计算机所能允许的范围。本章所讲的溢出是

指用补码实现加/减运算后,若参与操作的两数在定义域内,但运算结果超出了字长范围内

补码所能允许表示的值,所计算出的结果产生了错误,称之为溢出。

(2)力FI/减运算判断溢出的方法:

如果把加/减法运算都变成补码相加,则两个正数相加可能产生正的溢出,两个负数相

加可能会产生负的溢出,正负两数相加不会产生溢出。

具体实现的方法是:两个操作数运算后,用最高位和次高位产生的进位位异或,异或

结果为1,则表示有溢出,结果为0,表示无溢出。例如:两个8位数运算后,溢出标志

OF=C6©C7

7.假设四种CPU主存地址分别为16根、20根、24根以及32根,试问每利9PU可寻址内

存多少字节?

解:每种CPU可寻址内存分别是:2,64KB、22O=1MB>224=16MB>232=4GB«

8.在般指令格式中,由哪两部分组成?

答:

由操作码和操作数组成。

9.设字长为16位,将下列十进制数转换成二进制数、十六进制数以及BCD数。

①65②129③257④513

2

解:

①65=01000000B=4IH=(01100101)BCD

②129=10000001B=81H=(000100101001)BCD

③257=100000001B=101H=(001001010111)BCD

④513=1000000001B=201H=(010100010011)BCD

10.设字长为8位,写出x、y的原码、反码和补码,并且用补码计算x+y,问是否有溢

出?

①x=-78y=35②x=-64y=-66

解:

①x=-78y=35

[X]®=11001110,[X],*=10110001,[X]jh=10110010

[Y]%=00100011,lY]tt=00100011,[Y卜卜=00100011

[X]<n-[Y]f,-10110010+00100011=11010101,无溢出。

②x=-64y=-66

[X]s=l1000000,[X]s=10111111,[Xbh=ll000000

[Y]»:=l1000010,[Y]反=10111101,[Y]tt=10111110

[X]tt+[Y]fl=l1000000+10111110=01111110,有溢出。

11.试用8位二进制写出以下数、字母以及控制命令的ASCII码,还要写出它们各自的

奇校验、偶校验、标记校验及空格校验的ASCII码。

①B②8③CR④NUL

解:各自对应的奇校验、偶校验、标记校验及空格校验的ASCH码如表1所示。

表1数、字母以及控制命令的ASCH码

数、字母以及控制命令奇校验偶校验标记校验空格校验

B1100001001(X)00101100001001000010

800111000101110001011100000111000

CR000011011000011011000110100001101

NUL1()000()00000(X)000010(X)0000OOOOOO(X)

12.设两个BCD数X=10001001,Y=OH10101,试用列竖式的方法计算X+Y,注意要

做加6修正运算。

解:

10001001

01110101

11111110结果不正确

110个位加6修正

《微机原理与接口技术》课后习题的参考答案

100000100结果还不正确

+110十位加6修正

I01100100结果正确

13.若规格化32位浮点数N的二进制存储格式为41360000H,求其对应的卜进制数值。

解:

41360000H=01000001001101100000000000000000B

N=(-1)SX(l.M)X2E-I27=(-1)°X(1.011011)X2130'127

=1.O11O11X23=1O11.O11=11.375D

14.微机中的存储器是如何编址的?

答:

在微机中,存储器均按字节(一字节由8位二进制信息组成)编址,即每个字节有一个

二进制的地址编码。给每个存储单元分配的一个固定地址,称为单元地址。

15.微型计算机的硬件系统由那些部件组成?

答:

微型计算机的硬件系统主要由运算器、控制器、存储器、输入设备及输出设备五大部

分组成。

16.计算机的主要性能指标有哪些?

答:字长、CPU的主频、主存储器的容量及外存储器的容量等。

第2章(2.5习题)

1.微型计算机可以工作在哪三种工作模式下?

答:

微处理器可以工作在:实地址模式、保护模式及虚拟8086模式共三种。

2.如何从实模式转变到保护模式?

答:

通过对CPU中的控制寄存器CR0中的bO位置1,即保护允许位PE置1,于是系统进入保

护模式。这是由操作系统程序来实现的。

3.实模式有哪些特征?

答:

实地址模式(Real-AddressMode)也称实模式,简单地说,是指80286以上的微处理器

所采用的8086的工作模式。在实模式下,采用类似8086CPU的体系结构,其寻址机制,尤

4

其是存储器寻址,以及中断处理机制均和8086相同。在实模式下,关键是CPU寻址空间只

有1MB(00000H-FFFFFH),也是采用分段管理存储器的方式,将存储器分成四种类型

的段,每段存储空间最大为64KB。将1MB的存储空间保留两个区域:一个是中断向量表区

(00000~003FFH),这是1KB的存储空间,用于存放256个中断服务程序的入口地址(中断

向量),每个中断向量占4字节。

4.16位微处理器有哪些通用寄存器?

答:

AX、BX、CX、DX、SLDkSP和BP。

5.16位微处理器有哪4个段寄存器?每个段寄存器的作用是什么?

答:

4个段寄存器分别是代码段寄存器CS、数据段寄存器DS、附加段寄存器ES及堆栈段寄

存器SS。

(1)代码段寄存器CS是一个随机存取存储区,用来保存微处理器使用的程序代码。

在8086系统中,代码段寄存器CS定义了代码段的起始地址。代码段的最大存储空间为64KB。

(2)数据段寄存器DS也是一个随机存取存储区,用来保存程序执行过程中所使用的

数据及存放程序运行后的结果.数据段寄存器DS定义了数据段的起始地址,其最大存储空

间也是64KB。

(3)附加段寄存器ES是为某些串操作指令存放操作数而附加的一个数据段。与数据

段类似,附加段寄存器ES定义了附加段的起始地址,其最大存储空间也为64KB。

(4)堆栈段寄存器SS是一个特殊的随机存取存储区,用来临时保存程序执行过程中有

关寄存器的内容、程序的地址信息及传递参数等。堆栈段寄存器SS与堆栈指针SP共同确定

堆栈段内的存取地址。其最大存储空间为64KB。

6.如何理解32位微处理器的通用寄存器与16位的通用寄存器兼容?

答:

虽然32位微处理器将8086原来的8个16位通用寄存器AX、BX、CX、DX、SLDLBP、

SP均扩展成(Extended)32位的寄存器,即EAX、EBX、ECX、EDX、ESkEDI、EBP、

ESP。但是,它保留了原来的8个16位寄存器和8个8位的寄存器,仍然可以使用它们编程,

当然,所编写的程序仍然可以在32位机上运行。既可以用32位寄存器编程,还可以用16位

及8位寄存器编程,这就实现了寄存器的兼容。

7.什么叫段基地址?什么叫偏移地址?

答:

编程人员在编程时,只能涉及到逻辑地址,而不能涉及到实际地址。逻辑地址在实模

式下,它由段基地址与段内偏移地址组成,习惯上写为“段基地址:偏移地址”,实模式

下,段基地址与段内偏移地址都是16位,段基地址是段起始地址的高16位,说明每个段在

《微机原理与接口技术》课后习题的参考答案

主存中的起始位置,段内偏移地址也称“偏移量”,是所要访问存储单元距离起始地址之

间的字节距离。

在32位段的情况下,偏移量是32位。

8.段寄存器与32位偏移地址寄存器的固定搭配如何?

答:

固定搭配如表2所示。

表2段寄存器与32位偏移地址寄存器的固定搭配

段寄存器偏移地址寄存器物理地址的用途

CSEIP指令地址

DSEAX、EBX、ECX>EDX、ESI、数据段内地址

EDI、8位、16位或32位二进制数

SSESP、EBP堆栈段内地址

ES只有串操作时默认EDI附加数据段内地址(目地址)

FS无固定搭配寄存器一般数据地址

GS无固定搭配寄存器一般数据地址

9.8086CPU由哪两部分组成?它们的主要功能各是什么?

答:

8086CPU内部结构从功能上看,它由两大部件组成,分为总线接口部件BIU(Bus

InterfaceUnit)和执行部件EU(ExecutionUnit)。

(1)总线接口部件BIU的主要功能:它是8086CPU与外部存储器和I/O端口的接口,

提供了16位双向数据总线和20位地址总线,负责CPU与存储器及I/O端口之间的数据传送操

作(包括物理地址的形成)。

(2)执行部件EU主要功能:从BIU中的指令队列获取指令,对指令进行译码分析并执

行,执行指令所需要的操作数和运算结果的存储,是由EU向BIU传递偏移地址,BIU只要

收到EU送来的偏移地址,于是将送来的偏移地址与相应的段地址组成20位的物理地址,根

据现行的20位物理地址,通过执行存储器的读/写总线周期来完成读/写操作,或者是通过执

行I/O端口的读/写总线周期来完成读/写I/O端口的操作。

10.8086CPU中的标志寄存器FLAGS有哪些状态标志位?在什么情况下置位?

答:

状态标志有6位:CF、PF、AF、ZF、SF和OF。

①CF(CarryFlag),进位标志位。本次运算中最高位有进位或借位时,CF=1»

②PF(ParityFlag),奇偶校验标志位。本次运算结果的低8位中1的个数为偶数时,

PF=lo

③AF(AuxiliaryCarryFlag),辅助进位标志位。本次运算结果低4位向高4位有进位

或借位时,AF=lo

6

(4)ZF(ZeroFlag),零标志位。若运算结果为0时,ZF=1»

⑤SF(SignFlag),符号标志位。当运算结果的最高位为1,贝(]SF=1。

⑥OF(OverflowFlag),溢出标志位。当运算结果有溢出时,OF=1。

11.什么是逻辑地址?什么是物理地址?如何将逻辑地址转换为物理地址?

答:从8088/8086开始,CPU内部就有了对存储器的分段机制,每个存储单元可以看成

两种地址:逻辑地址与物理地址。

(1)逻辑地址

逻辑地址是编程时所使用的地址,在实模式下,它由段基地址与段内偏移地址组成,

习惯上写为“段基地址:偏移地址”。

(2)物理地址

物理地址又称为实际地址,它是信息在内存中存放的实际地址,是CPU访问存储器时

实际发出的地址信息。

(3)在实地址方式下,由CPU中的总线接口单元将段基地址左移4位后与16位的偏移

地址相加,生成20位的物理地址。可以访问1MB的存储空间。

12.设X=35H,Y=76H,进行X+Y和X-Y运算后,标志寄存器FLAGS的状态标志位各

是什么?

答:

(1)X+Y=35+76后,CF=0、AF=0、SF=0、OF=0、ZF=0、PF=1。

(2)X-Y=35-76后,CF=1、AF=1、SF=l、OF=0、ZD、PF=1。

13.什么叫存储器地址交叉?微机的存储器为什么要用存储器地址交叉技术?

答:

(1)在一个物理存储芯片内部所有存储单元的地址编号都不是连续的,而在相邻存储

芯片之间的物理地址是相连接的,例如,16位的微处理器8086/80286把内存地址分为偶地

址的字节数据、奇地址的字节数据,因此,分为偶字库和奇字库,即在一个物理存储芯片

内所有存储单元的地址编号都是奇地址,另物理存储芯片内所有存储单元的地址编号都

是偶地址,这就称为地址交叉。

(2)偶地址存储体与数据总线的低8位(D7〜Do)相连,奇地址存储体与数据总线高8

位(口5〜Dg)相连,可以由偶地址有效选中偶字库(例A()=0),由奇地址有效选中奇字库

(例(丽方=0)。原因是:便于CPU可以只访问偶地址一个字节,也可以只访问奇地址

一个字节,还可以访问•个字(2字节)。

在CPU的外部数据总线为32位的情况下,CPU不仅可能只访问一个字节、一个字,还

可能访问一个双字,因此,把内存分成4个存储体,实现存储器地址的4体交叉。

14.请将实模式下逻辑地址转变成物理地址。

(1)FFFFH:0000H(2)0045H:0018H

《微机原理与接口技术》课后习题的参考答案

(3)2000H:4600H(4)B821H:3456H

解:

(1)FFFFH:0000H,物理地址=FFFFHX16+0000H=FFFF0H

(2)0045H:0018H,物理地址=0045HX16+0018H=00468H

(3)2000H:4600H,物理地址=2000HX16+4600H=24600H

(4)B821H:3456H,物理地址=B821Hxi6+3456H=BB666H

15.在8086系统中,CPU执行访问存储器指令时,BHE=O,说明当前CPU要访问哪

一个存储体?

答:

当时,CPU要访问奇地址的存储体。

第3章(3.12习题)

3.1按照16位微处理器的寻址方式看,分别指出下列指令中源操作数和目的操作

数的寻址方式。

解:

⑴movax,0;源操作数:立即寻址,I-I的操作数:寄存器寻址

⑵mov[si],ax;源操作数:寄存器寻址,目的操作数:变址寻址

⑶mov2[di],bx;源操作数:寄存器寻址,目的操作数:相对变址寻址

(4)mov2[bx+si],dx;源操作数:寄存器寻址,目的操作数:相对基址(加)变址

寻址

(5)movax,[1000h];源操作数:直接寻址,目的操作数:寄存器寻址

(6)movdx,[bx][si];源操作数:基址(加)变址寻址,目的操作数:寄存器寻址

(7)movax,[bx];源操作数:基址寻址,目的操作数:寄存器寻址

(8)movdx,[bp+8];源操作数:相对基址寻址,目的操作数:寄存器寻址

3.2按照32位微处理器的寻址方式看,分别指出下列指令中源操作数和目的操作

数的寻址方式。

解:

(1)moveax,Olh;源操作数:立即寻址,目的操作数:寄存器寻址

(2)mov[esi],ax;源操作数:寄存器寻址,目的操作数:基址寻址

8

(3)mov[esi*2],bx;源操作数:寄存器寻址,目的操作数:比例变址

寻址

(4)mov[ebx+esi],dx;源操作数:寄存器寻址,目的操作数:基址加比

例变址寻址

(5)moveax,[lOOOh];源操作数:直接寻址,目的操作数:寄存器寻址

(6)movdx,[ebx+esi*8];源操作数:基址加比例变址寻址,目的操作数:

寄存器寻址

(7)movedx,eax;源操作数:寄存器寻址,目的操作数:寄存器寻址

(8)movdx,[ebp*2+8];源操作数:比例变址加位移寻址,目的操作数:

寄存器寻址

(9)movdx,[ebx+8];源操作数:基址加位移寻址,目的操作数:寄存

器寻址

(10)movax,[ebx+esi*2+78h];源操作数:基址加比例变址加位移寻址,目的操

作数:寄存器寻址

3.3指出下列指令的错误原因

解:

(1)inc[si]目的操作数类型不明确

(2)moveax,bx源操作数和目的操作数类型不匹配

(3)mov2,ax立即数不能作目的操作数

(4)mov[ebx],[edi]源操作数和目的操作数不能同时为存储器操作数

(5)movax,[bx+bp]基址变址寻址方式不能同时为基址寄存器

(6)movax,[si+di]基址变址寻址方式不能同时为变址寄存器

(7)movah,300300超出了ah可以容纳的数据范围

(8)movcs,lOOOhcs不能由程序员赋值,它由系统自动赋值

(9)pushalpush要求操作数为16位或32位

(10)shlax,8当移位次数超过1时,先将移位次数送cl,再移位

(11)movax,bx+di基址变址寻址方式缺少一对方扩号

(12)movip,bxip不能由程序员赋值,它由系统自动赋值

(13)moves,ds源操作数和目的操作数不能同时为段寄存器

(14)mov[sp],ax入栈只能用push指令实现

3.4比较下列两条指令,指出他们的区别。

解:

moveax,[si];从内存读数据送eax

《微机原理与接口技术》课后习题的参考答案

mov[si],eax;把62*的值写入到内存

3.5假设(EAX)=1234567811,写出下面每条指令单独执行后,(EAX)=?

解:

⑴andeax,OOOOffffh;(eax)=00005678h

⑵test.eax,1;(eax)=12345678h

⑶xoreax,eax;(eax)=0

(4)subeax,eax;(eax)=0

⑸addeax,1;(eax)=12345679h

(6)ore;ax,1;(eax)=12345679h

⑺cmpeax,OOOOffffh;(eax)=12345678h

(8)inceax;(eax)=12345679h

(9)deceax;(eax)=12345677h

(10)sut)eax,8;(eax)=12345670h

3.6假定(AX)=1234H,(BX)=OOFFH,回答每条指令单独执行后,(AX)=?(BX)=?

解:

⑴andax,bx;(ax)=0034h(bx)=00ffh

⑵testax,bx;(ax)=1234h(bx)=00ffh

⑶xorax,bx;(ax)=12cbh(bx)=00ffh

(4)xchgax,bx;(ax)=00ffh(bx)=1234h

⑸addax,bx;(ax)=1333h(bx)=00ffh

(6)subbx,ax;(ax)=1234h(bx)=0eecbh

⑺orbx,ax;(ax)=1234h(bx)=12ffh

(8)cmpax,bx;(ax)=1234h(bx)=OOffh

3.7假设(EAX)=11223344H,(EBX)=11225566H,写出下面程序段每条指令执行后

(EAX)=?(EBX)=?

解:

addeax,ebx;(eax)=224488aaH,(ebx)=1122556611

addeax,00000088h;(eax)=2244893211,(ebx)=1122556611

subeax,ebx;(eax)=112233ccH,(ebx)=1122556611

incebx;(eax)=112233ccH,(ebx)=11225567H

andebx,OOOOffffh;(eax)=112233ccH,(ebx)=00005567H

10

3.8已知(DS)=1000H,(BX)=0100H,(SI)=0004H,存储单元[10100H]〜[10107H]

依次存放11H22H33H441155H661177118811,[10004H]-[10007H]依次存放2AH2B1I

2CH2DH,说明下列每条指令单独执行后AX中的内容。

解:

(1)MOVAX,[01OOH];(AX)=221111

(2)MOVAX,[BX];(AX)=221111

(3)MOVAX,[0004H];(AX)=2B2AH

(4)MOVAX,[010211];(AX)=443311

(5)MOVAX,[SI];(AX)=2B2AH

(6)MOVAX,[SI+2];(AX)=2D2CH

(7)MOVAX,[BX+SI];(AX)=665511

(8)MOVAX,[BX+SI+2];(AX)=8877H

3.9已知(DS)=1OOOH,(EBX)=O1OOH,(ESI)=000411,存储单元[10100H]〜[10107H]

依次存放UH22H33H44H88H77H66H55H,[10004H]-[10007H]依次存放8AH8BH

8CH8DH,说明下列每条指令执行后EAX中的内容。

解:

(1)MOVEAX,[01OOH];(EAX)=44332211H

(2)MOVEAX,[EBX];(EAX)=44332211H

(3)MOVEAX,[EBX+4];(EAX)=55667788H

(4)MOVEAX,[0004H];(EAX)=8D8c8B8AH

(5)MOVEAX,[ESI];(EAX)=8D8c8B8AH

(6)MOVEAX,[EBX+ESI];(EAX)=55667788H

3.10什么是堆栈?它的工作原理是什么?它的基本操作有哪两个?

答:

堆栈是在内存RAM中开辟的一段空间,利用“先进后出”或“后进先出”的原则存

取数据。如果把数据压入堆栈,则堆栈指针的值是减少的,即所谓的向下生成堆栈。

由SS:SP(16位)或SS:ESP(32位)指向栈底(栈空)或栈顶(栈不空)地址。它的基

本操作有数据入栈指令PUSH和数据出栈指令POP。

3.11设SS=1000H,SP=0100H,指出下列每条指令执行后,(AX)=?(BX)=?(SP)=?

并且回答堆栈中的内容如何?

《微机原理与接口技术》课后习题的参考答案

解:

MOVAX,2233H;(AX)=2233H,(BX)不确定,(SP)=0100H

PUSHAX;(AX)=223311,(BX)不确定,(SP)=00FEH

MOVBX,4455H;(AX)=223311,(BX)二4455H,(SP)=OOFEH

PUSHBX;(AX)=2233H,(BX)=4455H,(SP)=00FCH

POPAX;(AX)=4455H,(BX)=4455H,(SP)=OOFEH

POPBX;(AX)=4455H,(BX)=2233H,(SP)=010011

这段指令执行后将AX和BX的值互换。

3.12什么是16位段?它有何特点?

答:

32位微机在上电或复位后,微处理器首先工作在实地址模式,它与8086/80186的

工作方式具有相同的基本结构,也只能寻址1MB物理存储空间,分段最大只能是64KB,

但是,在实地址模式下,32位X86CPU可以使用16位寄存器和16位寻址方式,这与8086

CPU兼容,32位X86CPU还可以使用32位寄存器和32位寻址方式,处理32位数据及执行

32位的新增指令,但是,段基地址和偏移量都只用16位,6个段寄存器仍然当作16位的

段寄存器使用,对于偏移地址来说,如果是32位,则高16位应该为0,只有低16位偏移

地址有效,相当于可以进行32位数处理的快速8086,所以称之为“16位段”。

3.13什么是32位段?它与16位段的主要区别如何?

答:

32位X86CPU由实地址模式可以进入保护工作模式,它是•个增强了80286保护模

式功能的32位保护工作模式。在保护工作模式下,32位微处理器不仅具有段式存储器

管理功能,而且还有页式存储器管理功能,支持虚拟存储器,段基地址和段内偏移量

都是32位,称之为“32位段”,使用全部32条地址线,可以寻址的物理存储器达到4GB,

只有在保护模式下,32位X86CPU才能发挥全部功能。而32位段的程序只能在32位

Windows环境中执行。

3.1416位存储器寻址中,分为哪儿种寻址方式?

答:

(1)直接寻址

(2)基址寻址(包括相对基址寻址)

(3)变址寻址(包括相对变址寻址)

(4)基址(加)变址寻址

12

(5)相对基址(加)变址寻址

3.1532位存储器寻址中,分为哪几种寻址方式?

答:

(1)直接寻址

(2)基址寻址

(3)基址加位移寻址

(4)比例变址寻址

(5)比例变址加位移寻址

(6)基址加比例变址寻址

(7)基址加比例变址加位移寻址

3.16对于立即寻址的指令,有8位、16位及32位的立即寻址的指令,各列举2条指

令(一条是传送指令,另一条是加法指令)。

解:

8位立即寻址指令

(1)MOVAH,2

(2)ADDAL,3

16位立即寻址指令

(1)MOVAX,1234H

(2)ADDDX,3456H

32位立即寻址指令

(1)MOVEAX,12345678H

(2)ADDEDX,12345678H

3.17用移位指令将ESI中内容移入EDI中,如何实现?

解:

.modelsmall

.386

.code

.startup

《微机原理与接口技术》课后习题的参考答案

movesi,11223344h

movedi,12345678h

shrdedi,esi,16

rolesi,16

shrdedi,esi,16

.exit

End

3.18将EBX中存放的值清零,实现的方法有哪一些?

解:

(1)SUBEBX,EBX

(2)ANDEBX.O

(3)XOREBX,EBX

第4章(4.5习题)

1.该数据段在内存中的分配图如下。

变内

里容A

Buf1

―►

2

3

nu3

mf4h

1

2h

14

poi0

nti5h0

0

Oh1

poi0

nt2f8h2

0

Oh3

d4

ata

5

str3

—►Ih6

3

2h7

3

3h8

0

ffh9

0

2h0

0

ffh1

0

2h2

2.将下列程序段所定义字符串中的小写字母均改为大写字母,并放回原处,原大字母

不变,最后,用DOS的9号功能显示这串大写字符,请完善下列程序。

.modelsmal1

.data

xdb4HelloEVEryBODY!','$

.code

《微机原理与接口技术》课后习题的参考答案

.startup

解:

程序如下:

.modelsmall

.386

.data

xdb'HelloEVEryBODY-$

.code

.startup

leabx,x

.repeat

moval,[bx]

.ifal>='a1&&alv='z'

subal,20h

mov[bxj,al

.endif

incbx

.untilal=='$,

leadx,x

movah,9

int21h

.exit

end

3.设变量名VALI、VAL2及SUM的数据类型属性都是双字属性,VAL1和VAL2中分

别存放了•个32位的加数和被加数,SUM用于存放和数。

(1)选用简化段格式编程,实现两个32位数相加,结果存放到SUM变量所指的存储

单元。

(2)选用完整段格式编程,实现上述相同的功能。提示:只能使用16数相加。

解:

程序一,简化段格式编程,实现两个32位数相加,结果存放到SUM变量所指的存储单

O

.modelsmall

.386

.data

vaildd12345678h

val2dd8765432%

sumdd?

.code

16

.startup

moveax,val1

addeax,va12

movsum,eax

.exit

end

程序二,完整段格式编程,实现两个32位数相加,结果存放到SUM变量所指的存储单

元。

datasegment

vaildd12345678h

val2dd87654329h

sumdd?

dataends

codesegment

assumecs:code,ds:data

start:

movax,data

movds,ax

movax,wordptrvail

addax,wordptrval2

movwordptrsum,ax

movax,wordptrvail+2

addax,wordptrval2+2

movwordptrsum+2,ax

movah,4ch

int21h

codeends

endstart

4.将数据段内的一串字符传送到附加的数据段内,并将传送到附加数据段内的字符显

示出来,要求用完整段和简化段两种格式分别编程实现。

解:

程序一,简化段格式编程,实现将数据段内的一串字符传送到附加的数据段内,并将

传送到附加数据段内的字符显示出来。

.modelsmall

.386

.data

xdb'HelloWorld

《微机原理与接口技术》课后习题的参考答案

nequ$-x

ydb100dup(?)

.code

.startup

movax,ds

moves,ax

movcx,n

leasi,x

leadi,y

repmovsb

movah,9

leadx,y

int21h

.exit

end

注意:在简化段模式编程时,数据段和附加数据段是同一段,在使用字符串指令时,用

指令movax,ds、moves,ax将DS和ES保持一致。

程序二,完整段格式编程,实现将数据段内的一串字符传送到附加的数据段内,并将

传送到附加数据段内的字符显示出来。

datasegment

xdb'HelloWorld!,,$

nequ$-x

dataends

edatasegment

ydb100dup(?)

edataends

codesegment

assumecs:code,ds:data,es:edata

start:

movax,data

movds,ax

movax,edata

moves,ax

leasi,x

leadi,y

movcx,n

18

repmovsb

movah,9

leadx,y

int21h

movah,4ch

int21h

codeends

endstart

5.设有一个数组存放了40名学生的成绩(0〜100分),设数组位于变量名为SCORS

的存储单元,编程统计0〜59分、60〜69分、70〜79分、80〜89分及90〜100分的人数,并

分别存放到SCOREE、SCORED>SCOREC、SCOREB、SCOREA存储单元中。

解:

程序一,简化段格式编程

.modelsmall

.386

.data

scoredb90,23,56,67,98,78,10,45,87,100

db65,78,89,100,45,30,99,69,59,60

db0,59,60,69,70,79,80,89,90,99

db100,61,68,71,78,81,88,91,98,0

n=$-score

scoreedb0

scoreddb0

scorecdb0

scorebdb0

scoreadb0

.code

.startup

leasi,score

movcx,n

movdl,10

.whileex!=0

movah,0

moval,[si]

divdl

subal,5

《微机原理与接口技术》课后习题的参考答案

.ifsbyteptral<=0

incbyteptrscoree

.else

movah,0

.ifal==5

moval,4

.endif

movbx,ax

incbyteptrscoreeIbxJ

.endif

incsi

decex

.endw

.exit

end

程序二,完整段格式编程

datasegment

scoredb90,23,56,67,98,78,10,45,87,100

db65,78,89,100,45,30,99,69,59,60

db0,59,60,69,70,79,80,89,90,99

db100,61,68,71,78,81,88,91,98,0

n=$-score

scoreedb0

scoreddb0

scoreedb0

scorebdb0

scoreadb0

dataends

codesegment'code*

assumecs:code,ds:data

start:movax,data

movds,ax

leasi,score

movcx,n

movdlJO

class:movah,0

moval,[sij

20

divdl

subal,5

jggreat

incbyteptrscoree

jmpnext

great:movah,0

cmpal,5

jnzstore

moval,4

store:movbx,ax

incbyteptrscoreelbx]

next:incsi

loopclass

movah,4ch

int21h

codeends

endstart

6.已知两个字的定义如下,比较这两个字的大小,将较大的数存放到Z单元,如果两

数相等,则把其中任意•数存入Z单元。要求用简化段格式编程:

(1)按照无符号数比较与编程。

(2)按照有符号数比较与编程。

XDW1234H

YDW9678H

ZDW?

解:

(1)按照无符号数比较与编程。

.modelsmall

.386

.data

xdw1234h

ydw9678h

zdw?

.code

.startup

movax,x

movbx,y

.ifax>bx

《微机原理与接口技术》课后习题的参考答案

movz,ax

.else

movz,bx

.endif

.exit

end

(2)按照有符号数比较与编程。

.modelsmall

.386

.data

xdw1234h

ydw9678h

zdw?

.code

.startup

movax,x

movbx,y

.ifswordptrax>swordptrbx

movz,ax

.else

movz,bx

.endif

.exit

end

7.已知两个字的定义如第6题,编程求X-Y,结果存入Z单元。要求用简化段格式编程,

并回答存入Z单元的数是多少?

解:

.modelsmall

.386

.data

xdw1234h

ydw9678h

zdw?

.code

.startup

movax,x

subax,y

movz,ax

22

.exit

end

存入Z单元的数是7bbeh。把指令subax,y改为subswordptrax,y结果不变。

8.用完整段格式编程,键盘每输入一个字符,用二进制形式(0/1)显示出该字符的

ASCH码值。

解:

datasegment

asciidb7dup(?),,$'

dataends

codesegment

assumecs:code,ds:data

start:movax,data

movds,ax

rp:movah,l

int21h

empal,27;可重复输入,Esc键结束

jzfini

movbl,2

leasi,ascii+6

lopl:movah,0

divbl

addah,30h

mov[si],ah

decsi

empal,0

jnzlopl

leadx,ascii

movah,9

int21h

movah,2

movdl,Odh

int21h

movdl,Oah

int21h

movcl,7

leasi,ascii

ini:movbyteptr[si],*'

《微机原理与接口技术》课后习题的参考答案

incsi

deccl

jnzini

jmprp

fini:movah,4ch

int21h

codeends

endstart

温馨提示

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

评论

0/150

提交评论