80x86前三章答案解析.docx

上传人:b****2 文档编号:1955933 上传时间:2023-05-02 格式:DOCX 页数:57 大小:31.57KB
下载 相关 举报
80x86前三章答案解析.docx_第1页
第1页 / 共57页
80x86前三章答案解析.docx_第2页
第2页 / 共57页
80x86前三章答案解析.docx_第3页
第3页 / 共57页
80x86前三章答案解析.docx_第4页
第4页 / 共57页
80x86前三章答案解析.docx_第5页
第5页 / 共57页
80x86前三章答案解析.docx_第6页
第6页 / 共57页
80x86前三章答案解析.docx_第7页
第7页 / 共57页
80x86前三章答案解析.docx_第8页
第8页 / 共57页
80x86前三章答案解析.docx_第9页
第9页 / 共57页
80x86前三章答案解析.docx_第10页
第10页 / 共57页
80x86前三章答案解析.docx_第11页
第11页 / 共57页
80x86前三章答案解析.docx_第12页
第12页 / 共57页
80x86前三章答案解析.docx_第13页
第13页 / 共57页
80x86前三章答案解析.docx_第14页
第14页 / 共57页
80x86前三章答案解析.docx_第15页
第15页 / 共57页
80x86前三章答案解析.docx_第16页
第16页 / 共57页
80x86前三章答案解析.docx_第17页
第17页 / 共57页
80x86前三章答案解析.docx_第18页
第18页 / 共57页
80x86前三章答案解析.docx_第19页
第19页 / 共57页
80x86前三章答案解析.docx_第20页
第20页 / 共57页
亲,该文档总共57页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

80x86前三章答案解析.docx

《80x86前三章答案解析.docx》由会员分享,可在线阅读,更多相关《80x86前三章答案解析.docx(57页珍藏版)》请在冰点文库上搜索。

80x86前三章答案解析.docx

80x86前三章答案解析

第一章答案

Tarzan版

题1.1与机器语言相比,汇编语言有何特点?

与高级语言相比,汇编语言有何特点?

答:

与机器语言相比,汇编语言的的特点有:

1、易于记忆

2、容易理解

3、方便调试

4、便于维护

与高级语言相比,汇编语言的特点有:

1、与机器指令关系密切

2、执行效率高

3、源程序繁琐

4、调试比较困难

题1.2汇编语言有何优缺点?

答:

汇编语言的优点有:

1、与机器语言相比易于记忆,容易理解,方便调试和维护;

2、与高级语言相比更加接近硬件和底层,对机器控制更加直接;

3、执行效率高,特别在一些特殊场合,如需要实时处理的地方;

汇编语言的缺点:

1、与高级语言相比,汇编语言还是比较繁琐;

2、调试比较复杂,维护交流以及移植都很困难;

题1.3汇编程序的作用是什么?

汇编程序与编译程序有何不同?

答:

汇编程序的作用是将汇编语言源程序翻译成目标程序;

汇编程序是将汇编语言源程序翻译成用机器语言表示的目标程序;

而编译程序是用高级语言编写的面向过程的源程序翻译成目标程序

的语言处理程序,两者区别主要是处理的对象不同;

题1.4哪些场合需要使用汇编语言?

答:

需要使用汇编语言的场合有:

1、对软件的执行时间或存储容量有较高要求的场合;

2、需要提高大型软件性能的场合;

3、软件与硬件关系密切,软件要有直接和有效控制硬件的场合;

4、没有合适的高级语言的场合;

题1.5在计算机系统中,如何表示西文字符和汉字符?

答:

在计算机系统中,西文字符主要由ASCII码表示;而汉字符主要

采用变形国标码表示;

题1.6什么是BCD码?

答:

为了符合人们的书写阅读习惯,常采用二进制编码的十进制,简称

为BCD码;BCD码由4个二进制数编码表示0-9十个数字;8421BCD码

比较常见;

题1.7说明字节、字和双字之间的关系。

答:

字节(byte)由8个二进制,即8bit组成;

字(word)由16个二进制,即16bit组成;

双字(Dualword)为32bit;

1Dualword=2word=4byte

题1.8到目前为止,Intel的80X86家族有哪些成员?

这些成员有何特征?

答:

到目前为止,Intel的80X86的成员有:

nameProcessTransistorFrequencyRegisterAddressData

Intel400410mm2300<740KHz4bit?

?

Intel404010mm?

<740KHz4bit

intel800810mm3500<0.8MHz8bit16bit16bit

Intel808010mm?

