微机原理及应用陈继红徐晨课后习题答案.docx

上传人:b****5 文档编号:7420798 上传时间:2023-01-23 格式:DOCX 页数:76 大小:40.52KB
下载 相关 举报
微机原理及应用陈继红徐晨课后习题答案.docx_第1页
第1页 / 共76页
微机原理及应用陈继红徐晨课后习题答案.docx_第2页
第2页 / 共76页
微机原理及应用陈继红徐晨课后习题答案.docx_第3页
第3页 / 共76页
微机原理及应用陈继红徐晨课后习题答案.docx_第4页
第4页 / 共76页
微机原理及应用陈继红徐晨课后习题答案.docx_第5页
第5页 / 共76页
点击查看更多>>
下载资源
资源描述

微机原理及应用陈继红徐晨课后习题答案.docx

《微机原理及应用陈继红徐晨课后习题答案.docx》由会员分享,可在线阅读,更多相关《微机原理及应用陈继红徐晨课后习题答案.docx(76页珍藏版)》请在冰豆网上搜索。

微机原理及应用陈继红徐晨课后习题答案.docx

微机原理及应用陈继红徐晨课后习题答案

微机原理及应用(陈继红、徐晨)课后习题答案

第三章

8086/8088指令系统和寻址方式习题答案(部分)

3.1总结计算机中十进制、二进制、八进制及十六进制数的书写形式。

123D、0AFH、

77Q、1001110B分别表示什么计数制的数?

答案:

123D、0AFH、77Q、1001110B分别表示十进制、十六进制、八进制、二进制。

3.2字长为

8位、16位二进制数的原码、补码表示的最大数和最小数分别是什么?

答案:

8位原码表示的最大数:

(27-1)、8位补码表示的最大数:

(27-1)、8位原码表示

的最小数:

-(27-1)、8位补码表示的最小数

-27。

16位原码表示的最大数:

(215-1)、16位补码表示的最大数:

(215-1)、16位原码表示的

最小数:

-(215-1)、16位补码表示的最小数

-215。

3.3把下列十进制数分别转换为二进制数和十六进制数。

(1)125

(2)255(3)72(4)5090

答案:

(1)125二进制数:

01111101B;十六进制数:

7DH。

(2)255二进制数:

11111111B;十六进制数:

0FFH。

(3)72二进制数:

01001000B;十六进制数:

48H。

(4)5090二进制数:

0001001111100010B;十六进制数:

13E2H。

3.4把下列无符号二进制数分别转换为十进制数和十六进制数。

(1)11110000

(2)10000000(3)11111111(4)01010101

答案:

(1)11110000十进制数:

240D;十六进制数:

0F0H。

(2)10000000十进制数:

128D;十六进制数:

80H。

(3)11111111十进制数:

255D;十六进制数:

0FFH。

(4)01010101十进制数:

85D;十六进制数:

55H。

3.5把下列无符号十六进制数分别转换为十进制数和二进制数。

(1)FF

(2)ABCD(3)123(4)FFFF

答案:

(1)FF十进制数:

255D;二进制数;

11111111B。

(2)ABCD十进制数:

43981D;二进制数;

1010101111001101B。

(3)123十进制数:

291D;二进制数;

000100100011B。

(4)FFFF十进制数:

65535D;二进制数;

1111111111111111B。

3.6分别用

8位二进制数和

16位二进制数写出下列十进制数的原码和补码。

(1)16

(2)-16(3)+0(4)-0(5)127(6)-128(7)121(8)-9

答案:

(1)168位二进制数原码

:

00010000补码:

00010000;16位二进制数原码

:

00000000

00010000补码:

0000000000010000。

(2)-168位二进制数原码

:

10010000补码

:

11110000;16位二进制数原码

:

10000000

00010000补码:

111111*********0。

(3)+08位二进制数原码

:

00000000补码:

00000000;16位二进制数原码

:

00000000

00000000补码:

0000000000000000。

(4)-08位二进制数原码

:

10000000补码:

00000000;16位二进制数原码

:

10000000

00000000补码:

0000000000000000。

(5)1278位二进制数原码

:

01111111补码:

01111111;16位二进制数原码

:

00000000

01111111补码:

0000000001111111。

(6)-1288位二进制数原码:

无补码:

10000000;16位二进制数原码:

10000000

10000000补码:

1111111110000000。

(7)1218位二进制数原码

:

01111001补码

:

01111001;16位二进制数原码

:

00000000

01111001补码:

0000000001111001。

(8)-98位二进制数原码

:

10001001补码:

11110111;16位二进制数原码

:

10000000

10001001补码:

111111*********1。

3.7试实现下列转换。

1

微机原理及应用(陈继红、徐晨)课后习题答案

答案:

(1)11000010

(2)00001101(3)11000010(4)10111101

3.8假设两个二进制数

(1)A、B两数均为带符号的补码数

(2)A、B两数均为无符号数

答案:

(1)A、B两数均为带符号的补码数:

A>B

(2)A、B两数均为无符号数

:

A<B

3.9下列各数均为十进制数,请用

8位二进制数补码计算下列各题,用十六进制数表示

其运算结果,并判断是否溢出,验证教材中所给的判断依据。

(1)90+71

(2)90-71(3)-90-71(4)-90+71(5)-90-(-71)

答案:

(1)90+71=161>127溢出

[90]补+[71]补=01011010+01000111=10100001=0A1H=[-91]补

(2)90-71=19<127无溢出

[90]补+[-71]补=01011010+10111001=00010011=13H=[19]补

(3)-90-71=-161<-128溢出

[-90]补+[-71]补=10100110+10111001=01011111=5FH=[95]补

(4)-90+71=-19>-128无溢出

[-90]补+[71]补=10100110+01000111=11101101=0EDH=[-19]补

(5)-90-(-71)=-19>-128无溢出

[-90]补+[71]补=10100110+01000111=11101101=0EDH=[-19]补

3.10完成下列

8位二进制数的逻辑运算。

∧∨

⊕∧

⊕∨

∧1000∨1110

⊕0110∧1100

⊕0000∨1100

0011

3.11以下均为

2位十六进制数,试说明当把它们分别看作无符号数或字符的

ASCII码

值,它们所表示的十进制数和字符是什么?

(1)30H

(2)39H(3)42H(4)62H(5)20H(6)7H

答案:

(1)30H所表示的十进制数是:

48D;字符是:

0。

(2)39H所表示的十进制数是:

57D;字符是:

9。

(3)42H所表示的十进制数是:

66D;字符是:

B。

(4)62H所表示的十进制数是:

98D;字符是:

b。

(5)20H所表示的十进制数是:

32D;字符是:

sp空格。

(6)7H所表示的十进制数是:

7D;字符是:

BEL报警。

3.12把以下十进制数分别以压缩

BCD码、非压缩

BCD码、ASCII码串表示。

(1)2

(2)78

答案:

(1)2压缩

BCD码:

0010、非压缩

BCD码:

00000010、ASCII码:

0110010

(2)78压缩

BCD码:

01111000、非压缩

BCD码:

0000011100001000、ASCII码:

0110111

011100

3.13设浮点数格式如下图所示:

阶码、尾数均以补码表示,基数为

2,求:

+25.6和-361.25的规格化浮点数。

答案:

1)×25

+5=0101B,补码

:

0101,尾数:

[

规格化浮点数:

000001010

2

微机原理及应用(陈继红、徐晨)课后习题答案

2)

+9=1001,补码:

1001,尾数:

[

规格化浮点数

:

000010011

3.14设某计算机用

12位表示一个浮点数,该浮点数从高位到低位依次为:

阶符

1位、

阶码

3位(原码表示)、数符

1位、尾数

7位(补码表示

),则

010*********的真值是多少?

答案:

-9.625

3.158086汇编语言指令的寻址方式有哪几类

?

哪种寻址方式的指令执行速度最快

?

解:

寻址方式分为

:

立即数寻址方式、寄存器操作数寻址方式和存储器操作数寻址方式。

其中,寄存器操作数寻址方式的指令执行速度最快。

3.16在直接寻址方式中

一般只指出操作数的偏移地址

那么,段地址如何确定?

如果要用

某个段寄存器指出段地址

指令中应该如何表示

?

解:

默认的数据访问

操作数在

DS段;堆栈操作在

SS段;串操作源操作数

(SI)在

DS

段,目的操作数

(DI)在

ES段;用

BP作为指针在

SS段。

如果要显式地指定段地址,则在操作

数中规定段寄存器。

例如:

MOVAX,

ES:

(BX+10H)

3.178086系统中,设

DS=1000H,ES=2000H,SS=1200H,BX=0300H,SI=0200H,

BP=0100H,VAR的偏移量为

0600H,请指出下列指令的目标操作数的寻址方式,若目

标操作数为存储器操作数,计算它们的物理地址。

(1)MOVBX,12;目标操作数为寄存器寻址

(2)MOV[BX],12;目标操作数为寄存器间址

PA=10300H

(3)MOVES:

[SI],AX;目标操作数为寄存器间址

PA=20200H

(4)MOVVAR,8;目标操作数为存储器直接寻址

PA=10600H

(5)MOV[BX][SI],AX;目标操作数为基址加变址寻址

PA=10500H

(6)MOV6[BP][SI],AL;目标操作数为相对的基址加变址寻址

PA=12306H

(7)MOV[1000H],DX;目标操作数为存储器直接寻址

PA=11000H

(8)MOV6[BX],CX;目标操作数为寄存器相对寻址

PA=10306H

(9)MOVVAR+5,AX;目标操作数为存储器直接寻址

PA=10605H

3.18下面这些指令中哪些是正确的?

那些是错误的?

如果是错误的,请说明原因。

(1)XCHGCS,AX;错,CS不能参与交换

(2)MOV[BX],[1000];错,存储器之不能交换

(3)XCHGBX,IP;错,

IP不能参与交换

(4)PUSHCS;错,

CS不能为

PUSH的操作数

(5)POPCS;错,不能将数据弹到

CS中

(6)INBX,DX;输入

/输出只能通过

AL/AX

(7)MOVBYTE[BX],1000;1000大于

255,不能装入字节单元

(8)MOVCS,[1000];CS不能作为目标寄存器

(9)MOVBX,OFFSETVAR[SI];OFFSET只能取变量的偏移地址

(10)MOVAX,[SI][DI];SI、DI不能成为基址加变址

(11)MOVCOUNT[BX][SI],ES:

AX;AX是寄存器,不能加段前缀

3.19试述以下指令的区别:

⑴MOVAX,3000H与

MOVAX,[3000H]

答案:

⑴MOVAX,3000H指令源操作数的寻址方式为立即寻址方式,指令执行结果为:

(AX)=3000H。

MOVAX,[3000H]指令源操作数的寻址方式为直接寻址方式

指令执行结

果为:

DS:

3000H)_AX。

⑵MOVAX,MEM与

MOVAX,OFFSETMEM

答案:

⑵MOVAX,MEM指令源操作数的寻址方式为直接寻址方式,指令执行结果为:

DS:

MEM)_AX。

MOVAX,OFFSETMEM指令的执行结果是把

MEM的偏移量送

AX。

⑶MOVAX,MEM与

LEAAX,MEM

答案:

⑶MOVAX,MEM指令的执行结果是

LDS:

MEM)_AX。

LEAAX,MEM

的执行结果是把

MEM的偏移量送

AX。

(4)JMPSHORTL1与

JMPNEARPTRL1

3

微机原理及应用(陈继红、徐晨)课后习题答案

答案:

JMPSHORTL1为段内无条件短程转移,跳转的范围不得超过带符号的

8位二进

制数表示的字节范围;

JMPNEARPTRL1为段内无条件近程转移,跳转的范围不得超过带

符号的

16位二进制数表示的字节范围。

(5)CMPDX,CX与

SUBDX,CX

答案:

CMPDX,CX是比较,也是利用减法比较,但是

dx中的值不变,标志寄存器改

变。

SUBDX,CX是做减法运算,

dx中为减后的值,标志寄存器改变

(6)MOV[BP][SI],CL与

MOVDS:

[BP][SI],CL

答案:

BP默认的段基址是

SS,物理地址

PA=SS+BP+SI;第二个重定义为

DS段基址,

物理地址

PA=DS+BP+SI

3.20设

DS=2100H,SS=5200H,BX=1400H,BP=6200H,说明下面两条指令所进行的

具体操作:

MOVBYTEPTR[BP],20H

MOVWORDPTR[BX],20H

解:

前一条指令是把立即数

20H,传送至堆栈段

(BP的默认段

)偏移量由

BP规定的字节单

元,地址为:

52000H+6200H=58200H

第二条指令是把立即数

20H,传送至数据段

(BX的默认段

)偏移量由

BX规定的字单元

址为:

21000H+1400H=22400H。

3.21设当前

SS=2010H,SP=FE00H,BX=3457H,计算当前栈顶的地址为多少?

当执

PUSHBX指令后,栈顶地址和栈顶

2个字节的内容分别是什么?

答案:

当前栈顶的地址

=2FF00H

当执行

PUSHBX指令后,栈顶地址

=2FEFEH

(2FEFEH)=57H

