第一章习题解答Word格式文档下载.docx
《第一章习题解答Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《第一章习题解答Word格式文档下载.docx(28页珍藏版)》请在冰豆网上搜索。
∴[16-6]补=[16]补+[-6]补=10H+FAH=0AH
(8)-25-6=?
∴[-25-6]补=[-25]补+[-6]补=E7H+FAH=E1H
6、设机器字长为8位,最高位为符号位,试用“双高位”法判别下述二进制运算有没有溢出产生。
若有,是正溢出还是负溢出?
(1)43+8=51
[43]补=2BH
[8]补=08H
00101011
+00001000
00110011B
因为D7CY○+D6CY=0○+0=0,所以运算结果没有溢出。
(2)-52+7=-45
[-52]补=CCH
[7]补=07H
11001100
+00000111
11010011B
(3)50+84=
[50]补=32H
[84]补=54H
00110010
+01010100
10000110B
因为D7CY○+D6CY=0○+1=1,所以运算结果产生了正溢出。
(4)72-8=64
[72]补=48H
[-8]补=F8H
01001000
+11111000
01000000B
因为D7CY○+D6CY=1○+1=0,所以运算结果没有溢出。
(5)-33+(-37)=-70
[-33]补=DFH
[-37]补=DBH
11011111
+11011011
10111010B
(6)-90+(-70)=
[-90]补=A6H
[-70]补=BAH
10100110
+10111010
01100000B
因为D7CY○+D6CY=1○+0=1,所以运算结果产生负溢出。
7、何谓字符串及位串?
它们之间有何不同?
答:
“字符串”是以字节/字/双字的相邻序列;
8、已知位bi及bj在位串中的地址(位偏移量)分别为92和-88,试求它们各自在位串中的字节地址及其在所在字节中的位置。
bi的字节索引为92÷
8取整数商:
11;
bi的位余数为92mod8:
4
bi位在m+11字节的D4位。
bj的字节索引为-88÷
8取整:
5
bj的位余数为-88mod8:
bj位在m-11字节的D0位。
9、将下列十进制数变为8421BCD码:
(1)8069
8069对应的8421BCD码为:
1000000001101001
(2)5324
5324对应的8421BCD码为:
0101001100100100
10、将下列8421BCD码表示成十进制数和二进制数:
(1)01111001B
(01111001)8421BCD=79=1001111B
(2)10000011B
(10000011)8421BCD=83=1010011B
11、写出下列各数的ASCII代码:
(1)51
51的ASCII代码为:
35H31H
(2)7F
7F的ASCII代码为:
37H46H
(3)AB
AB的ASCII代码为:
41H42H
(4)C6
C6的ASCII代码为:
43H36H
第二章习题解答(P69)
1、8086/8088CPU中BIU部件和EU部件各由哪些部分组成?
各自的功能是什么?
追踪指令地址的寄存器是什么?
8086/8088CPU中BIU部件由4个段寄存器(CS,DS,ES和SS)、1个指令指针寄存器(IP)、
1个20位地址加法器、1个指令队列缓冲器(8086为6字节,8088为4字节)和总线控制电路等组成。
主要功能一是从内存中取指令代码送入指令队列缓冲器中;
二是响应EU的总线请求,负责与内存或输入/输出接口之间的数据传送;
三是在执行转移指令时,BIU使指令队列缓冲器复位,从指定的新地址取指令,并立即传给EU单元执行。
EU部件由1个16位ALU、寄存器组(4个通用寄存器AX、BX、CX和DX,2个指针寄存器BP和SP,2个变址寄存器DI和SI)、1个标志寄存器FLAGS和执行控制电路(指令译码和时序产生电路等)等组成。
其功能一是从指令队列缓冲器中依次取出指令代码、译码并执行;
二是执行含存储器或I/O口的指令时,形成存储器操作数的段内偏移地址或I/O口地址送BIU;
三是执行转移、调用、中断指令时通知BIU复位指令队列缓冲器,立即从新地址开始取指令代码。
在8086/8088CPU中,追踪指令地址的寄存器是IP(指令指针寄存器),由CS:
IP指出要执行指令的地址。
2、简述堆栈指示器SP的功能及堆栈的操作过程。
8X86系列微处理器的堆栈如下图所示:
①堆栈是由内存中按照“先进后出”原则组织起来的一片连续的存储器单元组成;
②SP作为堆栈指针,始终指向“栈顶”;
③堆栈操作
进栈操作(PUSH)先把SP-2,再把源操作数存入SP所指的字存储器单元;
出栈操作(POP)先把SP所指字单元的内容取到目的操作数,再将SP+2。
3、8086/8088CPU有哪几个状态标志?
哪几个控制标志?
各标志的含义和功能是什么?
①8086/8088CPU有6个状态标志,各标志的含义是:
CF:
进位/借位标志,指示加/减法运算中最高位的进/借位状态,有进/借位时CF为1,反之为0;
PF:
奇偶标志,指示算术/逻辑运算结果低8位中1的个数是奇/偶数,结果中有偶数个1时,PF为1,
反之为0;
AF:
半进位标志,指示加/减法运算中D3位向D4位的进/借位状态,有进/借位时AF为1,反之为0;
ZF:
0标志,指示算术/逻辑运算结果使ALU中是否为全0,ALU中为全0时ZF为1,反之为0;
SF:
符号标志,指示算术/逻辑运算结果最高位的状态,最高位为1时SF为1,反之为0;
OF:
溢出标志,指示带符号算术运算结果是否超出其表示范围,用双高位法判断,有溢出时OF为1,反之为0;
注意:
CF,ZF,SF和OF与操作数的位数有关,80386支持8位,16位和32位运算。
PF和AF与操作数的位数无关。
②8086/8088CPU有3个控制标志,各标志的含义是:
TF:
单步标志,用来控制CPU执行指令的方式,当TF=1时,每执行一条指令便产生一次单步中断,当
TF=0时,连续执行指令;
DF:
方向标志,用来控制串操作指令的步进方向,当DF=1时,串操作指令从高地址向低地址方向进行,
当DF=0时,串操作指令从低地址向高地址方向进行;
IF:
可屏蔽中断允许标志,当IF=1时,允许响应可屏蔽中断请求,反之则禁止响应。
4、8086/8088CPU的存储器组织为什么要采用分段结构?
逻辑地址和物理地址的关系是什么?
若已知逻辑地址为B100H:
A300H,试求物理地址。
8086/8088CPU的存储器组织采用分段结构有以下优点:
①能有效利用8086/8088CPU的
个16位寄存器和1个20位地址加法方便的构成20位地址,使8086/8088CPU的寻址能力达到1MB;
②能方便实现不同信息的分类存储(程序代码、数据和堆栈等)和共享;
③有利于模块化程序、多道程序和多用户程序的设计。
逻辑地址是编程者使用的地址,不是程序代码或数据在计算机中的实际地址,而物理地址是系统中每个存储器单元或I/O端口所在的地址,由处理器的地址线状态确定。
逻辑地址必须转换成物理地址才能使用,在8086/8088系统中,其转换方法是:
物理地址=段地址×
10H+偏移地址
一个逻辑地址只对应一个物理地址。
例如本题中:
物理地址=B100H×
10H+A300H=BB300H
而一个物理地址可以对应多个逻辑地址,例如本题中物理地址BB300H,可以对应逻辑地址:
B100H:
A300H
B000H:
B300H
BB00H:
0300H
BB30H:
0000H
…
这种对应关系有利于存储器单元的共享,但要防止冲突。
7、试判断下列运算执行之后,OF、CF、ZF、SF、PF和AF的状态:
⑴A400H+7100H
1010010000000000
+0111000100000000
0001010100000000
运算后各标志的状态为:
OF=0,CF=1,ZF=0,SF=0,PF=1,AF=0
⑵A323H-8196H
1010001100100011
-1000000110010110
0010000110001101
OF=0,CF=0,ZF=0,SF=0,PF=1,AF=1
⑶46H-59H
01000110
-01011001
11101101
OF=0,CF=1,ZF=0,SF=1,PF=1,AF=1
⑷7896H-3528H
0111100010010110
-0011010100101000
0100001101101110
OF=0,CF=0,ZF=0,SF=0,PF=0,AF=1
10
若把该题改为“+”运算,即:
7896H+3528H,则运算结果OF=1
+0011010100101000
1010110110111110
OF=1,CF=0,ZF=0,SF=1,PF=1,AF=0
10、80386CPU有哪几种工作方式?
各有何特点?
80386CPU有3种工作方式。
各方式的主要特点是:
①在实地址方式,80386只能寻址1MB物理地址空间,相当于一个高速8086CPU;
②在虚地址保护方式,80386可寻址4GB物理地址空间和64TB虚地址空间,对内存采用分段和分页管理方式,更好地兼顾了程序设计的逻辑性和内存管理的高效灵活两者的矛盾。
③在虚拟8086方式,8086的程序可以在保护方式的基础上作为任务加以执行,实现多个用户程序同时运行。
11、80386寄存器集由哪些寄存器组成?
它们的功能和特点是什么?
80386内部寄存器的组成和主要特点归纳如下:
①通用寄存器
寄存器位定义
1F……10
0F……08
07……00
EAX
AH
AL
EBX
BH
BL
ECX
CH
CL
EDX
DH
DL
ESI
SI
EDI
DI
EBP
BP
ESP
SP
②其它寄存器
13、何谓CISC技术和RISC技术?
各自的代表产品是什么?
所谓CISC技术,是指采用“复杂指令集计算机”技术设计的微处理器体系结构;
其主要特点是:
采用变长指令编码,寻址方式多,指令功能丰富,采用微程序控制,各指令执行时间相差很大,目的在于提高编程效率和内存利用率,其主要代表产品如Intel80X86系列,ZilogZ80和Motorola68K系列等。
所谓RISC技术是指采用“精简指令集计算机”技术设计的微处理器体系结构;
采
用定长指令编码,寻址方式多,指令条数少且很规整,采用硬布线控制,目的在于更多地使用流水线技术,提高取指令和分析指令的效率,使各指令执行时间相差很小,多数为单周期指令,大大简化了微处理器的结构,降低了成本,提高了速度,其主要代表产品如
APPLE、IBM和Motorola的PowerPC微处理器
SGI/MIPS的R2000,R3000等
IBM的Power微处理器
SUN的SPARC微处理器
第三章习题解答(P118)
1、指出下列指令中源操作数和目的操作数的寻址方式:
;
目的操作数源操数
⑴MOVSI,1000;
寄存器寻址立即数寻址
⑵MOVBL,AL;
寄存器寻址寄存器寻址
⑶MOV[SI],1000;
寄存器间接寻址立即数寻址
⑷MOVBP,[BX];
寄存器寻址寄存器间接寻址
⑸ANDDL,[BX+SI+20H];
寄存器寻址相对的基址加变址寻址
⑹PUSHDS;
SP寄存器间接寻址寄存器寻址
⑺POPAX;
寄存器寻址SP寄存器间接寻址
⑻MOVEAX,COUNT[EDX];
寄存器寻址相对的寄存器间接寻址(286扩展指令)
⑼IMULAX,BX,34H;
寄存器寻址,寄存器寻址,立即数寻址(286扩展指令)
⑽JMPFARPTRLABEL;
段间直接转移
2、指出下列指令语法是否正确,若不正确请说明原因。
⑴MOVDS,0100H;
×
,段寄存器不能直接赋立即数。
⑵MOVBP,AL;
,操作数类型不匹配
⑶XCHGAX,2000H;
,立即数不能用于交换指令
⑷OUT310H,AL;
,端口直接寻址不能超出00-FFH
⑸MOVBX,[BX];
√
⑹MOVES:
[BX+DI],AX;
⑺MOVAX,[SI+DI];
,不能同时用两个变址寄存器间接寻址
⑻MOVSS:
[BX+SI+100H],BX;
⑼ANDAX,BL;
⑽MOVDX,DS:
[BP];
⑾MOV[BX],[SI];
,不能用MOV指令直接在存储器单元间传送数据
⑿MOVCS,[1000];
,不能用MOV指令向CS寄存器写入数据
⒀INAL,BX;
,不能用BX作为寻址I/O的指针
3、设(DS)=2000H,(BX)=1256H,(SI)=528FH,偏移量=20A1H,[232F7H]=3280H,
[264E5H]=2450H。
若独立执行下列指令后,请给出对应IP寄存器的内容。
⑴JMPBX;
执行该指令将(BX)送IP,所以,执行后(IP)=1256H。
⑵JMP[BX][SI];
执行该指令将DS段由(BX)+(SI)所指字单元的内容送IP。
因为2000H×
10H+(1256H+528FH)=264E5H,所以,执行后(IP)=2450H。
补充:
JMP[BX+20A1H];
该指令执行后(IP)=3280H
6、有如下程序:
MOVAL,45H
ADDAL,71H
DAA
MOVBL,AL
MOVAL,19H
ADCAL,12H
MOVBH,AL
执行后(BX)=?
,标志位(PF)=?
和(CF)=?
该程序执行时,各相关寄存器和标志位的变化过程如下:
MOVAL,45H;
(AL)=45H
ADDAL,71H;
(AL)=B6H,(PF)=0,(CF)=0
DAA;
(AL)=16H,(PF)=0,(CF)=1
MOVBL,AL;
(BL)=16H
MOVAL,19H;
(AL)=19H
ADCAL,12H;
(AL)=2CH,(PF)=0,(CF)=0
(AL)=32H,(PF)=0,(CF)=0
MOVBH,AL;
(BH)=32H
执行后(BX)=3216H,标志位(PF)=0,(CF)=0
7、执行下列程序段,指出此程序段的功能。
⑴MOVCX,10
LEASI,First
LEADI,Second
REPMOVSB
该程序段的功能是将存于DS:
First开始的10个字节的内容传送到ES:
Second开始的10个字节单元中。
⑵CLD
LEADI,[0404H]
MOVCX,0080H
XORAX,AX
REPSTOSW
该程序段的功能是在ES:
0404H单元开始,依次填入80H个字的0。
(即ES:
0404H——ES:
0503H
共256个字节单元清0)
8、试用指令实现:
⑴AL寄存器低4位清0;
ANDAL,0F0H;
⑵测试DL寄存器的低2位是否为0,若是,则将0送入AL寄存器;
否则将1送入AL寄存器。
TESTDL,03H
JZz
MOVAL,1
JMPABC
Z:
MOVAL,0
ABC:
...
第四章习题解答(P195)
2、有下列数据段:
DATASEGMENT
MAXEQU03F9H
VAL1EQUMAXMOD0AH
VAL2EQUVAL1*2
BUFFDB4,5,‘1234’
BUF2DB?
LENDEQUBUF2-BUFF
DATAENDS
请写出数据段中MAX,VAL1,VAL2,LEND符号所对应的值。
上述程序的数据段中
MAX=03F9H,VAL1=03F9HMOD0AH=7,VAL2=VAL1*2=7*2=0EH,LEND=BUF2-BUFF=0006-0000=0006H
标号
段内偏移地址
数据
备注
BUFF
0000
04
0001
05
0002
31
‘1’
0003
32
‘2’
0004
33
‘3’
0005
34
‘4’
BUF2
0006
00
……
3、设下列指令语句中的标识符均为字变量,请指出哪些指令是非法的,并指出其错误之处。
⑴MOVWORD1[BX+2][DI],AX;
⑵MOVAX,WORD1[DX];
,DX不能作为寻址内存的指针。
⑶MOVWORD1,WORD2;
,内存储器单元之间不能直接传送。
⑷MOVSWORD,DS;
⑸MOVSP,DWORD[BX][SI];
,DWORD是保留字
⑹MOV[BX][SI],CX;
⑺MOVAX,WORD1+WORD2;
,两个变量不能直接相加
⑻MOVAX,WORD2+0FH;
⑼MOVBX,0FFSETWORD1;
⑽MOVSI,OFFSETWORD2[BX];
,OFFSET后应跟变量或标号
9、巳知X,Y,Z被赋值如下:
XEQU60
YEQU70
ZEQU8
试求下列表达式的值:
⑴X*Y-Z
⑵X/8+Y
⑶XMOD(Y/Z)
⑷X*(YMOD2)
⑸XGEY
⑹YANDZ
⑴X*Y-Z=60*70-8=4192=1060H
⑵X/8+Y=77.5=4DH
⑶XMOD(Y/Z)=4
⑷X*(YMOD2)=0
⑸XGEY=0
⑹YANDZ=0
10、设有一个有符号数组,共M个字,试编写一程序求其中最大的数,若需求绝对值最大的数,程序
应如何修改?
又若数组元素为无符号数,求最大数的程序应如何修改?
⑴在有符号数组中找出最大数的程序
datasegment
mequ10
datdwmdup(?
)
maxdw?
dataends
codesegment
assumecs:
code,ds:
data
mainprocfar
start:
movax,data
movds,ax
movax,dat
movmax,ax
cld
leasi,dat
movcx,m
l1:
lodsw
cmpax,max
jnglab
lab:
loopl1
movah,4ch
int21h
mainendp
codeends
endstart
⑵在有符号数组中找出绝对值最大数的程序
在LODSW指令后插入:
Andax,ax
Jnslab1
Negax
lab1:
cmpax,max
初始化时,(MAX)=0(最小的绝对值)
⑶在无符号数组中找出最大数的程序
把条件判断指令:
Jnglab
改为:
jbelab
12、设有两个等字长、