微机原理第三章课后习题解答.docx

上传人:b****2 文档编号:1869379 上传时间:2023-05-02 格式:DOCX 页数:16 大小:23.14KB
下载 相关 举报
微机原理第三章课后习题解答.docx_第1页
第1页 / 共16页
微机原理第三章课后习题解答.docx_第2页
第2页 / 共16页
微机原理第三章课后习题解答.docx_第3页
第3页 / 共16页
微机原理第三章课后习题解答.docx_第4页
第4页 / 共16页
微机原理第三章课后习题解答.docx_第5页
第5页 / 共16页
微机原理第三章课后习题解答.docx_第6页
第6页 / 共16页
微机原理第三章课后习题解答.docx_第7页
第7页 / 共16页
微机原理第三章课后习题解答.docx_第8页
第8页 / 共16页
微机原理第三章课后习题解答.docx_第9页
第9页 / 共16页
微机原理第三章课后习题解答.docx_第10页
第10页 / 共16页
微机原理第三章课后习题解答.docx_第11页
第11页 / 共16页
微机原理第三章课后习题解答.docx_第12页
第12页 / 共16页
微机原理第三章课后习题解答.docx_第13页
第13页 / 共16页
微机原理第三章课后习题解答.docx_第14页
第14页 / 共16页
微机原理第三章课后习题解答.docx_第15页
第15页 / 共16页
微机原理第三章课后习题解答.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

微机原理第三章课后习题解答.docx

《微机原理第三章课后习题解答.docx》由会员分享,可在线阅读,更多相关《微机原理第三章课后习题解答.docx(16页珍藏版)》请在冰点文库上搜索。

微机原理第三章课后习题解答.docx

微机原理第三章课后习题解答

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];

物理地址=DS*10H+BX+SI+20H

=091D0H+0024H+0012H+0020H=09226H

(09226H)=00F6H,(09226H)=F6H,(09227H)=00H

执行后:

CL=F6H

(2)MOV[BP][DI],CX

物理地址=SS*10H+BP+DI=1E4A0H+0024H+0032H=1E4F6H

CX=5678H执行后:

(1E4F6H)=5678H

(3)LEABX,[BX+20H][SI];BX=BX+20H+SI=0056H

MOVAX,[BX+2];

物理地址=DS*10H+BX+2=091D0H+0058H=09228H

(09228H)=1E40H执行后:

AX=1E40H

(4)LDSSI,[BX][DI];

物理地址=DS*10H+BX+DI=091D0H+0056H=09226H

(09226H)=00F6H(09228H)=1E40H

执行后:

BX=(09226H)=00F6H

DS=(09228H)=1E40H

MOV[SI],BX

物理地址=DS*10H+SI=1E400H+0012H=1E412H

BX=0024H,执行后:

(1E412H)=0024H

(5)XCHGCX,[BX+32H]

物理地址=DS*10H+BX+32H=091D0H+0056H=09226H

(09226H)=00F6H,CX=5678H

执行后:

(09226H)=5678H,CX=00F6H

XCHG[BX+20H][SI],AX

物理地址=DS*10H+BX+20H+SI=091D0H+0056H=09226H

(09226H)=5678H,AX=1234H

执行后:

(09226H)=1234H,CX=5678H

3.2设DS=1000H,SS=2000H,AX=1A2BH,BX=1200H,

CX=339AH,BP=1200H,SP=1350H,SI=1354H,(11350H)=0A5H,(11351H)=3CH,(11352H)=0FFH,(11353H)=26H,(11354H)=52H,(11355H)=0E7H,(126A4H)=9DH,(126A5H)=16H,(21350H)=88H,(21351H)=51H。

下列各指令都在此环境下执行,在下列各小题的空格中填入相应个指令的执行结果。

(1)MOVAX,1352H;AX=1352H

(2)MOVAX,[1352H];AX=(DS*10H+1352H)=(11352H)

;AX=26FFH

