微计算机原理第2版第三章课后习题答案潘名莲马争丁庆生编著备课讲稿Word文件下载.docx

上传人:b****6 文档编号:18114088 上传时间:2022-12-13 格式:DOCX 页数:25 大小:26.40KB
下载 相关 举报
微计算机原理第2版第三章课后习题答案潘名莲马争丁庆生编著备课讲稿Word文件下载.docx_第1页
第1页 / 共25页
微计算机原理第2版第三章课后习题答案潘名莲马争丁庆生编著备课讲稿Word文件下载.docx_第2页
第2页 / 共25页
微计算机原理第2版第三章课后习题答案潘名莲马争丁庆生编著备课讲稿Word文件下载.docx_第3页
第3页 / 共25页
微计算机原理第2版第三章课后习题答案潘名莲马争丁庆生编著备课讲稿Word文件下载.docx_第4页
第4页 / 共25页
微计算机原理第2版第三章课后习题答案潘名莲马争丁庆生编著备课讲稿Word文件下载.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

微计算机原理第2版第三章课后习题答案潘名莲马争丁庆生编著备课讲稿Word文件下载.docx

《微计算机原理第2版第三章课后习题答案潘名莲马争丁庆生编著备课讲稿Word文件下载.docx》由会员分享,可在线阅读,更多相关《微计算机原理第2版第三章课后习题答案潘名莲马争丁庆生编著备课讲稿Word文件下载.docx(25页珍藏版)》请在冰豆网上搜索。

微计算机原理第2版第三章课后习题答案潘名莲马争丁庆生编著备课讲稿Word文件下载.docx

(7)MOVAX,1100H[BX+SI](8)MOVLEAAX,[SI]

(1)(AX)=2010H

(2)(AX)=0100H(3)(AX)=4C2AH(4)(AX)=3412H

(5)(AX)=4C2AH(6)(AX)=7856H(7)(AX)=65B7H(8)(AX)=0002H

M

30100H

12H

30101H

34H

30102H

56H

30103H

78H

……

31200H

2AH

31201H

4CH

31202H

B7H

31203H

65H

CPU

BX

0100H

SI

0002H

DS

3000H

图3-1

3-4已知(AX)=2040H,(DX)=380H,端口(PORT)=(80H)=1FH,(PORT+1)=45H,执行下列指令后,指出结果等于多少?

(1)OUTDX,AL(0380H)=40H

(2)OUTDX,AX(380H)=40H(381h)=20H

(3)INAL,PORT(AL)=1FH

(4)INAX,80H(AX)=451FH

(5)OUTPORT1,AL(PORT1)=40H

(6)OUTPORT1,AX(PORT1)=2040H

3-5已知:

(SS)=0A2F0H,(SP)=00C0H,(AX)=8B31H,(CX)=0F213,试画出下列指令执行到位置1和位置2时堆栈区和SP指针内容的变化示意图。

图中应标出存储单元的实际地址PA。

PUSHAX

PUSHCX;

位置1

POPF;

位置2

已知(SS)=0A2F0H,指令顺序依次编号为①、②、,示意图如图所示:

(SS)=0A2F0H

0A2FBCH

13H

←②(SP)-4=00BCH(位置1)

F2H

0A2FBEH

31H

←①(SP)-2=00BEH③(SP)+2=00BCH+0002H=00BEH(位置2)

8BH

0A2FC0H

(SP)=00C0H

3-6识别下列指令的正确性,对错误的指令,说明出错的原因。

(1)MOVDS,100

(2)MOV[1000H],23H

(3)MOV[1000H],[2000H]

(4)MOVDATA,1133H

(5)MOV1020H,DX

(6)MOVAX,[0100H+BX+BP]

(7)MOVCS,AX

(8)PUSHAL

(9)PUSHWORDPTR[SI]

(10)INAL,[80H]

(11)OUTCX,AL

(12)INAX,380H

(13)MOVCL,3300H

(14)MOVAX,2100H[BP]

(15)MOVDS,ES

(16)MOVIP,2000H

(17)PUSHCS

(18)POPCS

(19)LDSCS,[BX]

(20)MOVGAMMA,CS√

(1)×

,不能对段寄存器送立即数

(2)×

,存储单元类型不正确

(3)×

,MOV不能实现两个存储单元间