<2MHz8bit16bit16bit

Intel808510mm?

<6MHz8bit16bit16bit

Intel8086?

29000<10MHz16bit20bit16bit

Intel8088?

29000<5MHz16bit20bit8/16bit

Intel80186?

?

<20MHz16bit20bit16bit

Intel80188?

?

<20MHz16bit20bit8bit

Intel802861.5mm134K<25MHz16bit24bit16bit

Intel803861mm275K<40MHz32bit32bit32bit

Intel803761mm275K<20MHz32bit32bit16/32bit

Intel804860.8/1mm1.185M<100MHz32bit32bit32bit

IntelPentium0.6mm3.2M<200MHz32bit64bit32bit

IntelPentiumMMX0.35mm4.5M<300MHz32bit64bit32bit

IntelPentiumPro0.35mm5.5M<200MHz32bit64bit32bit

IntelPentiumII

IntelPentiumIII

IntelPentiumIV

第二章答案

Tarzan版

题2.18086/8088通用寄存器的通用性表现在何处?

8个通用寄存器各自有何专门用途?

哪些

寄存器可作为存储器寻址方式的指针寄存器?

答:

8086/8088通用寄存器的通用性表现在:

这些寄存器除了各自规定的专门用途外,他们均可以用于传送和暂存数据,可以保存

算术逻辑运算中的操作数和运算结果;

8个通用寄存器的专门用途如下:

AX字乘法,字除法,字I/O

BX存储器指针

CX串操作或循环控制中的计数器

DX字乘法,字除法,间接I/O

SI存储器指针(串操作中的源指针)

DI存储器指针(串操作中的目的指针)

BP存储器指针(存取堆栈的指针)

SP堆栈指针

其中BX,SI,DI,BP可作为存储器寻址方式的指针寄存器

题2.2从程序员的角度看,8086/8088有多少个可访问的16位寄存器?

有多少个可访问的8位

寄存器?

答:

从程序员的角度看,8086/8088有14个可访问的16位寄存器;有8个可访问的8位寄存器;

题2.3寄存器AX与寄存器AH和AL的关系如何?

请写出如下程序片段中每条指令执行后寄存器

AX的内容:

MOVAX,1234H

MOVAL,98H

MOVAH,76H

ADDAL,81H

SUBAL,35H

ADDAL,AH

ADCAH,AL

ADDAX,0D2H

SUBAX,0FFH

答:

MOVAX,1234HAX=1234H

MOVAL,98HAX=1298H

MOVAH,76HAX=7698H

ADDAL,81HAX=7619H

SUBAL,35HAX=76E4H

ADDAL,AHAX=765AH

ADCAH,ALAX=D15AH

ADDAX,0D2HAX=D22CH

SUBAX,0FFHAX=D12DH

题2.48086/8088标志寄存器中定义了哪些标志?

这些标志可分为哪两类?

如何改变这些标志

的状态?

答:

8086/8088标志寄存器中定义了9个标志,如下:

CF:

CarryFlag

ZF:

ZeroFlag

SF:

SignFlag

OF:

OverflowFlag

PF:

ParityFlag

AF:

AuxiliaryCarryFlag

DF:

DirectionFlag

IF:

Interrupt-enableFlag

TF:

TrapFlag

这些标志可分为两类,分别为:

1、运算结果标志;

2、状态控制标志;

采用指令SAHF可把AH中的指定位送至标志寄存器低8位SF、ZF、AF、PF、CF;

采用CLC可清除CF,置CF到0

采用STC可置CF到1

采用CLD可置DF到0

采用sTD可置DF到1

采用CLI可置IF到0

采用STI可置IF到1

另外,在某些指令执行过程中会改变部分标志的状态;

题2.5请说说标志CF和标志OF的差异。

答:

如果把指令中处理的数据按照无符号数看待,则处理结果达到进位是,置CF为1;

如果把该处理中的数据按照有符号数看待,则处理结果超过有符号数表达范围的,

置OF为1;两个标志同步进行,CPU并不知道该数的类型;

题2.68086/8088如何寻址1M字节的存储器物理地址空间?

在划分段时必须满足的两个条件

是什么?

最多可把1M字节空间划分成几个段?

最少可把1M字节地址空间划分成几个段?

答:

8086/8088通过对存储器分段和使用段寄存器的方式寻址1M字节的存储器物理地址空间;

在划分段时必须满足的两个条件是:

1、逻辑段的开始地址必须是16的倍数;

2、逻辑段的嘴道长度是64K;