(3)MOV0150H[BX],CH;物理地址=DS*10H+0150H+BX=11350H

(11350H)=9AH,(11351H)=3CH(不变)

(4)MOVAX,0150H[BP];物理地址=SS*10H+0150H+BP=21350H

AX=5188H

(5)POPAX;物理地址=SS*10H+SP=21350H

AX=5188H_,SP=1352H_____

(6)ADD[SI],CX;物理地址=DS*10H+SI=11354H,

(11354H)=_EC___,(11355H)=__1A__,

SF=__0__,ZF=__0__,PF=__1__,CF=__1__

OF=__0___

(7)SUBBH,0150H[BX][SI];

物理地址=DS*10H+0150H+BX+SI=126A4H,(126A4H)=9DH

BH=BH-9DH=BH+63H

BH=75H,SF=__0__,ZF=__0__,PF=_0___,CF=_0___,OF=_0___

(8)INCBYTEPTR0152H[BX];

物理地址=DS*10H+0152H+BX=11352H,(11352H)=FFH

(11352H)=__00H___,(11353H)=__26H___,CF=__不变___

(9)INCWORDPTR0150H[BX]

物理地址=DS*10H+0152H+BX=11352H,(11352H)=FFH

(11353H)=26H

(11352H)=__00H___,(11353H)=__27H___,CF=_不变___

(10)SARBYTEPTR0150H[BX],1

物理地址=DS*10H+0150H+BX=11350H,(11350H)=A5H

(11350H)=_D2H____,CF=_1_,OF=__1___

(12)SALBYTEPTR0150H[BX],1

物理地址=DS*10H+0150H+BX=11350H,(11350H)=A5H

(11350H)=__4AH___,CF=_1__,OF=__0__

3.3设下列各转移指令的第一字节在内存中的地址为CS=2000H和IP=016EH,且环境均为;DS=6000H,BX=16C0H,(616C0H)=46H,

(616C1H)=01H,(616C2H)=00H,(616C3H)=30H,(61732H)=70H,(61733H)=17H。

写出下列各无条件转移指令执行后CS和IP值。

各指令左手的16进制编码是该指令的机器码。

指令中的目的地址用相应的编号表示。

(1)EBE7JMPSHORTAGAIN

SHORT----段内短转,IP=IP+E7=016EH+FFE7H=0155H

(2)E90016JMPNEARPTROTHER

NEAR----段内近转,IP=IP+1600H=016EH+1600H=176EH

(3)E3JMPBX

寄存器间接转(段内)----IP=BX=16C0H

(4)EA46010030JMPFARPROB

段间直接转移--IP=0146H,CS=3000H

(5)FF67JMPWORDPTR0072H[BX]

段内存储器间接转移:

物理地址=DS*10H+0072H+BX=60000H+0072H+16C0H=61732H

(61732H)=70H,(61733H)=17H

IP=(61732H)=1770H

(6)FFEBJMPDWORDPTR[BX]

物理地址=DS*10H+0072H+BX=60000H+16C0H=616C0H

(616C0H)=46H,,(616C1H)=01H,(616C2H)=00H,(616C3H)=30H

IP=(616C0H)=0146H,CS=3000H

3.4阅读下列各小题的指令序列,在后面空格中填入该指令序列的执行结果。

(1)MOVBL,85H;BL=85H

MOVAL,17H;AL=17H

ADDAL,BL;AL=9CH

DAA;AL=02H

AL=__02H__,BL=_85H___,CF=__1___

(2)MOVAX,BX;AX=BX

NOTAX;AX=BX

ADDAX,BX;AX=BX+BX=FFFFH

INCAX;AX=0

AX=0,CF=0

(3)MOVAX,0FF60H;AX=FF60H

STC;CF=1

MOVDX,96;DX=0060H

XORDH,0FFH;DH=FFH,DX=FF60H

SBBAX,DX;AX=FFFFH(-1),CF=1