直接传送

(4)×

,段名不能作目的操作数

(5)×

,立即数不能作目的操作数

(6)×

,基址寄存器BX和BP只能使用其

中一个

(7)×

,CS不能用作目的操作数

(8)×

,堆栈操作作为字操作AL应改为

AX

(9)√

(10)×

,80H为输入端口号不加方括号

(11)×

,应输出到端口而不是通用寄存器

(12)×

,用DX做间址寄存器380H应存

DX

(13)×

,类型不匹配

(14)√

(15)×

,两个段寄存器间不能直接传送

(16)×

,IP不能直接用作目的操作数

(17)√

(18)×

,CS不能做目的操作数

(19)×

,目的操作数应是通用寄存器而不

能是段寄存器CS

(20)×

,符号名不能作为目的操作数

3-7已知存储器数据段中的数据如图3-3所示。

阅读下列的两个程序段后,回答:

1.每个程序段的运行结果是什么?

2.两个程序段各占多少字节的内容,执行时间是多少?

(1)LESSI,NUM1

MOVAX,[SI]

ADDAX,4[SI]

MOV8[SI],AX

ADDSI,2

ADCAX,4[SI]

(2)

MOVAX,NUM1

ADDAX,NUM2

MOVSUM,AX

MOVAX,NUM1+2

ADCAX,NUM2+2

MOVSUM+2,AX

1、运行结果如下:

(1)0AC6863A0H

(2)0AC6863A0

2、时钟周期字节数

(1)LESSI,NUM12+EA2~4

MOVAX,[SI]103

ADDAX,4[SI]9+EA2~4

NUM1

48H

41H

16H

28H

NUM2

58H

22H

52H

84H

SUM

MOV8[SI],AX103

ADDSI,243~4

MOVAX,[SI]103

ADCAX,4[SI]9+EA2~4

MOV8[SI],AX102~4

(2)MOVAX,NUM1103

ADDAX,NUM29+EA2~4

MOVSUM,AX9+EA2~4

MOVAX,NUM1+29+EA2~4

ADCAX,NUM2+29+EA2~4

MOVSUM+2,AX9+EA2~4

图3-3

3-8已知数据如图3-3所示,数据的低位在前,按下列要求编写程序段:

1.完成NUM1和单元NUM2两个字数据相加,和存放在NUM1中。

2.完成NUM1单元开始的连续4个字节数据相加,和不超过一字节,存放SUM单元。

3.完成NUM1单元开始的连续8个字节数据相加,和16位数,放在SUM和SUM+1两个单元(用循环)。

4.完成NUM1和NUM2的双倍精度字数据相加,和放在NUM2开始的字单元中。

1、CLC

LEASI,NUM1

MOVAX,WORDPTR[SI]

ADDAX,WORDPTRNUM2

MOVWORDPTR[SI],AX

MOVAX,WORDPTR[SI+2]

ADCAX,WORDPTRNUM2+2

MOVWORDPTR[SI+2],AX

HLT

2、LEASI,NUM1

MOVAL,[SI]

ADDAL,1[SI]

ADDAL,2[SI]

ADDAL,3[SI]

MOVSUM,AL

3、CLC

CLD

MOVAH,0

MOVCX,7

XORBH,BH

AGA:

MOVBL,1[SI]

ADCAX,BX

INCSI

DECCX

JNZAGA

4、LEASI,NUM1

LEADI,NUM2

ADDAX,[DI]

MOV[DI],AX

MOVAX,2[SI]

ADCAX,2[DI]

MOV2[DI],AX

3-9已知的BCD数如图3-3所示,低位在前,按下列要求编写计算BCD数据(为组合型BCD)的程序段。

1.完成从NUM1单元开始的连续8个组合型BCD数相加,和(超过一字节)放在SUM和SUM+1两个单元中。

2.完成NUM1单元和NUM2单元的两个BCD数相减,其差存入SUM单元,差=?

(CF)=?

1、CLC

AGA:

ADCAL,[SI]

DAA

LOOPAGA

MOVSUM+1,AH

2、CLC

MOVAH,0

MOVAL,NUM1

SUBAL,NUM2

DAS

MOVSUM,AL

差=0F0H=-10H,CF=1

3-10写出下列程序段完成的数学计算公式,并画出数据存放的示意图。

