《汇编语言、微机原理及接口技术(第3版)》郑初华 - 课后题解答

更新时间:2024-05-01 21:04:01 阅读量: 综合文库 文档下载

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

第1章 进制及码元

1.进制转换

129= 81H= 10000001B=201Q 298= 12AH= 100101010B=452Q 1000= 3E8H= 1111101000B= 1750Q 5DH= 1011101 B= 135 Q= 93 D 3E8H= 1111101000 B= 1750Q= 1000 D; 357Q=11101111 B= 0EF H= 239 D 3.数据表示范围:

一字节的无符号数表示范围为0~255,有符号数(补码)表示范围为-l28—+127。一个字的无符号数表示范围为0~65535,有符号数(补码)表示范围为—32768~+32767。N位二进制数的无符号数表示范围为0~(2N-1),有符号数(补码)表示范围为-2N-1~(2N-1-1).

4.35H代表的ASCII字符为'5',代表十六进制数时等价的十进制值为53 ,代表压缩8421BCD码等价的十进制值为35 ,代表非压缩8421BCD码等价的十进制值为5。 5.FFH代表无符号数时等价的十进制值为255 ,代表补码有符号数时等价的十进制值为 一1 ,代表反码有符号数时等价的十进制值为 一0 ,代表原码有符号数时等价的十进制值为一l27。

6.--20的8位二进制补码为 ECH ,原码为 94H ,反码为 EBH 。158的16位二进制补码为009EH,原码为009EH ,反码为 009EH 。

第2章 微机硬件基础

1.计算机系统硬件的五大功能部件及其主要功能?

答:硬件系统按功能模块分为运算器、控制器、存储器、输入设备、输出设备。 运算器主要完成算术运算、逻辑运算及移位运算,其中主要包括算术逻辑运算单元Arithmetic Logic Unit,ALU)和暂存数据(原始、中间、结果)的寄存器(Register,R)。 控制器实现对计算机部件的协调调度完成指令的分析执行,其中主要有程序计数器Program Counter,PC)或叫指令指针(Instruction Pointer,IP)、指令寄存器(Instruction register,IR)、指令译码器(Instruction Decoder,ID)、微操作命令发生器、时序发生器等。 存储器用来记忆程序与数据,它分为内存和外存,内存主要用于存放正在或正待运行的程序和数据,外存用于存放暂时不运行的程序和数据。

输入设备是实现将外界的信息输入计算机内部的部件,主要有键盘、鼠标等。

输出设备是实现将计算机内部的信息输出的部件,主要有显示器、打印机等。 3.请简述计算机系统的构成,并说明软硬件之间的关系。

答:计算机系统由硬件系统和软件系统构成,硬件系统包括运算器、存储器、控制器、输入/输出设备.软件系统包括系统软件和应用软件.硬件是我们可以看得见摸得着的物理设备,软件是运行计算机硬件上的程序和数据的集合.他们之间的关系:硬件是基础,软件是灵魂;硬件和软件相辅相成缺一不可;硬件和软件互相促进发展. 5.微机的主要性能指标有哪些?

答:(1)字长。字长是指CPU可以同时运算或传输的二进制的数据位数。字长越长,速度越快,精度越高,表示范围越大。

(2)速度。在微机的表示速度用的最多的是CPU的主频,单位为Ml-lz或GHz,但实质

1

上并不一定是主频越高速度越快,如AMD提出的PR表示法声称其l.3GHz的速龙XP可以达到l.6GHz的P4的速度。表示速度还有另外两个单位:次,秒(每秒运算次数)、MIPS(百万条指令每秒)。

(3)容量。内存容量从原来的KB已上升到MB,2002年上半年以256MB为主流配置。硬盘容量从原来的MB已上升到GB,目前主要配置40GB l00GB的硬盘: (4)外设配置。例如显示器、光驱、声卡、音箱、打印机等。 (5)软件配置。操作系统及其他系统软件和应用软件。

7.8086/8088 CPU为什么要分为BIU和EU两大模块?