AX=FFFFH,CF=1

(4)MOVBX,0FFFEH;BX=FFFEH

MOVCL,2;CL=2

SARBX,CL;BX=FFFFH

BX=FFFFH,CF=1

3.5阅读分析下列指令序列

ADDAX,BX

JNOL1

JONL2

SUBAX,BX

JNCL3

JNOL4

JMPL5

若AX和BX的初始值分别如下列五种情况所示,则执行该指令序列后,程序将分别转向何处执行(注:

即写出转移去的目的地址L1~L5中的一个)

(1)AX=14C6H,BX=80DCH

ADDAX,BX;AX=14C6H+80DCH=95A2H,OF=0,CF=0

JNOL1;OF=0,转L1

JNCL2

SUBAX,BX

JNCL3

JNOL4

JMPL5

(2)AX=0B568H,BX=54B7H

ADDAX,BX;AX=B568H+54B7H=0A1FH,OF=0,CF=1

JNOL1;OF=0,转L1

JNCL2

SUBAX,BX

JNCL3

JNOL4

JMPL5

(3)AX=42C8H,BX=608DH

ADDAX,BX;AX=42C8H+608DH=A355H,OF=1,CF=0

JNOL1;OF=1,不转L1

JNCL2;CF=0.转L2

SUBAX,BX

JNCL3

JNOL4

JMPL5

(4)AX=0D023H,BX=9FD0H

ADDAX,BX;AX=D023H+9FD0H=6FF3H,OF=1,CF=1

JNOL1;OF=1,不转L1

JNCL2;CF=1.不转L2

SUBAX,BX;AX=6FF3H-9FD0H=D023H,OF=1,CF=1

JNCL3;CF=1.不转L3

JNOL4;OF=1.不转L4

JMPL5;转L5

(5)AX=9FD0H,BX=0D023H

ADDAX,BX;AX=9FD0H+D023H=6FF3H,OF=1,CF=1

JNOL1;OF=1,不转L1

JNCL2;CF=1.不转L2

SUBAX,BX;AX=6FF3H-D023H=9FD0H,OF=1,CF=1

JNCL3;CF=1.不转L3

JNOL4;OF=1.不转L4

JMPL5;转L5

3.6ANDAL,AL

JZBRCH1

RCRAL,1

JZBRCH2

RCLAL,1

INCAL

JZBRCH3

上书程序运行后,试回答:

(1)当(AL)=0时,程序转向BRCH1

ANDAL,AL;AL=0,ZF=1

JZBRCH1;ZF=1,转BRCH1

RCRAL,1

JZBRCH2

RCLAL,1

INCAL

JZBRCH3

(2)当(AL)=01时,程序转向BRCH2

ANDAL,AL;AL=01H,ZF=0,CF=0

JZBRCH1;ZF=0,不转BRCH1

RCRAL,1;AL=0,ZF=1

JZBRCH2;ZF=1,转BRCH2

RCLAL,1

INCAL

JZBRCH3

(3)当(AL)=FFH时,程序转向BRCH3

ANDAL,AL;AL=FFH,ZF=0,CF=0

JZBRCH1;ZF=0,不转BRCH1

RCRAL,1;AL=7FH,ZF=0,CF=1

JZBRCH2;ZF=0,不转BRCH2

RCLAL,1;AL=FFH

INCAL;AL=0,ZF=1

JZBRCH3;ZF=1,转BRCH3

3.7完成下列操作,选用什么指令:

(1)将AX的内容减去0520H,和上次运算的借位;

SBBAX,0520H

(2)将变量名TABL的段地址送AX。

MOVAX,SEGTABL