X

X+2

Y

Y+2

Z

Z+2

W

W+2

MOVAX,X

MOVDX,X+2

ADDAX,Y

ADCDX,Y+2

SUBAX,Z

SBBDX,Z+2

MOVW,AX

MOVW+2,DX

W=X+Y-Z,数据存放如图所示:

3-11已知数据如图3-3所示,低位在前,按下列要求编写程序段

1.NUM1和NUM2两个数据相乘(均为无符号数),乘积放在SUM开始的单元。

2.NUM1和NUM2两个字数据相乘(均为无符号数),乘积放在SUM开始的单元。

3.NUM1单元的字节数据除以13(均为无符号数),商和余数依次放入SUM开始的两个字节单元。

4.NUM1单元的字节数据除以NUM2字单元的字,商和余数依次放入SUM开始的两个字节单元。

1.为32位×

32位,极为64位

2.MOVAX,NUM1

IMULNUM2;

积在(DX)(AX)中

MOVSUM+2,DX

3.MOVAL,NUM1

CBW

MOVCL,0DH

DIVCL

4.MOVAX,NUM1

CWD

IDIVNUM2

3-12(L略)

3-13已知(AL)=0C4H,DATA单元中的内容为5AH,写出下列每条指令单独执行后的结果。

1.ANDAL,DATA

2.ORAL,DATA

3.XORAL,DATA

4.NOTDATA

5.ANDAL,0FH

6.ORAL,01H

7.XORAL,0FFH

8.TESTAL,80H

解;

1.(AL)=01000000B=40H

2.(AL)=0DEH

3.(AL)=10011110B=9EH

4.(DATA)=0A5H

5.(AL)=04H

6.(AL)=0C5H

7.(AL)=3BH

8.(AL)=0C4H,OF=0,CF=0

3-14用移位循环指令,编写完成以下功能的程序段(结果放回原处)

1.将无符号数83D分别乘2和处2.

2.将带符号数-47D分别乘2和除2.

3.将图3-3中NUM1双字乘2和除2.

4.将图3-3中从NUM1开始的4个字乘2.

1.MOVAL,53H

SHLAL,1

MOVAL,53H

SHRAL,1

2.MOVAL,0D1H

SALAL,1

MOVAL,0D1H

SARAL,1

3.MOVAX,NUM1

MOVDX,NUM1+2

SHLAX,1

RCLDX,1

MOVDX,NUM1+2

SARDX,1

RCRAX,1

4.SALNUM1,1

RCLNUM1+2,1

RCLNUM1+4,1

RCLNUM1+6,1

3-15编写完成以下功能的程序段,并指出运行后,其标志CF、ZF、SF和OF的状态是什么?

1.BCD数58—32

2.无符号数3AH—3AH

3.带符号数79—(—57)

4.带符号数—32+(42)

1.MOVAL,58H

SUBAL,32H

CF=0,ZF=0,SF=0,OF=0

2.MOVAL,3AH

SUBAL,3AH

CF=0,ZF=1,SF=0,OF=0

3.已知X=79D,Y=57D则【X】补=01001111,【Y】补=11000111

所以[X]补—[Y]补=[X]补+[-Y]补=10001000

MOVAL,79

MOVBL,-57

SUBAL,BL

CF=0,ZF=0,SF=1,OF=1

4.MOVAL,0F3H

MOVBL,2AH

ADDAL,BL

或者

MOVAL,0F3H

ADDAL,2AH

3-16用循环移位指令实现下列功能,设(AX)=0C3H

1.设(CL)=8,移位前、后AX内容不变

2.设(CL)=9,移位前、后AX内容不变

3.将AX中高4位和低4位交换位置

4.将AX中高4位放到低4位上,而高4位置0

1.MOVCL,8

ROLAL,CL(或者RORAL,CL)

2.MOVCL,9

RCLAL,CL(或者RCRAL,CL)

3.MOVBX,AX

ANDAX,0FF0H

XCHGBH,BL

MOVCL,4

ROLBH,CL

ROLBL,CL

ANDBH,0F0H

ANDBL,0FH

ORAX,BX

4.本小题可以多种解法:

解1:

5.MOVBX,AX

ANDBH,0

解2:

MOVBX,AX

XCHGAH,AL