(2FEFFH)=34H

3.22设

DX=78C5H,CL=5,CF=1,确定下列各条指令执行后,

DX和

CF中的值。

(1)

SHRDX,1;DX=3C62HCF=1

(2)

SARDX,CL;DX=03C6HCF=0

(3)

SHLDX,CL;DX=18A0HCF=1

(4)

RORDX,CL;DX=2BC6HCF=0

(5)

RCLDX,CL;DX=18B7HCF=1

(6)

RCRDH,1;DX=BCC5HCF=0

3.23设

AX=0A69H,VALUE字变量中存放的内容为

1927H,写出下列各条指令执行

后寄存器和

CF、ZF、OF、SF、PF的值。

AXCFZFOFSFPF

(1)XORAX,VALUE;

134EH00001

(2)ANDAX,VALUE;

0821H00001

(3)SUBAX,VALUE;

F142H10011

(4)CMPAX,VALUE;

0A69H10011

(5)NOTAX;

F596HXXXXX

(6)TESTAX,VALUE;

0A69H00001

3.24设

AX和

BX中是符号数,

CX和

DX是无符号数,请分别为下列各项确定

CMP

和条件转移指令。

CX值超过

DX转移。

AX未超过

BX转移。

DX为

0转移。

CX值等于小于

DX转移。

答案:

(1)

CMPCX,DX

JANEXT

(2)

CMPAX,BX

JLENEXT

(3)

CMPDX,0

JZNEXT

4

微机原理及应用(陈继红、徐晨)课后习题答案

(4)

CMPCX,DX

JBENEXT

3.25阅读分析下列指令序列:

ADDAX,BX

JNOL1

JNCL2

SUBAX,BX

JNCL3

JNOL4

JMPL5

AX和

BX的初值分别为以下

5种情况,则执行该指令序列后,程序将分别转向何处

(L1~L5中的一个)。

AX=13C6H,

BX=80DCH

AX=0B568H,BX=54B7H

AX=42C8H,

BX=608DH

AX=0D023H,BX=9FD0H

AX=9FD0H,

BX=0D023H

答案:

(1)转

L1:

不溢出,转移到

L1处;

(2)转

L1:

不溢出,转移到

L1处;

(3)转

L2:

溢出,不转移到

L1处,进位

CF=0,转移到

L2处;

(4)转

L3:

溢出,不转移到

L1处,进位

CF=1,不转移到

L2处,减法借位

CF=0,转移

L3处;

(5)转

L5:

溢出,不转移到

L1处,进位

CF=1,不转移到

L2处,减法借位

CF=1,不转

移到

L3处,不溢出

OF=0,转移到

L4处;

3.26用普通运算指令执行

BCD码运算时

为什么要进行十进制调整

?

具体地讲,在进行

BCD码的加、减、乘、除运算时

程序段的什么位置必须加上十进制调整指令

?

解:

因为

8086指令把操作数作为二进制数进行二进制运算

要得到正确的

BCD结果,需

要进行调整。

在加、减、乘法指令之后加上

BCD调整指令

而在除法指令之前先用

BCD调

整指令再用除法指令。

3.27在编写乘除法程序时,为什么常用移位指令来代替乘除法指令?

编写一段程序,实

现将

BX中的数除以

10,结果仍然放在

BX中。

解:

用移位指令时,左移

l位相当于将操作数乘

2,右移

1位相当于将操作数除

2。

移位指令实现一些简单的乘除法程序,比用乘法指令和除法指令进行乘、除运算要快得多。

用除法指令实现:

MOVCL0AH

MOVAX,BX

IDIVCL

MOVBX,AX

3.28串操作指令使用时特别要注意和

SI,DI这两个寄存器及方向标志

DF密切相关。

具体就指令

MOVSB/MOVSW、CMPSB/CMPSW、SCASB/SCASW、LODSB/LODSW、

STOSB/STOSW列表说明和

SI、DI及

DF的关系。

解答:

SIDIDF

MOVSB/MOVSW指出源地

指出目的地

不带

REP重复前缀时,

DF=0,每传送一次,

SI、

DI加

1或加

2,DF=1,SI、DI则减

1或减

2

CMPSB/CMPSW

存放源字

符串首地

存放目的字

符串首地址

DF=0,每次比较后,

SI、DI加

1或加

2,CX减

1,DF=1,SI、DI减

1或减

2,CX减

1

SCASB/SCASW无指出字符串

首址偏移量

LODSB/LODSW作为地址

