微机.docx
《微机.docx》由会员分享,可在线阅读,更多相关《微机.docx(60页珍藏版)》请在冰豆网上搜索。
微机
第一章答案
1-3
(1)01101110真值=110
(2)10001101真值=-13
1-4
(1)+010111
[+010111]原=[+010111]反=[+010111]补=00010111
(2)+101011
[+101011]原=[+101011]反=[+101011]补=00101011
(3)–101000
[-101000]原=10101000[-101000]反=11010111
[-101000]补=11011000
(4)-111111
[-111111]原=10111111[-111111]反=11000000
[-111111]补=11000001
1-6
(1)[x1+y1]补=[x1]补+[y1]补=00010100+00100001=00110101
(2)[x2-y2]补=[x2]补+[-y2]补=11101100+00100001=00001101
1-7
(1)85+60
解:
[-85]补=10101011[60]补=00111100
[-85]补+[60]补=10101011+00111100=11100111
(11100111)补=10011001真值=-25
CS=0,CP=0,CS⊕CP=0无溢出
(4)-85-60
[-85]补=10101011[-60]补=11000100
[-85]补+[-60]补=10101011+11000100=101101111
CS=1,CP=0CS⊕CP=1有溢出
1-8
(1)
[x]补+[y]补=01001010+01100001=10101011
CS=0,CP=1CS⊕CP=1有溢出
(2)
[x]补-[y]补=[x]补+[-y]补=01001010-01100001=01001010+10101010
=100010110
CS=1,CP=1CS⊕CP=0无溢出
1-9
(1)(127)10=(000100100111)BCD
(2)(74)H=(116)10=(000100010110)BCD
1-10
(1)41H代表A
(2)72H代表r
(3)65H代表e
(4)20H代表SP
1-14
(1)69.57
(69.57)10=(1000101.100)B=0.1000101100X27
=0.1000101100X2+111
浮点规格数为011101000101
(2)-38.405
(-38.405)10=(-100110.011)B
-100110.011=-0.100110011x26=-0.100110011x2110
浮点规格数为011011001100
(3)-0.3125
(-0.3125)10=(-0.0101)2=(-0.101)2x2-001
浮点规格数为111111010000
(4)+0.00834
(+0.00834)10=(0.000000100010001)2=(0.100010001)2x2-110
浮点规格数为101001000100
1-15
(1)(69.57)10=(1000101.10010001111010111)2
=(1.00010110010001111010111)2x2110
p=6+127=133=(10000101)2
单精度浮点数为01000010100010110010001111010111
(2)(-38.405)10=(-100110.011001111010111000)2
=-(1.00110011001111010111000)2x2101
p=5+127=132=(10000100)2
单精度浮点数为11000010000110011001111010111000
(3)(-0.3125)10=(-0.0101)2=(-1.01)2x2-10
p=-2+127=125=(1111101)2
单精度浮点数为010*********
2-3
D
读存储器00001
写存储器01010
2-17
PA=CSx16+IPIP的范围为0000H~FFFFH而CS为A000H
因此PA的范围即现行代码段可寻址的存储空间范围为A0000H~AFFFFH
2-19
78H-->A001H
56H-->A002H
34H-->A003H
12H-->A004H
2-20
1234ABCDH=00010010001101001010101111001101B
PA=SSx16+SP=A0000H+0100H=A0100H
栈顶SP=0100H-4=00FCH
11001101
10101011
00110100
00010010
2-21
(1)1278H+3469H=0001001001111000+0011010001101001
=0100011011100001
SF=0ZF=0AF=1PF=1CF=0OF=0
(2)54E3H-27A0H=0101010011100011+1101100001100000
=10010110101000011
SF=0ZF=0AF=1PF=0CF=0OF=0
当进行16位或8位加或减运算时,若最高位产生进位或借位时,将CF置1,否则为0,当进行带符号数补码运算时,运算结果超出了机器所能表示的数值范围,就产生溢出,将OF置1,否则OF置0,即OF用来表示有符号数运算的溢出,而CF则用来表示无符号数运算的溢出。
2-29
答:
存储慢速设备(存储器或I/O设备)的数据时,必须插入等待周期TW来延长总线周期,插入TW多少取决于CPU完成独立操作所需时间。
3-5
(1)源操作数为立即寻址方式;目标操作数为寄存器寻址方式
(2)源操作数为基址寻址方式;目标操作数为寄存器寻址方式
EA=BX+DISPPA=DS×16+BX+DISP
(3)源操作数为寄存器寻址方式;目标操作数为寄存器间接寻址方式
EA=SIPA=DS×16+SI
(4)源操作数为基址加变址寻址方式;目标操作数为寄存器寻址方式
EA=BX+SIPA=DS×16+BX+SI
(5)源操作数、目标操作数都为寄存器寻址方式
(6)源操作数为基址寻址方式;目标操作数为寄存器寻址方式
EA=BX+10HPA=DS×16+BX+10H
(7)源操作数为寄存器间接寻址方式;目标操作数为寄存器寻址方式
EA=BXPA=ES×16+BX
(8)源操作数为带位移量基址加变址寻址方式;目标操作数为寄存器寻址方式
EA=BX+SI+20HPA=DS×16+BX+SI+20H
(9)源操作数为寄存器寻址方式;目标操作数为寄存器间接寻址方法
EA=BPPA=SS×16+BP
(10)源操作数为寄存器寻址方式
3-6
(1)源操作数为寄存器寻址方式
(2)源操作数为基址加变址寻址方式
(3)源操作数为基址加比例变址寻址方式
(4)源操作数为比例变址寻址方式
3-7
(1)有错。
没有两个基址寄存器相加的寻址方式
(2)有错。
两个操作数不能同时为存储器
(3)有错。
立即数不能直接送到段寄存器
(4)有错。
段寄存器CS不能作为目标操作数
(5)有错。
目标操作数不能为立即数
(6)正确。
(7)有错。
两段寄存器间不能传送数据
(8)有错。
不能直接用“3”表示移3位
(9)有错。
NOT指令中只有一个目标操作数
(10)正确。
(11)有错。
源操作数不能为立即数
(12)有错。
格式为INAL,I/O端口地址,且100H>255,应放在DX中,DX在指令中出现
(13)有错。
源操作数应为存储器操作数
(14)有错。
对16位寻址时,存储器操作数应为SI、DI、BP、BX,不能为CX
3-8
(1)AX=3355HSP=1FFEH
(2)AX=3355HDX=4466HSP=1FFEH
3-9
PA=SS×16+BP+SI=2F000H+0200H+0046H=2F246H
执行XCHGBX,[BP+SI]后
BX=4154H[2F246H]=6F30H
3-12
(1)PA=DS×16+BX+SI+20H=09226H
∴CL=F6H
(2)PA=SS×16+BP+DI=1E4F6H
∴[1E4F6H]=5678H
(3)BX=BX+SI+20H=0056H
PA=DS×16+BX+2=09228H
∴AX=1E40H
(4)PA=DS×16+BX+DI=09226H
SI=00F6H
[SI]=0024H
(5)PA=DS×16+BX+32H=09226H
CX=00F6H[09226]=5678H(执行XCHGCX,32H[BX]后)
再执行XCHG20[BX][SI]AX后
PA=DS×16+BX+SI+20H=09226H
∴AX=5678H[09226H]=1234H
3-14
(2)MOVCL,4
ROLBL,CL
(4)ANDBX,0F7AFH
(6)TESTDX,0201H
3-16
(2)端口,(580H)=60H(581H)=80H
(4)寄存器,AL=4FHAH=(41H)
(5)端口,(45H)=60H
3-17参考程序如下:
(1)
MOVAX,NUM2
ADDNUM1,AX
(2)
MOVAL,NUM1
ADDAL,NUM1+1
ADDAL,NUM1+2
ADDAL,NUM1+3
MOVRES,AL
(3)
MOVAL,NUM1
MOVAH,0
MOVCX,7
LEADI,NUM1
MOVDX,0
NEXT:
INCDI
MOVDL,[DI]
ADDAX,DX
DECCX
JNZNEXT
MOVRES,AX
(4)
MOVAX,NUM1
ADDAX,NUM2
MOVNUM2,AX
MOVAX,NUM1+2
ADCAX,NUM2+2
MOVNUM2+2,AX
3-18参考程序如下:
(1)
MOVAL,NUM1
MOVAH,0
MOVCX,7
LEADI,NUM1
NEXT:
INCDI
MOVDL,[DI]
ADDAL,DL
DAA
MOVDH,AL;DAA只能对AL中数加以调整,DH为暂存用
MOVAL,AH
ADCAL,0
DAA;题目中只有8个数相加,所以这里也可以不作调整
MOVAH,AL
MOVAL,DH
DECCX
JNZNEXT
MOVRES,AX
3-21
(1)009AH
(2)0061H
(3)8071H
(4)10F7H
(5)FF1CH
3-22
(1)DX=0006HBX=0004H
(2)SP=1FFEH[SP]=FEH
(3)CX=0004HBX=0004H
(4)AX=8094HCF=0
(5)AL=87H
(6)AL=CCHCF=0AL=32H
(7)SI=0009H
(8)DI=0009H
(9)[DI]=94H
(10)AX=17C6HDX=8094H
(11)AH=84HBL=04H
(12)IP=17C6H
3-23
(1)将FIRST为首地址的内存单元中的10个字节传送到SECOND为首地址的内存单元。
(2)将0404H到0503H的内存单元清0。
3-25
OF
SF
ZF
PF
CF
(1)
0
0
0
0
1
(2)
0
0
0
0
无影响
(3)
0
0
0
0
1
(4)
0
1
0
0
1
(5)
0
0
0
0
1
(6)
1
不定
不定
不定
1
(7)
0
0
0
1
0
(8)
0
不定
不定
不定
0
(9)
0
1
0
1
0
(10)
0
0
0
1
0
(11)
0
0
1
1
0
(12)
0
1
0
1
1
(13)
1
0
0
0
1
3-27
(1)IP=1256H
(2)IP=3280H
(3)IP=2450H
3-28
IP=009AH,CS=2000H,SP=0F178H,[SP]=8FH,[SP+1]=3DH
[SP+2]=50H,[SP+3]=40H
3-29
CMPAL,01H
JZLAB1
CMPAL,02H
JZLAB2
CMPAL,04H
JZLAB3
TESTAL,07H
JNZLAB4
……
……
LAB1:
……
LAB2:
……
LAB3:
……
LAB4:
……
4-2
12
-12H
0
FFH
0
FFH
0
FFH
0
1
2
1
2
0
3
……
‘W’
‘E’
‘L’
‘C’
‘O’
‘M’
‘E’
‘‘
‘T’
‘O’
VAR3+6的
偏移地址
VAR3的偏移
地址
VAR3的段基
地址
VAR1
VAR2
重复大括号部分内容99次
VAR3
VAR4
4-3
(1)DATA1DB86H,27H,23H,00H,24H,1AH
(2)DATA2DW0B430H,1062H
或者
(1)DATA1LABELBYTE
ARRAYDW2786H,23H,1A24H
(2)DATA2LABELWORD
ARRAYDB30H,0B4H,62H,10H
4-5
(1)VAR1的偏移量是30H,VAR2的偏移量是3AH
(2)CNT=10H
(3)VAR2+2单元的内容为02H
4-6
AAAMACRO
PUSHDS
SUBAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
ENDM
4-7
TRANMACROX,Y,Z;X,Y,Z为源、目标数据块的首地址,Z为数据块的长度
MOVCX,Z
MOVSI,OFFSETX
MOVDI,OFFSETY
CLD
REPMOVSB
ENDM
4-8
(1)错源操作数和目标操作数长度不匹配
(2)对
(3)错两个存储器操作数之间不可直接传送
(4)错CS不可作为MOV指令的目标操作数
(5)对
(6)错没有[SI][DI]的寻址方式
(7)错[BX-SI]不是正确的寻址方式
(8)错操作数没指明类型
(9)错立即数不可作为MOV指令的目标操作数
(10)错[8-BX]不是正确的寻址方式
4-9
MOVBX,OFFSETARRAY;将ARRAY的偏移地址传给BX
MOVCX,LENGTHARRAY;将ARRAY用DUP重复定义的数据项总数传给CX
MOVSI,0;将0传给SI
……
ADDSI,TYPEARRAY;将SI的内容与ARRAY的类型值相加,返回给SI
指令执行后
BX:
数组ARRAY的首地址
CX=100
SI=2
4-10
MOVAX,WORDPTRX
ADDAX,WORDPTRY
MOVWORDPTRZ,AX
MOVAX,WORDPTRX+2
ADCAX,WORDPTRY+2
MOVWORDPTRZ+2,AX
4-12
(1)DATASEGMENTDATAENDSCODESEGMENT…MOVAH,01H;从键盘输入一个字符,其ASC码值在AL中INT21HCMPAL,41HJZP0CMPAL,42HJZP1…CMPAL,4AHJZP9JMPEXITP1:
…RETP2:
…RET……P9:
…RETEXIT:
MOVAH,4CHINT21H….
(2)DATASEGMENTBASEDWP0,P1,……,P9DATAENDSCODESEGMENT…MOVAH,01H;从键盘输入一个字符,其ASC码值在AL中INT21HCMPAL,'A';判别字符是否位于‘A’到‘J’之间JBEXITCMPAL,'J'JAEXITSUBAL,'A';在正确范围之内,根据表内地址分支MOVBL,ALMOVBH,0SHLBX,1JMPBASE[BX]P1:
…RETP2:
…RET……P9:
…RETEXIT:
MOVAH,4CHINT21H….
4-14
LEABX,x
LEASI,y
LEADI,sum
ADDBX,7
ADDSI,7
ADDDI,8;和可能要9个字节
MOVCX,8
LOP:
MOVAL,[BX]
ADCAL,[SI]
DAA
MOV[DI],AL
DECBX
DECSI
DECDI
DECCX
JNZLOP
MOVAL,0
ADCAL,0
MOV[DI],AL
4-15
MOVSI,OFFSETFIRST
MOVCX,0;CX中存放A的个数
LOOP:
MOVAL,[SI]
CMPAL,‘$’
JZNEXT
CMPAL,‘A’
JNELP
INCCX
LP:
INCSI
JMPLOOP
NEXT:
……
4-16
MOVBX,0
MOVCX,16
NEXT:
RCLAX,1
JCP1
INCBH
JMPOK
P1:
INCBL
OK:
LOOPNEXT
MOVCX,BX
4-17
DATASEGMENT
DATA_WDW…………;若干个数
COUTEQU($-DATA_W)/2
COUT1DB0
COUT2DB0
COUT3DB0
DATAENDS
STACKSEGMENTPARASTACK‘STACK’
DB100DUP(0)
STACKENDS
CODESEGMENT
ASSAUMCS:
CODE,DS:
DATA
STARTPROCFAR
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVDX,0;正数、负数、0暂时分别存在BL、BH、DL中
MOVBX,0
LEASI,DATA_W
MOVCX,COUT
NEXT:
MOVAX,[SI]
CMPAX,0
JGLP1
JLLP2
INCDL
JMPOK
LP1:
INCBL
JMPOK
LP2:
INCBH
OK:
ADDSI,2
LOOPNEXT
MOVCOUNT1,BL
MOVCOUNT2,BH
MOVCOUNT3,DL
RET
STARTENDP
CODEENDS
ENDSTART
4-18
DATASEGMENT
ARRAYDW…………;若干个数
COUTEQU$-ARRAY
MAXDB?
MINDB?
DATAENDS
STACKSEGMENTPARASTACK‘STACK’
DB100DUP(0)
STACKENDS
CODESEGMENT
ASSAUMCS:
CODE,DS:
DATA
STARTPROCFAR
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
LEABX,ARRAY
MOVCX,COUT
MOVAH,[BX]
MOVAL,[BX]
DECCX
INCBX
LOP:
CMPAH,[BX]
JANEXT1
MOVAH,[BX]
JMPNEXT2
NEXT1:
CMPAL,[BX]
JBNEXT2
MOVAL,[BX]
NEXT2:
INCBX
LOOPLOP
MOVMAXAH
MOVMINAL
RET
STARTENDP
CODEENDS
ENDSTART
4-22
LEABX,STRING
MOVCX,80
NEXT:
CMP[BX],20H
JZOK
INCBX
LOOPNEXT
MOVCL,-1
JMPFIN
OK:
NEGCX
ADDCX,80
FIN:
…………
4-24
(1)
LEASI,STRING1
LEADI,STRING2
MOVCX,20
CLD
REPMOVSB
(2)
LEASI,STRING1
LEADI,STRING2
ADDSI,19
ADDDI,19
MOVCX,20
STD
REPMOVSB
(3)
MOVAL,20H
LEADI,STRING1
MOVCX,20
CLD
REPNZSCASB
JZFOUND
MOVDL,0;未找到
FOUND:
DECDI
MOVBX,DI
MOVDL,01H;找到
(4)
LEASI,STRING1
LEADI,STRING2
MOVCX,20
CLD
REPCMPSB
JNZNEQ
MOVBL