MOVCL,4

RORAX,CL

SHRAH,CL

ANDAL,0FH

ANDBL,0FOH

ORAL,BL

3-17写出下列程序段执行后的结果:

(AL)=?

(DL)=?

完成的是什么功能?

MOVCL,4

MOVAL,87

MOVDL,AL

MOVAL,0FH

ORAL,30H

SHRDL,CL

ORDL,30H

完成与、或、移位等逻辑运算,运算结果:

(AL)=37H;

(DL)=35H

3-18用乘法指令和用传送、移位、相加指令分别实现Y=10X的运算,设X=12H,分别编写这两个程序段。

(1)MOVAL,X

MOVCL,10

NULCL

(2)MOVAL,X

SALAL,1;

(AL)=2*X

MOVBL,AL;

(BL)=X*2

SALAL,1;

(AL)=4*X

(AL)=8*X

ADDAL,BL;

(AL)=8*X+2*X=10*X

3-19写出下面指令序列完成的数学计算是什么?

MOVCL,3

SHLAX,CL

SHLBL,CL

SHLCX,CL

SHLDH,CL

将一多精度数(6字节)乘以8

3-20写出下列能代替重复串操作指令完成同样功能的指令序列。

(1)REPMOVSW

(2)REPCMPSB

(3)REPSCASB

(4)REPLODSW

(5)REPSTOSB

(1)LEASI,AREA1

LEADI,AREA2

MOVCX,N

MOVAX,DS:

[SI]

MOVES:

[DI],AX

INCDI

DECCX

JNZAGA

RET

(2)LEASI,VAR1

LEADI,VAR2

NEXT:

CMPSB

JNZFIN

LOOPNEXT

RET

(3)MOVDI,OFFSETCOMMAND

MOVAL,‘’

SCASB

JZFOUND

(4)MOVSI,OFFSETBUF

LODSW

MOVRES,AX

(5)MOVDI,OFFSETBUF

STOSB

JNZNEXT

RET

3-21欲将数据段中自AREA1中的100个字数据搬到附加段中以AREA2开始的区中,用下面的3种传送指令编写程序段:

1.用MOV指令;

2.用基本串传送指令;

3.用重复串传送指令

1.LEASI,AREA1

MOVCX,100

AGAIN:

INCDI

JNZAGAIN

2.MOVSI,OFFSETAREA1

MOVDI,OFFSETAREA2

MOVSAREA2,AREA1

3.MOVSI,OFFSETAREA1

MOVDI,OFFSETAREAA2

REPMOVSB

3-22假定在数据段中已知字符串和未知字符串的定义如下:

STRING1DB‘MESSAGEANDPROCCESS’

STRING2DB20DUP(?

用串操作指令编写完成下列功能的程序段(设DS和ES重叠);

1.从左到右把STRING1中的字符串搬到STRING2中;

2.从右到左把STRING1中的字符串搬到STRING2中;

3.搜索STRING1字符串中是否有空格。

如有,记下第一个空格的地址,并放入BX中;

4.比较STRING1和STRING2字符串是否相同。

1.MOVSI,OFFSETSTRING1

MOVDI,OFFSETSTRING2

MOVCX,20;

共20个字符

CLD;

从左到右就是增址方向,设置DF←0

REPMOVSSTRING2,STRING1

2.MOVSI,OFFSETSTRING1+13H

MOVDI,OFFSETSTRING2+13H

MOVCX,20

STD;

从右到左为减址方向,设置DF←0

REPMOVSSTRING2+13H,STRING1+13H

3.MOVDI,OFFSETSTRING1

MOVAL,20H;

空格字符的ASCII码

REPNZSCASB

MOVDI,0

JMPDONE

FOUND;

DECDI;

因SCASB的功能是:

(1)(AL)——[DI]

(2)DI←[DI]+1

MOVBX,DI

DENE:

HLT

4.MOVSI,OFFSETSTRING1

REPZCMPSB

JNZUMMAT

MOVAL,0

JMPOUTPUT

UMMAT:

MOVAL,0FFH

OUTPUT:

MOVRESULT,AL

3-23下面两条短转移指令的转移地址ADDR1和ADDR2分别是多少(用十六进制表示)?

1.0220EB0AJMPADDR1

2.0230EBF7JMPADD

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

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1