3.8D1DB20HDUP(?

D2DWD1

请写出用一条指令实现取D1的偏移地址SI中的三种方法。

1、MOVSI,OFFSETD1

2、LEASI,D1

3、MOVSI,D2

3.9程序段1程序段2

MOVAX,147BHMOVAX,99D8H

MOVBX,80DCHMOVBX,9847H

ADDAX,BXSUBAX,BX

JNOL1JNCL3

JNCL2JNOL4

上述两个程序段执行后,分别转移到哪里?

程序段1

MOVAX,147BH;AX=147BH

MOVBX,80DCH;BX=80DCH

ADDAX,BX;AX=147BH+80DCH=9557H,OF=0,CF=0

JNOL1;OF=0,转L1

JNCL2

程序段2

MOVAX,99D8H;AX=99D8H;

MOVBX,9847H;BX=9847H

SUBAX,BX;AX=0191H,CF=0,OF=0

JNCL3;CF=0,转L3

JNOL4

3.10MOVBX,0FFH;BX=00FFH

ANDBX,0FFFH;BX=00FFH

ORBX,0F0FH;BX=0FFFH

XORBX,00FFH;BX=0F00H

上述程序段运行后,BX=0F00H,CF=0

3.11CMPAX,BX;AX-BX;

JGENEXT;AX≥BX,转NEXT(AX为大数)

XCHGAX,BX;AX<BX,AX←BX(AX为大数)

NEXT:

CMPAX,CX;AX-CX

JGEDONE;AX≥CX,转DONE(AX为大数)

XCHGAX,CX;AX<CX,AX←CX(AX为大数)

DONE:

….

试回答:

(1)上述程序段执行后,原有AX、BX、CX中最大数存放在哪个寄存器中?

AX

(2)这3个数是带符号数还是无符号数?

带符号数

4.1画出下列语句中的数据在存储器中的存储情况。

ARRAYBDB63,63H,‘ABCD’,3DUP(?

),2DUP(1,3)

ARRAYWDW1234H,5,‘AB’,‘CD’,?

2DUP(1,3)

ARRAYB

3FH

ARRAYW

34H

63H

12H

41H

05H

42H

00H

43H

42H

44H

41H

--

44H

--

43H

--

--

01

--

03

01

01

00

03

03

00

01

00

03

00

4.2程序中数据定义如下:

DATA1DW?

DATA2DB32DUP(?

DATA3DD?

DLENGTHEQU$-DATA1;DLENGTH=38

此时DLENGTH的值是多少?

4.3程序中数据定义如下:

ARRAYDB‘ABCDEF’

RESULTDB?

TABLEDW20DUP(?

则执行指令

MOVAX,TYPERESULT后,AX=?

1

MOVBX,TYPETABLE后,BX=?

2

MOVCX,LENGTHTABLE后,CX=?

20

MOVDX,LENGTHARRAY后,DX=?

1

MOVSI,SIZETABLE后,SI=?

40

MOVDI,SIZEARRAY后,DI=?

1

4.4指令ANDAX,7315HAND0FFH中,两个AND有什么差别?

这两个AND操作分别在什么时候执行?

7315HAND0FFH为逻辑运算符,在汇编时执行,结果为0015H

ANDAX,0015H为机器指令,在程序运行时才执行。

4.5设BX=1034H,则执行下列指令

MOVAX,BXAND0FFH;AX=0034H

MOVCX,BXEQ1234H;CX=0

后,AX和CX各为多少?

若BX=1234H,则结果如何?

若BX=1234H

MOVAX,BXAND0FFH;AX=0034H

MOVCX,BXEQ1234H;CX=FFFFH

4.6设已知语句为:

ORG0024H+0+1+2+3+4

DATA1DW4,12H,$+4;040012002C00

则执行指令MOVAX,DATA1+4后AX的值是多少?

AX=002CH

4.7已知数据定义语句为:

BUFFERDB16DUP(0,2DUP

(1));000101000101……

则其中字数据单元内容为0100H的单元数是多少?

00010100010100010100010100010100010100010100010100010100010100010100010100010100010100010100010116个

0001010001010001010001010001010001010001010001010001010001010001010001010001010001010001010001018个

4.8要在以为首址的数据区中依次存放下列数据;

‘A’,‘B’,0,0,‘C’,‘D’,0,0

请分别用DB、DW和DD语句实现。

DATA1DB‘A’,‘B’,0,0,‘C’,‘D’,0,0

DATA2DW‘BA’,0,‘DC’,0

DATA3DD‘BA’,‘DC’

4.9试按下列要求在数据段中依次书写各数据定义语句;

(1)以DA1为首字节的连续存储单元中存放20H个重复的数据序列:

2、3、10个4、1个7。

DA1DB20HDUP(2,3,10DUP(4),7)

(2)DA2为字符串变量,用字变量(DW)设置一字符串;‘STUDENTS’(按此顺序存放在各单元中)。

DA2DW‘TS’,‘DU’,‘NE’,‘ST’

(3)用等值语句给符号COUNT赋值以DA1为首址的数据区共占有的字节数,此等值语句必须放在最后一语句。

DA1DB………

COUNTEQU$-DA1

4.10下面程序段是实现从键盘输入十个一位10进数后累加,最后累加和以非压缩BCD码形式存放在AH(高位)和AL(低位)中。

试把程序段中所空缺的指令填上。

XORBX,BX;BX=0(BH=0,BL=0)

MOVCX,10

LOP;MOVAH,01H;键盘字符输入

INT21H

MOVAH,BH;AH=BH

ADDAL,BL;累加(ASCII)

AAA

MOVBX,AX

LOOPLOP

4.11下面程序段的功能是把数据区的数转换为对应的ASCII码,试完善本程序段。

DA1DB00H,01H,02H,03H,04H,05H,06H,07H,08H,09H

ASCIDB10DUP(?

CUNT=ASCI-DAI

LEASI,DA1

LEADI,ADCI

MOVCX,CUNT

LOP1:

MOVAL,[SI]

ADDAL,30H

MOV[DI],AL

INCSI

INCDI

LOOPLOP1

4.12BUFF‘ABD$QC%$A…XYZ’

CONTEQU$-BUFF

…..

CLD

LEADI,BUFF

MOVCX,CONT

MOVAL,‘$’

XORDX,DX

NEXT:

REPNZSCASB

CMPCX,0

JZK1;CX=0,转

INCDX;DX=2($的个数)

JMPNEXT

K1:

…..

上述程序段运行后,DX中的值表示的意义是什么?

4.13设A,B是长度为10的字节数组,用串操作指令编写程序实现AB两数组内容的相互交换,试完善本程序。

DATASEGMENT

ADB1,2,3,4,5,6,7,8,9,0AH

DRG0010H

BDB0AH,9,8,7,6,5,4,3,2,1

DATAENDS

….

LEASI,A

LEADI,B

MOVCX,10

LOP:

LODSB;AL←[DS:

SI],SI←SI+1

XCHGAL,[DI]

XCHGSI,DI;SI指向B,DI指向A

DECDI

STOSB;[ES:

DI]←AL,DI←DI+1

XCHGSI,DI;SI指向A,DI指向B

INCDI

LOOPLOP

4.14现有一子程序:

SUB1PROC

TESTAL,80H

JEPLUS;AL为正,转PLUS

TESTBL,80H;AL为负

JNEEXITO;BL为负,转EXITO

JMPXCHANGE;BL为正,转XCHANGE

PLUS:

TESTBL,80H;AL为正,测BL

JEEXITO;BL为正,转EXITO

XCHANGE:

XCHGAL,BL;BL为负,AL为正,AL与BL交换

;BL为正,AL为负,AL与BL交换

EXITO:

RET;AL\BL为正,返回

;AL\BL为负,返回

SUB1ENDP

试回答:

(1)子程序的功能是什么?

AL、BL异号时交换

(2)如调用子程序前AL=9AH,BL=77H,那么返回主程序时,AL=?

BL=?

AL=77H,BL=9AH

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2