指针

存放处理结

DF=1时,地址作增量修改,

DF=0时,地址作减

量修改

5

微机原理及应用(陈继红、徐晨)课后习题答案

STOSB/STOSW无存放目的地

3.29用串操作指令设计实现以下功能的程序段:

首先将

100H个数从

2170H处搬到

1000H处,然后,从中检索相等于

VAL中字符的单元,并将此单元值换成空格符。

解答:

START:

MOVAX,DS

MOVES,AX

MOVSI,2170H

MOVDI,1000H

MOVCX,100H

CLD

REPMOVSB

ANOTHER:

MOVDI,1000H

MOVAL,VAL

MOVCX,100H

CLD

AGE:

SCASB

JZFIN

DECCX

JNZAGE

JMPOVER

FIN:

MOVBYTEPTR[DI-1],20H

CMPCX,0

JNZAGE

OVER:

RET

3.30求双字长数

DX∶AX的相反数。

答:

NEGDX

NEGAX

SBBDX,0

3.31试对数据段偏移地址为

101H单元中的单字节数求补后存入

102H,最高位不变,

7位取反存入

103H,高

4位置

1,低

4位不变,存入

104H。

答:

MOVAX,[0101H]

MOVBX,AX

MOVCX,AX

NOTAX

MOV[0102H],AX

XORBX,7FH

MOV[0103H],BX

ANDCX,0F0H

MOV[0104H]

3.32试编写一个程序,比较两个同长字符串

STRING1和

STRING2所含字符是否相同,

若相同

MATCH单元赋值

1,若不相同

MATCH单元赋值

0。

答案:

6

微机原理及应用(陈继红、徐晨)课后习题答案

程序段为:

;数据定义

STRING1DB‘ABCDEFGHIJK

STRING2DB‘ABCDFGKJMATCHDB?

;功能代码

MOVAX,SEGSTRING1

MOVDS,AX

MOVAX,SEGSTRING2

MOVES,AX

LEASI,STRING1

LEADI,STRING2

MOVCX,STRING1-STRING2

CLD

REPECMPSB

JZEQUAL

MOVMATCH,0

JMPOVER

EQUAL:

MOVMATCH,1

OVER:

HLT

;串

1,作为源串

;串

2,作为目标串

;定义

MATCH单元

;源串段地址送

DS

;目标串段地址送

ES

;源串偏移地址送

SI

;目标串偏移地址送

DI

;重复次数送

CX

;地址增

;相等继续比较,不相等退出

;退出时,若

ZF=1,表示两串相等

;不相同,

MATCH单元赋值

0

;相同

MATCH单元赋值

1

3.34编写代码

计算

a+10b+100c+20d,其中

a、b、c、d均为单字节无符号数,结果为

16

位,存入

SUM开始的两单元中。

datasegment

madb12

mbdb21

mcdb86

mddb150

SUMdw0

dataends

codesegment

assumeds:

data,cs:

code

start:

movax,data

movds,ax

movdh,0

movdl,ma

movah,0

moval,10

mulmb

adddx,ax

movah,0

moval,100

mulmc

adddx,ax

movah,0

7

微机原理及应用(陈继红、徐晨)课后习题答案

moval,20

mulmd

adddx,ax

movSUM,dx

codeends

endstart

3.35试编写一段程序把

LIST到

LIST+100中的内容传到

BLK到

BLK+100中去。

答案:

程序段为:

MOVAX,SEGLIST

MOVDS,AX;源串段地址送

DS

MOVAX,SEGBLK

MOVES,AX;目标串段地址送

ES

LEASI,LIST;源串偏移地址送

SI

LEADI,BLK;目标串偏移地址送

DI

MOVCX,101;重复次数送

CX

CLD;地址增

REPMOVSB

3.36设

CS:

0100H单元有一条两字节的

JMPSHORTLAB指令,若其中的位移量为:

⑴56H⑵80H⑶78H(4)0E0H

试写出转向目标的物理地址是多少?

答:

因为

CS:

0100H处存放两字节指令

JMPSHORTLAB,所以当执行该指令时

(IP)=0102H

(1)转向目标的物理地址是:

(CS)*10H+(IP)+0056H=CS:

0058H

(2)转向目标的物理地址是:

(CS)*10H+(IP)+0FF80H=CS:

0082H;80H对应的负数为

-80H(向上转移,负位移量)

(3)转向目标的物理地址是:

(CS)

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

当前位置:首页 > PPT模板 > 自然景观

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

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