1M的字节空间划分为64K个逻辑段;最少可把1M字节地址划分成16个逻辑段;

题2.7在8086/8088上运行的程序某一时刻最多可访问几个段?

程序最多可具有多少个段?

程序至少几个段?

答:

在8086/8088上运行的程序某一时刻最多可访问4个当前段:

代码段,数据段,堆栈段

和附加段;程序最多可具有4种类型的段,最少要有一个代码段;

题2.8存储单元的逻辑地址如何表示?

存储单元的20位物理地址如何构成?

答:

存储单元的逻辑地址由段值和偏移两部分组成:

段值:

偏移;

存储单元的20位物理地址可以表示为:

物理地址=段值×16+偏移;

题2.9当段重叠时,一个存储单元的地址可表示成多个逻辑地址。

请问物理地址12345H可表示

多少个不同的逻辑地址?

偏移最大的逻辑地址是什么?

偏移最小的逻辑地址是什么?

答:

12345H可表示1000H(4096)个不同的逻辑地址,偏移最大的逻辑地址是235:

0FFF5H

偏移最小的逻辑地址是1234:

0005H

题2.10为什么称CS为代码段寄存器?

为什么称SS为堆栈寄存器?

答:

因为在取指令的时候,规定的段寄存器就是CS,所以CS为代码段寄存器;

而堆栈操作时规定的寄存器是SS,所以SS为堆栈寄存器;

题2.11请举例说明何为段前缀超越。

什么场合下要使用段前缀超越?

答:

在存取一般存储器操作数时,段寄存器可以不是DS;当偏移设计BP寄存器时,段寄存器

也可以不必是SS;如MovAX,[si]默认段地址在DS中,也可以改变:

MovAX,ES:

[si]

当数据并不在默认的DS指定段时,可以采用段前缀超越;

题2.128086/8088的基本寻址方式可分为哪三类?

他们说明了什么?

答:

8086/8088的基本寻址方式可分为以下三类:

1、存储器寻址;

2、立即寻址;

3、寄存器寻址;

他们说明了cpu有三类合计七种方式进行基本寻址;

题2.13存储器寻址方式分为哪几种?

何为存储器的有效地址?

答:

存储器寻址方式分为以下几种:

1、立即寻址;

2、直接寻址;

3、寄存器寻址;

4、寄存器间接寻址;

5、寄存器相对寻址;

6、基址加变址寻址;

7、相对基址加变址寻址;

存储器的有效地址是一个16bit的无符号数;

题2.14什么场合下缺省的段寄存器是SS?

为什么这样安排?

答:

当使用堆栈时,缺省的段寄存器是SS;

因为SS定义为堆栈段寄存器,配合SP堆栈指针,用来指向堆栈的栈顶;

题2.15请说明如下指令中源操作数的寻址方式,并作相互比较:

MOVBX,[1234H]

MOVBX,1234H

MOVDX,BX

MOVDX,[BX]

MOVDX,[BX+1234H]

MOVDX,[BX+DI]

MOVDX,[BX+DI+1234H]

答:

MOVBX,[1234H];直接寻址

MOVBX,1234H:

立即寻址

MOVDX,BX:

寄存器寻址

MOVDX,[BX]:

寄存器间接寻址

MOVDX,[BX+1234H]:

寄存器相对寻址

MOVDX,[BX+DI]:

基址加变址寻址

MOVDX,[BX+DI+1234H]:

相对基址加变址寻址

题2.168086/8088提供了灵活多样的寻址方式,如何适当的选择寻址方式?

答:

每种寻址方式都有其特点,首先应该掌握不同寻址方式之间的区别,以及

适用的范围,结合程序中的需要进行灵活选择。

题2.17设想一下这些寻址方式如何支持高级语言的多种数据结构?

答:

自己设想!

题2.18为什么目标操作数不能采用立即寻址方式?

答:

立即寻址表示是一个操作数,并非一个存储空间,作为目标操作数是不合适的;

题2.19处理器的通用寄存器是否越多越好?

通用寄存器不够用怎么办?

答:

处理器的通用寄存器并非越多越好,因为如果处理器的通用寄存器数量太多,势必

造成处理器的成本增加,同时也增加了处理器设计的复杂度;

如果通用寄存器不够用,应该采用内存中的存储单元代替,不过速度上要有所牺牲;

题2.20哪些存储器寻址方式可能导致有效地址超出64K的范围?

8086/8088如何处理这种

情况?

答:

寄存器相对寻址,基址加变址寻址,相对基址加变址寻址这三种寻址方式有可能导致

有效地址超出64K的范围,8086/8088将取其64K的模进行访问;

题2.21什么情况下根据段值和偏移确定的存储单元地址会超出1M?

8086/8088如何处理这种

情况?

答:

当物理地址的计算超过FFFFFH时,存储单元地址会超出1M,8086/8088将取其1M的模

覆盖存取;

题2.228086/8088的指令集可分为哪6个子集?

答:

8086/8088的指令集可分为以下6个子集:

1、数据传输

2、算术运算

3、逻辑运算

4、串操作

5、程序控制

6、处理器控制

题2.238086/8088的指令集合中,最长的指令有几个字节?

最短的指令有几个字节?

答:

8086/8088的指令集合中,最长的指令4个字节,最短的指令2个字节;

MOVAX,[BX+SI+1234H]

题2.248086/8088的算术逻辑运算指令最多一次处理多少二进制位?

当欲处理的数据

长度超出该范围怎么办?

答:

8086/8088的算术逻辑运算指令最多一次处理16bit的二进制位;如果处理的数据

长度超出则分成若干部分进行逻辑运算,最后进行整合;

题2.25如何时序数据段和代码段相同?

答:

将数据段的内容写入代码段中,并将代码段的段值赋给DS即可;

题2.26通常情况下源操作数和目的操作数不能同时是存储器操作数。

请给出把存储器操作

数甲送到存储器操作数乙的两种方法。

答:

法一:

MOVAX,[BX]

MOV[SI],AXDS:

[BX]=甲,DS:

[SI]=乙

法二:

MOVAX,[BX]

XCHGAX,[SI]

法三:

PUSHWORDPTR[BX]

POPWORDPTR[SI]

题2.27请用一条指令实现把BX的内容加上123并把和送到寄存器AX。

答:

LEAAX,[BX+123H]

题2.28堆栈有哪些用途?

请举例说明。

答:

堆栈的用途主要有:

1、现场和返回地址的保护;

MOVAX,OFFSETADDRESS

PUSHAX

JMPXXX

...

RET

2、寄存器内容的保护;

PUSHAX

PUSHBX

...

POPBX

POPAX

3、传递参数;

PUSH[BX]

CALLXXX

...

XXX:

POPAX

...

4、存储局部变量;

PUSHDS

PUSHCS

POPDS

...

POPDS

题2.29在本章介绍的8086/8088指令中,哪些指令把寄存器SP作为指针使用?

8086/8088指令

集中,哪些指令把寄存器SP作为指针使用?

答:

以下指令把寄存器SP作为指针使用:

1、PUSH

2、POP

3、PUSHF

4、POPF

5、PUSHA

6、POPA

7、RET

8、CALL

9、RETF

题2.30请说说标志CF的用途。

请至少给出使标志CF清0的三种方法。

答:

CF的用途主要有:

1、配合条件转移语句进行条件转移;

2、配合移位指令实现操作数之间的位转移;

3、常作为子程序的出口参数;如DOS磁盘文件管理功能调用等;

CF清0的方法:

法一:

CLC

法二:

ADDAX,0FFFFH

法三:

CMPAX,0

题2.31请写出如下程序片段中每条算术运算指令执行后标志CF、ZF、SF、OF、PF和AF的状态。

MOVAL,89H

ADDAL,AL

ADDAL,9DH

CMPAL,0BCH

SUBAL,AL

DECAL

INCAL

答:

INSTRUCTIONCFZFSFOFPFAF

MOVAL,89H000000

ADDAL,AL100111

ADDAL,9DH001010

CMPAL,0BCH101010

SUBAL,AL010010

DECAL001011

INCAL010011

题2.32什么是除法溢出?

如何解决16位被除数8位除数可能产生的溢出?

答:

除法溢出是指除数如果是0,或者在8位除数时商超过8位,或者在16位除时商超过16位,

则认为是除法溢出,引起0中断;

首先要确定8位除数不能为0,其次要确定商的最大值不能超过8位,如果超过8位,则可

采用16位的除法;

题2.33请写出如下程序片段中每条逻辑运算指令执行后标志ZF、SF、PF的状态:

MOVAL,45H

ANDAL,0FH

ORAL,0C3H

XORAL,AL

答:

INSTRUCTIONZFSFPF

MOVAL,45H000

ANDAL,0FH001

ORAL,0C3H010

XORAL,AL101

题2.34“MOVAX,0”可寄存器AX清0。