答:为了使取指和分析、执行指令可并行处理,提高CPU的执行效率。8086/88CPU有两大模块总线接口单元BIU和执行单元EU组成。参见教材《汇编语言、微机原理及接口技术(第2版)》2.3.1节“8086/8088 CPU的内部结构”。

8.简述8086/8088 CPU的两大模块BIU和EU的主要功能及组成。 答:如图2.2所示。

9.简述8086/8088 CPU的14个寄存器的英文名、中文名及主要作用。

答:AX(Accumulator)(AH、AL)累加器,它是汇编编程中最常用的一个寄存器,主要用于乘除运算、BCD运算、换码、I/O操作、串操作、中断调用等。

BX(Base)(BH、BL)基址寄存器,主要用于存放地址、基址(默认相对于DS段)等。 CX(Counter)(CH、CL)计数器,主要用于循环计数、串操作计数、移位计数(CL)等。

DX(Data)(DH、DL)数据寄存器,主要用于l6位乘除、问接I/O、中断调用等。 BP(Base Pointer)基址指针,主要用于存放地址、基址(默认相对于SS段)等。 SP(Stack Pointer)堆栈指针(栈顶指针),主要用于存放栈顶地址。

SI(Source Index)源变址寄存器,用于存放地址、变址、串操作源变址。

DI(Destination Index)目的变址寄存器,用于存放地址、变址、串操作目的变址。

CS(Code Segment)代码段寄存器(代码段),用于存放正在或正待执行的程序段的起始地址的高l6位二进制数据,即程序段的段地址。 ,

DS(Data Segment)数据段寄存器(数据段),用于存放正在或正待处理的一般数据段的起始地址的高l6位二进制数据,即一般数据段的段地址。

ES(Extra Segment)附加数据段寄存器(附加段),用于存放正在或正待处理的附加数据段的起始地址的高l6位二进制数据,即附加数据段的段地址。

SS(Stack Segment)堆栈数据段寄存器(堆栈段),用于存放正在或正待处理的堆栈数据段的起始地址的高l6位二进制数据,即堆栈数据段的段地址。 IP(Instruction pointer)指令指针,它的内容始终是下一条待执行指令的起始偏移地址,与CS一起形成下一条待执行指令的起始物理地址。CS:IP的作用是控制程序的执行流程。IP

2

一般会自动加l(逻辑加1、实际随指令长度变化)移向下一条指令实现顺序执行;若通过指令修改CS或IP的值,则可实现程序的转移执行。

PSW(Program Status word)程序状态字,它其中有三个控制标志(IF、DF、TF)和6个状态标志(SF、PF、ZF、OF、CF、AF)。控制标志是用于控制CPU某方面操作的标志,状态标志是部分指令执行结果的标志。

11.请说明8086/8088 CPU的标志位的英文名、中文名及通用填充方法。

答:IF(Interrupt Enable Flag)中断允许标志,用于控制CPU能否响应可屏蔽中断请求,IF=1能够响应,IF=0不能响应。

DF(Direction Flag)方向标志,用于指示串操作时源串的源变址和目的串的目的变址变化方向,DF----1向减的方向变化,DF=0向加的方向变化。

TF(TrapFlag)陷阱标志(单步中断标志),TF=1程序执行当前指令后暂停,TF=0程序执行当前指令后不会暂停。

SF(Sign Flag)符号标志,指令执行结果的最高二进制位是0还是l,为0,则SF=0,代表正数;为l,则SF=1,代表负数。我们一般是用十六进制数表示,则可以根据十六进制的最高位是落在O~7还是落在8~F之间,若落在0~7之间则SF=0.否则SF=1。

PF(Parity ChECk Flag)奇偶校验标志,指令执行结果的低8位中1的个数是奇数个还是偶数个,若为奇数个则PF=0,若为偶数个则PF=1。

ZF(Zero Flag)零标志,指令执行结果是不是为0,若为0则ZF=1,否则ZF=0。

