微型计算机技术孙德文版课后习题答案全解.docx
- 文档编号:29215871
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:69
- 大小:213.51KB
微型计算机技术孙德文版课后习题答案全解.docx
《微型计算机技术孙德文版课后习题答案全解.docx》由会员分享,可在线阅读,更多相关《微型计算机技术孙德文版课后习题答案全解.docx(69页珍藏版)》请在冰豆网上搜索。
微型计算机技术孙德文版课后习题答案全解
第1章
(略)
第2章
(略)
第3章
3.1.已知DS=091DH,SS=1E4AH,AX=1234H,BX=0024H,CX=5678H,BP=0024H,SI=0012H,DI=0032H,(09226H)=00F6H,(09228H)=1E40H,(1E4F6H)=091DH。
在以上给出的环境下,试问下列指令或指令段执行后的结果如何?
(1)MOVCL,[BX+20H][SI];
(2)MOV[BP][DI],CX;
(3)LEABX,[BX+20H][SI]
MOVAX,[BX+2];
(4)LDSSI,[BX][DI]
MOV[SI],BX;
(5)XCHGCX,[BX+32H]
XCHG[BX+20H][SI],AX
解:
(1)CL=[09226H]=F6H
(2)[BP][DI]=[1E4F6H]=CX=5678H
(3)BX=0056H;AX=[09228H]=1E40H
(4)SI=[09226]=00F6H;[SI]=[1E4F6H]=BX=0024H
(5)AX=5678H;[BX+20H][SI]=1234H
3.2.设,DS=1000H:
SS=2000H,AX=1A2BH,BX=1200H,CX=339AH,BP=1200H,SP=1350H,SI=1354H,(1135OH)=OA5H,(11351H)=3CH,(11352H)=OFFH,(11353H)=26H,(11354H)=52H,(11355H)=0E7H,(126A4H)=9DH,(126A5H)=16H,(21350H)=88H,(21351H)=51H
下列各指令都在此环境下执行,在下列各小题的空格中填入相应各指令的执行结果。
(1)MOVAX,1352H
AX=
(2)MOVAX,[1352H]
AX=
(3)MOV0150H[BX],CH
(11350H)=,(11351H)=
(4)MOVAX,0150H[BP]
AX=
(5)POPAX
AX=,SP=
(6)ADD[SI],CX
(11354H)=,(11355H)=,SF=
ZF=,PF=,CF=,OF=
(7)SUBBH,0150H[BX][SI]
BH=,SF=,ZF=,
PF=,CF=,OF=
(8)INCBYTEPTR0152H[BX]
(11352H)=,(11353H)=______,CF=______
(9)INCWORDPTR0152H[BX]
(11352H)=,(11353H)=,CF=
(10)SARBYTEPTR0150H[BX],1
(11350H)=,CF=,OF=
(11)SALBYTEPTR0150H[BX],
(11350H)=,CF=,OF=
解:
(1)AX=1352H
(2)AX=26FFH
(3)[11350H]=33H;[11351H]=3CH
(4)AX=5188H
(5)AX=5188H;SP=1352H
(6)[11354H]=ECH;[11355H]=1AH;SF==ZF=PF=OF=0;CF=1
(7)BH=75H;SF==ZF=PF=OF=0;CF=1
(8)[11352H]=00H;[11353H]=26H;CF不变
(9)[11352H]=00H;[11353H]=27H;CF不变
(10)[11350H]=D2H;CF=1;OF=0
(11)[11350H]=4AH;CF=1;OF=1
3.3.设下列各转移指令的第一字节在内存中的地址为CS=2000H和IP=016EH,且环境均为;DS=6000H,BX=16C0H,(616COH)=46H,(616C1H)=01H,(616C2H)=00H,(616C3H)=30H,(61732H)=70H,(61733H)=17H。
写出下列各无条件转移指令执行后CS和IP值。
各指令左首的16进制编码是该指令的机器码。
指令中的目的地址用相应的标号表示。
(1)EBE7JMPSHORTAGAIN
(2)E90016JMPNEARPTROTHER
(3)E3JMPBX
(4)EA46010030JMPFARPROB
(5)FF67JMPWORDPTR0072H[BX]
(6)FFEBJMPDWORDPTR[BX]
解:
(1)CS=2000H;IP=0157H
(2)CS=2000H;IP=1771H
(3)CS=2000H;IP=16C0H
(4)CS=3000H;IP=0146H
(5)CS=2000H;IP=1770H
(6)CS=3000H;IP=0146H
3.4.阅读下列各小题的指令序列,在后面空格中填入该指令序列的执行结果。
(1)MOVBL,85H
MOVAL,17H
ADD,AL,BL
DAA
AL=,BL=,CF=
(2)MOVAX,BX
NOTAX
ADDAX,BX
INCAX
AX=,CF=
(3)MOVAX,OFF60H
STC
MOVDX,96
XORDH,OFFH
SBBAXDX
AX=,CF=
(4)MOVBX,OFFFEH
XOVCL,2
SARRX,CL
BX=,CF=
解:
(1)AL=02H;BL=85H;CF=1
(2)AX=0000H;CF=0
(3)AX=0000H;CF=0
(4)BX=0FFFFH;CF=1
3.5.阅读分析下列指令序列
ADDAX,BX
JNOL1
JNOL2
SUBAX,BX
JNCL3
JNOL4
JMPL5
若AX和BX的初始值分别如下列五种情况所示,则执行该指令序列后,程序将分别转向何处执行(注:
即写出转移去的目的地址L1~L5中的一个)。
(1)AX=14C6H,BX=80DCH
(2)AX=0B568H,BX=54B7H
(3)AX=42C8H,BX=608DH
(4)AX=0D023H,BX=9FD0H
(5)AX=9FD0H,BX=0D023H
解:
(1)转向L1
(2)转向L1
(3)转向L2
(4)转向L5
(5)转向L5
3.6.ANDAL,AL
JZBRCH1
RCRAL,1
JZBRCH2
RCLAL,1
INCAL
JZBRCH3
…
上述程序运行后,试回答:
(1)当(AL)=时,程序转向BRCH1
(2)当(AL)=时,程序转向BRCH2
(3)当(AL)=时,程序转向BRCH3
解:
(1)AL=00H
(2)AL=01H
(3)AL=0FFH
3.7.完成下列操作,选用什么指令:
(1)将AX的内容、减去0520H,和上次运算的借位;
(2)将变量名TABL的段地址送AX;
解:
(1)SBBAX,0520H
(2)MOVAX,SEGTABL
3.8.D1DB20HDUP(?
)
D2DWD1
请写出用一条指令实现取D1的偏移地址→SI中的三种方法。
解:
(1)MOVSI,OFFSETDI
(2)MOVSI,D2
(3)LEASI,DI
3.9.程序段1程序段2
MOVAX,147BHMOVAX,99D8H
MOVBX,80DCHMOVBX,9847H
ADDAX,BXSUBAX,BX
JNOL1JNCL3
JNCL2JNOL4
上述两个程序段执行后,分别转移到哪里?
解:
(1)转向L1
(2)转向L3
3.10.MOVBX,0FFH
ANDBX,0FFFH
ORBX,0F0FH
XOR BX,00FFH
上述程序段运行后,BX=,CF=
解:
BX=0F00H;CF=0
3.11.CMPAX,BX
JGENEXT
XCHGAX,BX
NEXT:
CMPAX,CX
JGEDONE
XCHGAX,CX
DONE:
…
试回答:
(1)上述程序段执行后,原有AX,BX,CX中最大数存放在哪个寄存器中?
(2)这三个数是带符号数还是无符号数?
解:
AX;带符号数
第4章
4.1画出下列语句中的数据在存储器中的存储情况。
ARRAYBDB63,63H,‘ABCD’,
3DUP(?
),2DUP(1,3)
ARRAYWDW1234H,5,‘AB’,‘CD’,?
,
2DUP(1,3)
解:
地址
数据
地址
数据
ARRAYB
3FH
42H
63H
41H
41H
44H
42H
43H
43H
?
44H
?
?
01H
?
00H
?
03H
01H
00H
03H
01H
01H
00H
03H
03H
34H
00H
12H
05H
00H
4.2.程序中数据定义如下:
DATA1DW?
DATA2DB32DUP(?
)
DATA3DD?
DLENGTHEQU$-DATA1
此时DLENGTH的值是多少?
解:
DLENGTH=38=26H
4.3.程序中数据定义如下:
ARRAYDB‘ABCDEF’
RESULTDB?
TABLEDW20DUP(?
)
则执行指令MOVAX,TYPERESULT后,AX=?
MOVBX,TYPETABLE后,BX=?
MOVCX,LENGTHTABLE后,CX=?
MOVDX,LENGTHARRAY后,DX=?
MOVSI,SIZETABLE后,SI=?
MOVDI,SIZEARRAY后,DI=?
解:
AX=1;BX=2;CX=20;DX=1;
SI=40;DI=1
4.4.指令ANDAX,7315HAND0FFH中,两个AND有什么差别?
这两个AND操作分别在什么时候执行?
解:
左为助记符,由CPU执行指令时运算;
右为运算符,由汇编程序在汇编时运算。
4.5.设BX=1034H,则执行下列指令
MOV AX,BX AND 0FFH
MOV CX,BX EQ 1234H
后,AX和CX各为多少?
若BX=1234H,则结果如何?
解:
AX=0034H;CX=0000H;
AX=0034H;CX=FFFFH
4.6.设已知语句为:
ORG0024H
DATA1DW4,12H,$+4
则执行指令MOV AX,DATA1+4后AX的值是多少?
解:
AX=002CH
4.7.已知数据定义语句为:
BUFFERDB16DUP(O,2DUP
(1))
则其中字数据单元内容为0100H的单元数是多少?
解:
16个
4.8.要在以DA1为首址的数据区中依次存放下列数据;
‘A’,‘B’,O,0,‘C’,‘D’,0,0
请分别用DB、DW和DD语句实现。
解:
DATDB‘A’,‘B’,0,0,’C’,’D’,0,0
DATDW‘BA’,0,’DC’,0
DATDB‘BA’,’DC’
4.9.试按下列要求在数据段中依次书写各数据定义语句:
(1)以DA1为首字节的连接存储单元中存放20H个重复的数据序列:
2,3,10个4,一个7。
(2)DA2为字符串变量,用字变量(DW)设置一字符串;‘STUDENTS’(按此顺序存放在各单元中)
(3)用等值语句给符号COUNT赋值以DA1为首址的数据区共占有的字节数,此等值语句必须放在最后一语句。
解:
(1)DAT1DB20HDUP(2,3,10DUP(4),7)
(2)DAT2DW‘TS’,‘DU’,’NE’,’ST’
(3)COUNTEQUDATA2-DATA1
4.10.下面程序段是实现从键盘输入十个一位10进数后累加。
最后累加和以非压缩BCD码形式存放在AH(高位)和AL(低位)中。
试把程序段中所空缺的指令填上。
XORBX,BX
LOP:
MOVAH,01H;键盘字符输入
INT21H
MOVAH,BH
ADDAL,BL
MOVBX,AX
解:
MOVCX,10
AAA
4.11.下面程序段的功能是把DA1数据区的数0~9转换为对应的ASCII码。
试完善本程序段。
DA1DBOOH,O1H,02H,03H,04H,05H,06H,07H,08H,09H
ASCIDB10DUP(?
)
CUNT=ASCI-DA1
LEASI,DA1
LEADI,ADCI
LOP1:
MOYAL,[SI]
MOV[DI],AL
INCSI
INCDI
LOOPLOP1
解:
MOVCX,COUT
ADDAL,30H
4.12.BUFF‘ABD$QC%$A…XYZ’
CONTEQU$-BUFF
…
CLD
LEADI,BUFF
MOVCX,CONT
MOVAL,‘$’
XORDX,DX
NEXT:
REPNZSCA,SB
CMPCX,0
JZK1
INCDX
JMPNEXT
K1:
…
上述程序段运行后,DX中的值表示的意义是什么?
解:
DX中为$个数
4.13.设A,B是长度为10的字节数组,用串操作指令编写程序实现AB两数组内容的相互交换,试完善本程序。
DATASEGMENT
ADB1,2,3,4,5,6,7,8,9,0AH
DRGOO10H
BDB0AH,9,8,7,6,5,4,3,2,1
DATAENDS
…
LEASI,A
LEADO,B
MOVCX,10
LOP:
LODSB
XCHGAL,[DI]
DECDI
STOSB
INCDI
LOOPLOP
解:
XCHGSI,DI
XCHGSI,DI
4.14.现有一子程序:
SUB1PROC
TESTAL,80H
JEPLUS
TESTBL,80H
JNEEXITO
JMPXCHANGE
PLUS:
TESTBL,80H
JEEITO
XCHANGE:
XCHGAL,BL
EWITO:
RET
SUB1ENDP
试回答:
(1)子程序的功能是什么?
(2)如调用子程序前AL=9AH,BL=77H,那么返回主程序时,AL=?
BL=?
解:
(1)测试AL,BL两数的符号,如为同号直接返回,如为异号,则AL与BL交换
(2)AL=77H,BL=9AH
4.15.编写一程序段,将AL中的第7和0位,第6和1位,第5和2位,第4和3位互换。
解:
MOVCX,8
MOVAH,0
K1:
SHRAL,1
RCLAH,1
DECCX
JNZK1
MOVAL,AH
4.16.试编写一程序段,在CHAR为首址的26个字节单元中依次存放字母‘A’~‘Z’
解:
MOVAL,‘A’
MOVDI,OFFSETCHAR
MOVCX,26
LOP:
MOV[DI],AL
INCAL
INCDI
LOOPLOP
4.17.设在数据段中有X,Y两变量(字节单元),试编写程序段计算(只写有关程序功能的指令):
X当X≥0时
Y=
|X|当X<0时
解:
MOVAL,X
CMPAL,0
JGEBIGR
NEGAL
BIGR:
MOVY,AL
4.18.编程序段计算SUM==al+a2+…+a20,已知a1~a20依次存放在以BUF为首址的数据区,每个数据占两个字节,和数SUM也为两个字节。
(要求用循环结构编写,循环控制采用计数控制)。
此题考生勿需书写源程序格式,只需把试题要求的有关指令序列书写出来。
)
解:
MOVAX,0
MOVBX,OFFSETBUF
MOVCX,20
LOP:
ADDAX,[BX]
INCBX
INCBX
LOOPLOP
MOVSUM,AX
4.19.编写一个完整的源程序,将BUF字节单元存放的两位BCD码,转换成2个字节的ASCII码,并分别存放在ASC和ASC+1字节单元中。
例如:
(BUF字节单元)=58H,那么(ASC字节单元)=35H,(ASC+1字节单元)=38H。
解:
DATASEGMENT
BUFDB58H
ASCDB2DUP(?
)
DATAENDS
STACK1SEGMENTPARASTACK
DW20HDUP(0)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAL,BUF
ANDAL,0F0H
MOVCL,4
SHRAL,CL
ORAL,30H
MOVASC,AL
MOVAL,BUF
ANDAL,0FH
ORAL,30H
MOVASC+1,AL
MOVAL,4CH
INT21H
CODEENDS
ENDSTART
4.20.在A1单元开始定义了一长度为N的字符串,找出其中所有的小写字母并存放到以A2开始的存储区中。
统计出小写字母的个数,存放到SL单元中。
请编一完整的源程序。
数据段如下:
DATASEGMENT
A1DB‘…’
NEQU$-A1
A2DBNDUP(?
)
SLDB?
DATAENDS
解:
DATASEGMENT
A1DB‘……’
NEQU$-A1
A2DBNDUP(?
)
SLDB?
DATAENDS
STACKSEGMENTPARASTACK
DW10HDUP(0)
STARTENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
LEASI,A1
LEADI,A2
MOVCX,N
XORBL,BL
AGAIN:
MOVAL,[SI]
CMPAL,‘a’
JBEXIT
CMPAL,‘z’
JAEXIT
MOV[DI],AL
INCBL
INCDI
EXIT:
INCSI
LOOPAGAIN
MOVSL,BL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
4.21.设在DAT单元存放一个-9~+9的字节数据,在SQRTAB数据区中存放0~9的平方值,请用直接查表法编写一个子程序,在SQRTAB中查找出DAT单元中数据对应的平方值送SQR单元。
并写出主程序的调用方式。
数据段如下:
DATASEGMENT
DATDBXXH
SQRTABDB0,1,4,9,…7781
SQRDB?
DATAENDS
解:
DATASEGMENT
DATDBXXH
SQRTABDB0,1,4,9,……,81
SQRDB?
DATAENDS
STACK1SEGMENTPARASTACK
DB20HDUP(0)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK1
START:
MOVAX,DATA
MOVDS,AX
…………
CALLSUBROT
……
MOVAH,4CH
INT21H
SUBROTPROC
PUSHAX
PUSHBX
LEABX,SQRTAB
MOVAL,DAT
TESTAL,80H
JNSNEXT
NEGAL
NEXT:
XLATSQRTAB
MOVSQR,AL
POPBX
POPAX
RET
SUBROTENDS
CODEENDS
ENDSTART
4.22.编写能完成下列要求的程序:
测试字节数据STATUS,若其中位1、3、5有一位是“1”,程序就转至ROUT1;若有二位是“1”,就转向ROUT2;若三位都是“1”,就转向ROUT3;若这三位没有一位是“1”,就转向ROUT4。
解:
MOVAL,STATUS
ANDAL,00101010B
JZROUT4
CMPAL,00101010B
JZROUT3
TESTAL,00001010B
JZROUT1
TESTAL,00101000B
JZROUT1
TESTAL,00100010B
JZROUT1
JMPROUT2
HLT
4.23.STRING字符串的最大长度为80个字符,字符串的结束用字符$表示。
编写程序在该字符串中查找是否有空格符(ASCII码为20H),若有就将第一个空格在字符串中的位置(00~4FH)存入POST单元;若无空格则将-1存入POST。
解:
DATASEGMENT
STRINGDB‘……$
LENT’EQU$-STRING
POSTDB?
SEARCH:
MOVBX,OFFSETSTRING
MOVDL,20H
MOVPOST,0FFH
LOP:
MOVAL,[BX]
INCBX
CMPAL,‘$’
JZSTP
CMPAL,DL
JNZLOP
DECBX
MOVPOST,BX
STP:
MOVAH,4CH
INT21H
第5章
5.1.用下列芯片构成存储系统,各需要多少个RAM芯片?
需要多少位地址作为片外地址译码?
设系统为20位地址线,采用全译码方式。
(1)512×4位RAM构成16KB的存储系统;
(2)1024×1位RAM构成128KB的存储系统;
(3)2K×4位RAM构成64KB的存储系统;
(4)64K×1位RAM构成256KB的存储系统;
解:
1)需要16KB/512×4=64片
片外地址译码需11位地址线。
2)需要128KB/1K×1=1024片
片外地址译码需10位地址线。
3)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微型计算机 技术 德文 课后 习题 答案