微机原理作业及参考答案讲诉.docx
《微机原理作业及参考答案讲诉.docx》由会员分享,可在线阅读,更多相关《微机原理作业及参考答案讲诉.docx(43页珍藏版)》请在冰豆网上搜索。
微机原理作业及参考答案讲诉
第二章计算机基础(P32)
1-1电子管,晶体管,中小规模集成电路、大规模、超大规模集成电路。
1-2把CPU和一组称为寄存器(Registers)的特殊存储器集成在一片大规模集成电路或超大规模集成电路封装之中,这个器件才被称为微处理器。
以微处理器为核心,配上由大规模集成电路制作的只读存储器(ROM)、读写存储器(RAM)、输入/输出、接口电路及系统总线等所组成的计算机,称为微型计算机。
微型计算机系统是微型计算机配置相应的系统软件,应用软件及外部设备等.
1-3写出下列机器数的真值:
(1)01101110
(2)10001101
(3)01011001(4)11001110
答案:
(1)+110
(2)-13(原码)-114(反码)-115(补码)
(3)+89(4)-78(原码)-49(反码)-50(补码)
1-4写出下列二进制数的原码、反码和补码(设字长为8位):
(1)+010111
(2)+101011
(3)-101000(4)-111111
答案:
(1)[x]原=00010111[x]反=00010111[x]补=00010111
(2)[x]原=00101011[x]反=00101011[x]补=00101011
(3)[x]原=10101000[x]反=11010111[x]补=11011000
(4)[x]原=10111111[x]反=11000000[x]补=11000001
1-5当下列各二进制数分别代表原码,反码,和补码时,其等效的十进制数值为多少?
(1)00001110表示原码14,反码14,表示补码为14
(2)11111111表示原码-127,反码-0,表示补码为-1
(3)10000000表示原码-0,反码-127,表示补码为-128
(4)10000001表示原码-1,反码-126,表示补码为-127
1-6已知x1=+0010100,y1=+0100001,x2=-0010100,y2=-0100001,试计算下列各式。
(字长8位)
(1)[x1+y1]补
(2)[x1-y2]补
(3)[x2-y2]补(4)[x2+y2]补
(5)[x1+2*y2]补(6)[x2+y2/8]补
答案:
(1)[x1+y1]补=[00010100+00100001]补=[00110101]补=00110101
(2)[x1-y2]补=[x1]补+[-y2]补=00010100+00100001=00110101
(3)[x2-y2]补=[x2]补+[-y2]补=11101100+00100001=00001101
(4)[x2+y2]补=[x2]补+[y2]补=11101100+11011111=11001011
(5)[x1+2*y2]补=[x1]补+[2*y2]补=00010100+10111110=11010010
(6)[x2+y2/8]补=11101100+[y2/8]补=11101100+11111100=11101000
1-7用补码来完成下列运算,并判断有无溢出产生(字长为8位):
(1)85+60
(2)-85+60
(3)85-60(4)-85-60
答案:
(1)[x]补+[y]补=01010101+00111100=10010001=-111,有溢出
(2)[x]补+[y]补=10101011+00111100=11100111=-25,无溢出
(3)[x]补+[y]补=01010101+11000100=00011001=25,无溢出
(4)[x]补+[y]补=10101011+11000100=01101111=111,有溢出
1-8在微型计算机中存放的两个补码数,试用补码加法完成计算,并判断有无溢出产生。
(1)[x]补+[y]补=01001010+01100001=10101011
有溢出
(2)[x]补-[y]补=01101100-01010110=01101100+10101010=00010110
无溢出
注:
[X]补-[Y]补=[X]补+[-Y]补
[-Y]补的算法:
将[Y]补连同符号位一起按位取反加1
1-9试将下列各数转换成BCD码:
(1)(30)10
(2)(127)10
(3)00100010B(4)74H
答案:
(1)(30)10=(00110000)BCD
(2)(127)10=(000100100111)BCD
(3)00100010B=34=(00110100)BCD
(4)74H=(116)10=(000100010110)BCD
1-10下列各数代表什么ASCII字符:
(1)41H
(2)72H
(3)65H(4)20H
答案:
(1)41H=(01000001)2,代表字符A。
(2)72H=(01110010)2,代表字符r。
(3)65H=(01100101)2,代表字符e。
(4)20H=(32)10=(00100000)2,代表SP。
1-11写出下列字符的ASCII码:
9,*,=,!
,$
答案:
900111001
*00101010
=00111101
!
00100001
$00100001
1-19地址总线:
传递地址信息的总线
数据总线:
传输数据
控制总线:
传输控制信号,时序信号和状态信息
1-20指令:
人们规定计算机执行特定操作(加、减、乘、除、移位……)的命令。
指令系统:
计算机全部指令的集合
1-21试用示意图说明内存储器的结构和读、写操作。
参考课本P22
第二章80X86/Pentium微处理器(P90)
2-3在执行指令期间,EU能直接访问存储器吗?
为什么?
答:
不能,因为CPU由EU和BIU组成,在指令执行期间,EU负责到BIU指令队列去取指令,执行指令,如果需要从存储器取数据,由BIU负责总线操作。
2-78086/8088有几位状态位?
有几位控制位?
其含义分别是什么?
答:
8086/8088有6位状态位,3位控制位。
状态位:
CF进位标志;PF奇偶标志;AF辅助进位标志;ZF零标志;SF符号标志,OF溢出标志。
控制位:
IF允许中断标志;DF方向标志;TF陷阱标志
2-9简述A0与/BHE在8086系统中的作用。
答:
8086有16根数据线,可以在一个总线读写周期中,读写一个字数据。
8086CPU配置的内存分为奇地址和偶地址存储体。
如果要读写一个字数据,需要分别从奇地址和偶地址存储体读写一个字节数据。
由A0=0选通偶地址存储体,一个字节数据送到低八位数据线D0~D7;由/BHE=0选通奇地址存储体,一个字节数据送到高八位数据线D8~D15。
2-15物理地址:
存储区域的某一单元地址,地址信息是20位二进制代码.CPU是以物理地址访问存储器.
逻辑地址:
编程时采用,由段基址和偏移量组成.8086CPU中的每个存储元在存储体中的位置都可以使用实际地址和逻辑地址来表示。
同一物理地址可对应多个逻辑地址
2-16段寄存器指示的存储区域的起始地址称为段基址,偏移量是在某段内指定存储单元到段基址的距离。
段基址和偏移量共同组成物理地址,物理地址PA=段基地址×16+偏移量
2-17A0000H-AFFFFh
2-18B000H
2-19设双字12345678H的起始地址是A001H,试说明这个双字在存储器中如何存放?
答:
地址为A001H、A002H、A003H、A004H的存储单元分别存放:
78H、56H、34H、12H。
存放原则:
低地址存放低位数据,依次存放在连续的存储单元中。
2-20已知堆栈段寄存器SS=A000H,堆栈指示器SP=0100H,试将数据1234ABCDH推入堆栈,画出进栈示意图。
最后栈顶SP=?
答:
SP=00FCH
物理地址0A00FCH---0A00FFH的内容依次为CD,AB,34,12.
注:
SP:
堆栈栈顶指示器,16位寄存器,存放栈顶的偏移地址。
2-21试求出下列运算后的各个状态标志,并说明进位标志和溢出标志的区别。
(1)1278H+3469H
(2)54E3H-27A0H
(3)3881H+3597H
(4)01E3H-01E3H
解:
(1)0001001001111000
+0011010001101001
0100011011100001
CF=0PF=1AF=1ZF=0SF=0OF=0
(2)0101010011100011
+1101100001100000
10010110101000011
CF=0PF=0AF=0ZF=0SF=0OF=0
(3)0011100010000001
+0011010110010111
0110111000011000
CF=0PF=1AF=0ZF=0SF=0OF=0
(4)0000000111100011
+1111111000011101
10000000000000000
CF=0PF=1AF=0ZF=1SF=0OF=0
注:
16位操作数的最低二进制位:
b0、最高二进制位:
b15
AF:
看b3是否向b4有进(借)位:
辅助进借位
对减法运算,若采用补码的加法进行,则CF取反。
2-24什么是时钟周期,机器周期,总线周期,什么是指令周期?
参考课本P55。
第三章80X86/Pentium指令系统(P135)
3-4
(1)7237H
(2)D5B4H(3)637DH
3-5寻址方式:
(1)MOVSI,2100H
(2)MOVCX,DISP[BX]
(3)MOV[SI],AX(4)ADCAX,[BX][SI]
(5)ANDAX,DX(6)MOVAX,[BX+10H]
(7)MOVAX,ES:
[BX](8)MOVAX,[BX+SI+20H]
(9)MOV[BP],CX(10)PUSHDS
地址表达式:
标号/变量/常量+基址寄存器+变址寄存器
[地址表达式]:
存储器操作数,以地址表达式的值为偏移地址
3-7(4)(10)(14)正确。
3-8
(1)AX=3355H,SP=1FFFEH
(2)AX=3355H,DX=4466H,SP=1FFFEH
3-9BX=4154H,[2F246H]=6F30H
3-10BX=139EH
3-11SI=0180HDS=2000H
3-12
(1)CL=0F6H
(2)CX=5678h
(3)BX=0056H,AX=1E40H
(4)SI=00F6H,[SI]=0024H
(5)AX=5678H,[09226H]=1234H
3-13
(1)不影响
(2)AF=0,CF=1OF=1SF=0ZF=0
3-14
(1)MOVAX,0XORAX,AXSUBAX,AX
(2)MOVCL,4
RORBL,CL
(3)MOVAX,N1
MOVBX,N1
CWD;对被除数进行符号扩展
IDIVBX
MOVM1,AX;商放在AX中
MOVM2,DX;余数放在DX中
(4)ANDBX,0F7AFH或OR0850H
(5)XORAX4020H
(6)TESTDX,0201H
(7)ORCX,1
3-15
(1)LEABX,BLOCK
MOVBX,BX+10
MOVAX,[BX]
(2)LEABX,BLOCK
MOVAX,[BX+10]
(3)LEABX,BLOCK
MOVSI,10
MOVAX,[BX+SI]
(4)MOVAX,[BLOCK+10]
3-16
(1)60H输出到端口580H
(2)8060H输出到580H端口
(3)将4FH从端口40H读入到AL(4)从端口40H读一个16位的数到AX(5)将60H输出到端口45H(6)将8060H输出到端口45H
3-17
NUM1DW4148H,2816H
NUM2DW2258H,8452H
(1)MOVAX,NUM2
ADDNUM1,AX
MOVAX,NUM2+2
ADDNUM1+2,AX
(2)RESDB2DUP(?
)
MOVAL,BYTEPTRNUM1
ADDAL,BYTEPTRNUM1+1
ADDAL,BYTEPTRNUM1+2
ADDAL,BYTEPTRNUM1+3
MOVRES,AL
(3)假设存放的数据为无符号数
MOVSI,OFFSETNUM1
XORAX,AX
MOVCX,8
LP:
ADDAL,[SI]
ADCAH,0
INCSI
LOOPLP
MOVRES,AL
MOVRES+1,AH
假设存放的数据为带符号数
MOVSI,OFFSETNUM1
XORBX,BX
MOVCX,8
LP:
MOVAL,[SI]
CBW
ADDBX,AX
INCSI
LOOPLP
MOVRES,AL
MOVRES+1,AH
(4)MOVAX,NUM1
ADDNUM2,AX
MOVAX,NUM1+2
ADCNUM2+2,AX
3-18
(1)XORAX,AX;AX清零
LEASI,NUM1
MOVCX,8
LOP:
ADDAL,[SI]
DAA
ADCAH,0;AF清零
INCSI
LOOPLOP
MOVRES,AL
MOVRES+1,AH
(2)MOVAL,NUM1
SUBAL,NUM2
DAS
MOVRES,AL
差=90H;CF=1
3-21
(1)BX=9AH
(2)BX=61H(3)BX=8071H
(4)BX=10F7H(5)BX=0FF1CH
3-22
(1)DX=0006HBX=0004H
(2)SP=1FFFEH[SP]=0FFFEH
(3)CX=0004HBX=0004H
(4)AX=8094HCF=0
(5)MOVAL,[SI]
(6)AL=0CCHCF=0
AL=32H
(7)SI=0009H
(8)DI=0009H
(9)[DI]=94H
(10)AX=17C6HDX=8094H
(11)AH=84H,BL=04H
(12)IP=17C6H
3-23
(1)将自FIRST开始的存储区中的连续10个字节传送到从SECOND开始的存储区中。
(2)将自0404H开始的存储区中连续256个字节全部赋0值。
3-26MOVBX,0A80H
MOVAL,5
XLAT
3-27
(1)IP=1256H
(2)IP=3280H(3)IP=2450H
3-28
CS=2000H;IP=009AH;SP=0F178H;[SP]=8FH
[SP+1]=3DH;[SP+2]=50H;[SP+3]=40H;
3-29
MOVBL,AL
CMPAL,01H
JZLAB1
CMPAL,02H
JZLAB2
CMPAL,04H
JZLAB3
ANDBL,07H
JNZOK
……
OK:
……
LAB1:
……
LAB2:
……
LAB3:
……
3-31
MOVAX,0032H
CMPAX,X
JLN_HIGH
MOVBX,X
SUBBX,Y
JOOVERFLOW
JNSNEXT
NEGBX
NEXT:
MOVRESULT,BX
N_HIGH:
……
OVERFLOW:
……
第四章汇编语言程序设计(P195)
4-2内存分配和预置数据
VAR1DB12,-12H,3DUP(0,0FFH)
VAR2DB100DUP(0,2DUP(1,2),0,3)
VAR3DB‘WELCOMETO’
VAR4DWVAR3+6;取其偏移量给VAR4
VAR5DDVAR3;取其偏移量和段基址给VAR5
4-3
(1)DATA1DB86H,27H,23H,00H,24H,1AH
(2)DATA2DW0B430H,1062H
(3)DATA3DB4DUP(20H),20,0,6DUP(1,2)
4-4
(1)2
(2)2
(3)1
(4)10
4-5
(1)VAR1的偏移量是0030H;VAR2的偏移量是003AH
(2)CNT=0010H
(3)VAR2+2单元的内容是02H
4-10
DATASEGMENT
XDB4DUP(?
)
YDB4DUP(?
)
ZDB4DUP(?
),0;定义X,Y,Z为字节变量
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,WORDPTRX[0]
ADDAX,WORDPTRY[0];X,Y低16位相加
MOVWORDPTRZ[0],AX;结果存入Z的低16位
MOVAX,WORDPTRX[2]
ADCAX,WORDPTRY[2];X,Y高16位相加
MOVWORDPTRZ[2],AX;结果存入Z的高16位
JNCOK
MOVAL,1
MOVZ+4,AL;保存进位
OK:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
4-11
DATASEGMENT
XDB4DUP(?
)
YDB4DUP(?
)
ZDB4DUP(?
);定义X,Y,Z为字节变量
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDL,0
MOVAX,WORDPTRX
SUBAX,WORDPTRY;X,Y低16位相减
MOVWORDPTRZ,AX;结果存入Z的低16位
MOVAX,WORDPTRX[2]
SBBAX,WORDPTRY[2];X,Y高16位相加
MOVWORDPTRZ[2],AX;结果存入Z的高16位
JNOOK
MOVDL,-1;溢出
OK:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
4-12
(1)
DATASEGMENT
DB100DUP(?
)
MESGDB'ERRORINPUT!
$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
STARTPROCFAR
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVAH,01H
INT21H;从键盘输入一个字符,该字符ASCII码送入AL
CMPAL,41H
JBERROR
CMPAL,4AH
JAERROR
CMPAL,41H
JEP0;判断输入字符是为'A',则跳转到P0
...
CMPAL,4AH
JEP9;判断输入字符是为'J',则跳转到P9
P0:
...
RET
...
P9:
...
RET
ERROR:
MOVDX,OFFSETMESG
MOVAH,09H
INT21H;输入字符非'A'~'J'则输出错误信息
RET
STARTENDP
CODEENDS
ENDSTART
(2)
DATASEGMENT
BASEDWP0,P1,P2,P3,P4,P5,P6,P7,P8,P9
MESGDB'ERRORINPUT!
$'
DATAENDS
STACKSEGMENTPARASTACK'STACK'
DB100DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
STARTPROCFAR
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVBX,0;BX为跳转表BASE内寻址编号,清零
MOVAH,01H
INT21H;从键盘输入字符命令
CMPAL,41H
JBERROR
CMPAL,4AH
JAERROR;输入字符非'A'~'J'则跳转到ERROR
MOVBL,AL
SUBBL,41H;得编号
SHLBX,1;表内偏移量=编号*2
JMPBASE[BX];查跳转表跳转到相应的子程序
ERROR:
MOVDX,OFFSETMESG
MOVAH,09H
INT21H;输出错误信息
RET
P0:
...
RET
...
P9:
...
RET
STARTENDP
CODEENDS
ENDSTART
4-13
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVGOOD,0
MOVPASS,0
MOVBAD,0
XORBX,BX;bx存放全年级统计总成绩
XORSI,SI
MOVCX,100
LP:
MOVAH,BUF[SI]
CMPAH,85H
JAGS
CMPAH,60H
JAEPS
MOVAL,BAD
ADDAL,1
DAA
MOVBAD,AL
JMPAGAIN
GS:
MOVAL,GOOD
ADDAL,1
DAA
MOVGOOD,AL
JMPAGAIN
PS:
MOVAL,PASS
ADDAL,1
DAA
MOVPASS,AL
AGAIN:
MOVAL,BL
ADDAL,AH
DAA
MOVBL,AL
MOVAL,BH
ADCAL,0
DAA
MOVBH,AL
INCSI
LOOPLP
MOVAVRG,BH
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
4-15
DATASEGME