OF(Overflow Flag)有符号数的溢出标志,指令执行结果是否超出有符号数的表示范围,若超过则0F=1,否则OF=0。我们可以通过判断是否出现以下四种情况之一:正加正得负,正减负得负,负加负得正,负减正得正。若出现则0F=1.否则OF=0.

CF(Carry Flag)进位/借位标志无符号数的溢出标志),指令执行结果的最高位是否有向更高位进位或借位,若有则CF=1,同时也代表无符号数溢出;若无则CF=0,也代表无符号数未溢出。

AF(Auxiliary Carry Flag)辅助进位/借位标志,低4位二进制是不是有向高位进位或借位,若有则AF=1,否则AF=0,其主要用于BCD修正运算。 12.内存为什么要分段组织?

答:(1)8086/8088 CPU中的寄存器只有16位,如果采用它们直接寻址,则寻址能力势必限制在64 KB范围内,而采用分段组织可以较好地实现扩展CPU的寻址能力。每段的大小可达64 KB,不同段的组合则可寻址更大的范围。

(2)使程序与数据相对独立,不同存取方式的数据也相对独立。 程序:存放于代码段CS中

堆栈方式:存放于堆栈段SS中

数据:随机方式:存放于数据段DS及附加段ES中

(3)便于程序和数据的动态装配,从一个地方挪到另外一个地方只要更改一下段寄存器的值即可,段内偏移可以不用改变。但内存地址采用分段组织增加地址计算的复杂度,降低了CPU的执行效率。

14.设DS=26FCH,BX=108H,SI=9A8H,试求出使DS:BX与ES:Sl指向同一物理地址的ES值。

答:即DS:BX=ES:SI DS:BX=DS× l6+BX=26FCH×16+108H=270C8H ES:SI=ES×16+SI=ES×16+9A8H

ES=(270C8H一9A8H)÷l6=2672H

3

15.接口、端口、端口地址之间的对应关系如何?

答:一个计算机系统内有很多接口,一个接口内一般有多个端口,一个端口可以有多个端口地址与其对应(这叫重叠地址),一个端口地址可以对应多个端口(但需要继续区分才能访问,如读写顺序、读写信号、数据位、索引区分)。所以通过端口传输信息首先需要区分端口,区分端口可通过端口地址不同来区分。

20.某程序在当前数据段中存放有两个数据l234H和5678H,若已知DS=2010H、偏移量分别为3400H和4501H,请写出这两个数据在存储器中的物理地址。 答:物理地址l=DS×16+EA=2010H×16+3400H=23500H 23500H单元存34H,23501H单元存12H

物理地址2=DS×16+EA=2010H×16+4501H=24601H 24601H单元存78H,24602H单元存56H

第3章寻址方式及指令系统

1.指令是CPU可以理解并执行的操作命令,指令由操作码和操作数两部分组成,指令有两个级别,即机器级和汇编级。

3.指令主要有哪些分类方式及其主要类别是什么?

答:指令分类有不同的方式。按操作数的个数将指令分为零地址指令(无操作数)、一地址指令(只有一个操作数)、二地址指令(有两个操作数)、多地址指令(多于两个操作数);按指令级别分为机器指令和汇编指令:按是否转移分为转移指令和顺序指令;按功能分为七大类:传送类、算术运算类、位操作类、I/O类、串操作类、CPU控制类、转移类;按指令长度(即指令占用的字节数)分为l字节指令、2字节指令等,8086/8088指令长度是不同的,叫变字长,不同的指令有不同的指令长度,从1~6字节均有;按指令执行期间取操作数是否需要与总线打交道分为内部指令(不需)和外部指令(需要),类似功能的指令内部指令比外部指令执行速度快,所以在编程时尽量采用内部指令即多用寄存器优化程序。 4.操作数的寻址方式有哪些?并举例说明其主要特点。

答:操作数寻址方式主要有立即寻址方式、寄存器寻地址、存储器寻址方式、端口寻址方式4类.

(1)立即寻址方式:操作对象是这个操作数本身,MOVAL、5 (2)寄存器寻地址:操作对象是寄存器中的内容MOVAX、BX