另外再写出三条可使寄存器AX清0的指令。

答:

法一:

XORAX,AX

法二:

ANDAX,0

法三:

SUBAX,AX

题2.35请写出如下程序片段中每条移位指令执行后标志CF、ZF、SF和PF的状态。

MOVAL,84H

SARAL,1

SHRAL,1

RORAL,1

RCLAL,1

SHLAL,1

ROLAL,1

答:

INSTRUCTIONCFZFSFPF

MOVAL,84H0000

SARAL,10010

SHRAL,10000

RORAL,11000(该命令不影响SF位)

RCLAL,11000

SHLAL,10010

ROLAL,11010

题2.368086/8088中,哪些指令把寄存器CX作为计数器使用?

哪些指令把寄存器BX作为基指针寄存器使用?

答:

8086/8088中,以下指令把寄存器CX作为计数器使用:

1、LOOP

2、LOOPE

3、LOOPZ

4、LOOPNZ

5、LOOPNE

6、JCXZ

以下指令把寄存器BX作为基指针寄存器使用:

1、MOV

2、XCHG

3、LEA

4、LDS

5、LES

6、ADD

...

题2.37请不用条件转移指令JG、JGE、JL和JLE等指令实现如下程序片段的功能:

CMPAL,BL

JGEOK

XCHGAL,BL

OK:

......

答:

如下命令可实现同样功能:

PUSHCX;ReserveCX

XORCX,CX;CX=0

MOVCH,02H;CH=02H

MOVCL,AL;CL=AL

MOVBH,0H;BH=0

SUBCX,BX;IfCH=2,AL>=BL;IfCH=1,AL

SHRCX,8;CX=2or1

LOOPOK;IfCX=2jmptoOK;IfCX=1ExchangeAL,BL

XCHGAL,BL

OK:

POPCX;RevertCX

......

题2.38段间转移和段内转移的本质区别是什么?

8086/8088哪些指令可实现段间转移?

答:

段间转移和段内转移的本质区别是有没有对CS进行设置,如果设置了新的CS代码寄存器,

程序将转移到另一个段中,即实现了段间转移;否则CS和原来一致,则在同一代码段中

继续进行,只是IP指针进行了调整,即为段内转移;

8086/8088中如下指令可以实现段间转移:

1.JMPFARPTRLEAEL

2.JMPOPRD

3.CALL

4.RET/RETF

题2.398086/8088的条件转移指令的转移范围有多大?

如何实现超出范围的条件转移?

答:

8086/8088的条件转移指令的转移范围只能从-126到+129之间,如果出现超出

范围的条件转移,要借助无条件转移命令JMP;

题2.40相对转移和绝对转移的区别是什么?

相对转移的有何优点?

答:

相对转移和绝对转移的区别是相对转移记录了目标地址与当前地址的差值,而绝对

转移在转移命令中直接包含了目标地址;

相对转移有利于程序的浮动,比如说增加了命令语句等;

题2.41请指出下列指令的错误所在:

MOVCX,DL

XCHG[SI],3

POPCS

MOVIP,AX

SUB[SI],[DI]

PUSHDH

ORBL,DX

ANDAX,DS

MUL16

AND7FFFH,AX

DIV256

ROLCX,BL

MOVES,1234H

MOVCS,AX

SUBDL,CF

ADCAX,AL

MOVAL,300

JDXZNEXT

答:

MOVCX,DL;寄存器大小不一

XCHG[SI],3;不能与立即数进行交换

POPCS;POP指令的对象不能是CS,PUSH可以

MOVIP,AX;IP不能是源也不能是目的

SUB[SI],[DI];如果参与的操作数有两个,只能有一个是存储器操作数

PUSHDH;PUSH和POP只能处理16位的操作数(8086/8088)

ORBL,DX;寄存器大小不一

ANDAX,DS;段寄存器不可以是操作数

MUL16;不可以使用立即数

AND7FFFH,AX;立即数不能是目的操作数

DIV256;不可以使用立即数

ROLCX,BL;BL不可以作为操作数

MOVES,1234H;段寄存器为目的时,源不能是立即数,需由通用寄存器转

MOVCS,AX;代码段寄存器CS不能为目的

SUBDL,CF;CF是Flag中的一个bit,不能如此

ADCAX,AL;寄存器大小不一

MOVAL,300;300超过0FFh,Over8bit

JDXZNEXT;JCXZ

题2.42请指出如下指令哪些是错误的,并说明原因:

MOV[SP],AX

PUSHCS

JM

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2