(3)存储器寻址方式:操作对象是内存地址所对应的存储单元中的内容,MOV AX I2000HJ

(4)端口寻址方式:操作数是指明端口的地址、端口地址所对应的端口中的内容是操作对象 IN AX, 46 A,4直接寻址.

6.设CS=1000H,DS=2000H, ES=3000H,SS=4000H,IP=100H,SP=200H,BX=300H,BP=400H,SI=500H,则①下一条待执行指令的物理地址为多少?②当前栈顶的物理地址为多少?③[BX]代表的存储单元的物理地址为多少?④[BP]代表的存储单元的物理地址为多少?⑤ES:[BX+SI]代表的存储单元的物理地址为多少?

答:①下一条待执行指令的物理地址=CS×16+IP=1000H×16+IOOH=10100H。 ②当前栈顶的物理地址=SS×16+SP=4000H×16+200H=40200H。 ③[BX]代表的存储单元物理地址=DS×16+BX=2000H X l6+300H=20300H。 ④[BP]代表的存储单元物理地址=SS X l6+BP=4000H×16+400H-----40400H。

⑤ES

4

:[BX+SI]代表的存储单元物理地址

=ES×16+BX+SI=3000H×16+300H+500H=30800H

7.试根据以下要求,分别写出相应的汇编语言指令。

(1)以寄存器BX和Dl作为基址变址寻址方式把存储器中的一个字送到DX寄存器。 答:MOV DX,[BX+DI]

(2)以寄存器BX和偏移量VALUE作为寄存器相对寻址方式把存储器中的一个字和AX相加,把结果送回到那个字单元。

答:ADD VALUE[BX],AX

(3)将1字节的立即数086H与以Sl作为寄存器间接寻址方式的字节单元相比较。 答:CMP BYTE PTR[SI],086H (4)将BH的高4位与低4位互换。 答:MOV CL,4

ROR BH,CL ;或者ROL BH,CL (5)测试BX的第3、7、9、12、13位是否同时为0。

答:TEST BX,3288H;0011001010001000B

(6)将存放了0~9数值的DL寄存器中的内容转化为相应的~0~~9的字符。 答:ADD DL,30H ;或者OR DL,30H (7)将存放了?A?~?F?字符的AL寄存器中的内容转化为相应的数值。 答:SUB AL,37H

10.指出下列指令错误的原因。

答:(1)MOV CL,300 ;300超过字节数据表示范围 (2)MOV CS,AX ;CS不能作为目的操作数 (3)MOV BX,DL ;数据类型不匹配

(4)MOV ES,1000H :立即数不能送给段寄存器 (5)INC [BX] ;数据类型不明确 ? (6)ADD AX,DS :段寄存器不能参加运算

(7)TEST BX,[CX] ;存储器间接寻址只能使用BX、Sl、Dl、BP四个之一

(8)SUB [BX],[BP+SI] ;加减两个操作数不能同时为存储操作数 (9)JC [SI] ;条件转移只有短转移寻址方式

(10)SHL BX ;少给一个表明移位次数的操作数,l或CL 12.分别说明下列各组指令中的两条指令的区别。

答:(1)MOV AX,TABLE LEA AX,TABLE 假设TABLE为字变量名,则:

左为将TABLE单元的内容送AX,右为将TABLE单元的偏移地址送AX 假设TABLE为字节变量名,则:

左为错误指令,右为将TABLE单元的偏移地址送AX

假设TABLE为常量名,则:

左为将TABLE的内容送AX,右为错误指令

(2)AND BL,0FH OR BL,0FH

左为将BL的高4位清0,右为将BL的低4位置1

(3)JMP SHORT Ll JMP NEA RPTR Ll

左为短转移,2字节的指令,转移范围为一l28~+127 右为近转移,l字节的指令,转移范围为--32 768+32 767

(4)MOV AX,BX MOV AX,[BX] 左为将BX的值送AX

右为将BX的值作为相对DS段的内存单元偏移地址,取出字单元值送AX

5

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

Top