微型计算机技术 第三章部分答案.docx

上传人:b****6 文档编号:5034277 上传时间:2022-12-12 格式:DOCX 页数:12 大小:21.13KB
下载 相关 举报
微型计算机技术 第三章部分答案.docx_第1页
第1页 / 共12页
微型计算机技术 第三章部分答案.docx_第2页
第2页 / 共12页
微型计算机技术 第三章部分答案.docx_第3页
第3页 / 共12页
微型计算机技术 第三章部分答案.docx_第4页
第4页 / 共12页
微型计算机技术 第三章部分答案.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

微型计算机技术 第三章部分答案.docx

《微型计算机技术 第三章部分答案.docx》由会员分享,可在线阅读,更多相关《微型计算机技术 第三章部分答案.docx(12页珍藏版)》请在冰豆网上搜索。

微型计算机技术 第三章部分答案.docx

微型计算机技术第三章部分答案

3.2什么是机器码?

什么是助记符?

什么是操作码?

什么是操作数?

不同指令的机器码字节数都相同吗?

3.3什么是寻址?

什么是寻址方式?

操作数可能在哪些地方?

对应的操作数名称和寻址方式名称分别是什么?

3.416位操作数在存储器中存放的规则是什么?

什么叫“低对低、高对高”?

3.7指令中寻址存储器操作数使用物理地址还是逻辑地址?

逻辑地址转换成物理地址的算法是什么?

在指令中要确定一个存储器操作数应该提供哪三种信息?

3.8写出存储器寻址方式中有效地址EA的通式。

简单归纳段寄存器的默认规则。

解:

3.2:

机器码:

它指的是将硬件序列号经过一系列加密、散列形成的一串序列号,即使指令的二进制编码。

助记符:

是便于人们记忆、并能描述指令功能和指令操作数的符号

操作码:

组成机器指令的一部分用来说明指令的性质和功能。

操作数:

用来说明操作的对象。

可以是具体的数值、寄存器或存储器地址。

不同指令的机器码字节数不一样。

3.3:

寻址:

寻找操作数会操作数的地址

寻址方式:

寻找操作数地址的方法即为寻址方式。

对应的操作数名称和寻址方式名称见下表:

操作数的位置

操作数名称

寻址方式名称

在指令中

立即数

立即寻址

在寄存器中

寄存器操作数

寄存器寻址

在存储器中

存储器操作数

存储器寻址

在I/O端口中

I/O操作数

I/O端口寻址

3.4:

16位操作数在存储器中存放的规则是:

低字节在低地址中,高字节在高地址中,即所谓的低对低、高对高。

3.7指令中寻址存储器操作数使用的是逻辑地址。

逻辑地址转换成物理地址的算法是:

段地址x16+偏移地址=物理地址

在指令中要确定一个存储器操作数要提供三种信息:

段地址、偏移地址和数据类型。

3.8存储器寻址方式中有效地址EA的通式:

EA=()基址+()地址+DISP偏移量

段寄存器的默认规则:

如果有效地址的表达式中有基址寄存器BP则默认堆栈段SS,其他一律默认数据段DS。

3.9设段寄存器DS=1000H,SS=2000H,ES=3000H,通用寄存器BX=4000H,BP=5000H,SI=6000H,DI=70000H。

在下列各指令中指出存储器操作数的寻址方式,求出有效地址EA、物理地址PA、并分别用物理地址和逻辑地址说明指令执行结果。

(1)MOVCX,[2300H]

(2)MOVBYTEPTR[BX],8FH

(3)MOVDH,[BP+3000H]

(4)MOVES:

[SI+1210H],AX

(5)MOV[BX+DI+50H],AX

(6)INCWORDPTR[BX+SI]

解:

(1)MOVCX,[2300H]直接寻址;

数据段中偏移地址为2300H所对应的字送CX中。

有效地址EA=2300H,物理地址PA=DS*16+EA=10000H+2300H=12300H

执行结果:

(12300H)→CL,(12301H)→CH

(2)MOVBYTEPTR[BX],8FH寄存器间接寻址;

立即数8FH,送入数据段偏移地址为BX所对应的字节中。

有效地址EA=BX=4000H,物理地址PA=DS*16+EA=10000H+4000H=14000H

执行结果:

8FH→(14000H)

(3)MOVDH,[BP+3000H]基址寻址;

数据段中偏移地址为BP内容与3000H之和所对应的字节送至DH

有效地址EA=BP+3000H=8000H

物理地址PA=SS*16+EA=20000H+8000H=28000H

执行结果:

(28000H)→DH

(4)MOVES:

[SI+1210H],AX变址寻址;

AX内容送入数据段中偏移地址SI与1210H之和所对应的字中

有效地址EA=SI+1210H=6000H+1210H=7210H

物理地址PA=ES*16+EA=3000H*16+7210H=37210H

执行结果:

AL→(37210H),AH→(37211H)

(5)MOV[BX+DI+50H],AX基址变址寻址;

AX内容送入数据段中偏移地址为BX内容与DI内容及50H内容之和所对应的字节中

有效地址EA=BX+DI+50H=4000H+70000H+50H=74050H

物理地址PA=DS*16+EA=1000H*16+74050H=84050H

执行结果:

AL→(84050H)

(6)INCWORDPTR[BX+SI]基址变址寻址;

堆栈中偏移地址为BX内容与SI内容所对应的字加1

有效地址EA=BX+SI=4000H+6000H=A000H

物理地址PA=DS*16+EA=1000H*16+A000H=1A000H

执行结果:

1A000H中存放的字的值加1

3.10分别说明指令MOVAX,2000H和指令MOVAX,[2000H]以及指令MOVAX,BX和指令MOVAX,[BX]的区别。

解:

MOVAX,2000H将立即数2000H送入寄存器AX

MOVAX,[2000H]将数据段中偏移地址为2000H的数据送入AX;

MOVAX,BX将寄存器BX操作数传入AX

MOVAX,[BX]将数据段中偏移地址为BX的内容所对应的字送入AX

3.11指出下列指令中源操作数的寻址方式。

(1)MOVBL,0F9H

(2)ADD[BX],SI

(3)SUBCL,[4000H]

(4)CMPDX,[SI]

(5)ANDAL,[BX+1]

(6)ORBP,[DI+2100H]

(7)XORAX,[BP+SI]

(8)MOVCX,300

解:

(1)MOVBL,0F9H立即寻址

(2)ADD[BX],SI寄存器寻址寻址

(3)SUBCL,[4000H]直接寻址

(4)CMPDX,[SI]寄存器间接寻址

(5)ANDAL,[BX+1]基址寻址

(6)ORBP,[DI+2100H]变址寻址

(7)XORAX,[BP+SI]基址变址寻址

(8)MOVCX,300立即寻址

3.12下列指令都是非法的,指出各指令错在哪里?

(1)MOVSI,AH

(2)MOV70H,BL

(3)MOVCX,F123H

(4)MOV[BX],6AH

(5)MOVES,5000H

(6)MOV[DI],[3000H]

(7)MOVDS,SS

(8)MOVCS,AX

(9)MOVAL,[CX]

(10)MOV[BX+BP],DX

(11)MOVBH,[SI+DI+2]

(12)PUSHAL

(13)LEAAX,BX

(14)LDSBL,[5100H]

(15)INAH,DX

(16)OUT288H,AL

(17)ADD[2400H],1234H

(18)XOR[2500R],[BX+10H]

(19)INC[SI]

(20)MUL10

(21)IDIV[BP+DI+1300H]

(22)SALAL,2

解:

(1)MOVSI,AH两个操作数字长不一致

(2)MOV70H,BL立即数不能做目的操作数

(3)MOVCX,F123H十六进制的数以字母打头时前必须补0

(4)MOV[BX],6AH两个操作数的字长不确定

(5)MOVES,5000H立即数不能直接送段寄存器

(6)MOV[DI],[3000H]两个操作数不能存储器操作数

(7)MOVDS,SS段寄存器不可相互传送数据

(8)MOVCS,AXCS不能做目的操作数

(9)MOVAL,[CX]CX不能用作寄存器间接寻址

(10)MOV[BX+BP],DX存储器寻址方式中表示有效地址不能同时为两个基址寄存器

(11)MOVBH,[SI+DI+2]存储器寻址方式中表示有效地址不能同时为两个变址寄存器

(12)PUSHAL入栈出栈操作必须以字为单位,AL应为AX

(13)LEAAX,BXLEA指令中源操作数必须为存储器寻址方式应为[BX]

(14)LDSBL,[5100H]LDS指令中目的操作数必须为16位的通用寄存器

(15)INAH,DXIN指令中的目的操作数只能是AL或AX

(16)OUT288H,AL输入输出指令中端口地址应为16位,必须先送给DX;应为MOVDX,288HOUTDX,AL

(17)ADD[2400H],1234H两个操作数的字长不确定

(18)XOR[2500R],[BX+10H]两个操作数不能同时为内存操作数

(19)INC[SI]操作数的字长不确定

(20)MUL10MUL指令的操作数不能为立即数

(21)IDIV[BP+DI+1300H]操作数的字长不确定

(22)SALAL,2移位次数大于1时必须先送给CL

3.13将寄存器AH、BH、CH和数据段中偏移地址为2100H,2101H,2102H的3个字节单元内容都置数A0H,最后将寄存器DL的内容与偏移地址为2103H的字节单元内容互换。

试编写程序。

解:

DEBUG-A

MOVAH,0A0

MOVBH,0A0

MOVCH,0A0

MOV[2100H],AH

MOV[2101H],BH

MOV[2102H],CH

XCHGDL,[2103]

3.14设SP=2000H,AX=3000H,BX=5000H,执行以下3条指令后,问SP=?

AX=?

BX=?

PUSHAX

PUSHBX

POPAX

解:

指令执行的结果应为SP=2000H-2H-2H+2H=1FFEH

AX=5000H,BX=5000H

3.15说明指令LEASI,[BX]与指令MOVSI,[BX]的区别。

解:

LEASI,[BX]是地址传送指令,将BX的有效地址取至16位SI寄存器中。

这里取的是操作数的地址。

MOVSI,[BX]是寄存器间接寻址,数据段中偏移地址为BX内容所对应的字送SI中。

取的是操作数。

3.16下列程序执行完后,AX=?

BX=?

CX=?

MOVAX,1122H

MOVBX,3344H

PUSHAX

POPCX

XCHGBX,CX

LEACX,[BX]

解:

AX=1122HBX=1122HCX=1122H

3.17CPU分别执行下列各段程序后,写出各个执行结果的状态标志位OF,SF,ZF,AF,PF,CF的值。

(1)MOVAL,7AH

ADDAL,53H

(2)MOVBL,0AFH

ADDBL,OEAH

(3)MOVCL,0FFH

ADDCL,01H

(4)MOVDL,49H

SUBDL,0CAH

解:

(1)MOVAL,7AH

ADDAL,53H

74H+53H=01110100+01010011=11000111B

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

(2)MOVBL,0AFH

ADDBL,OEAH

AFH+EAH=10101111+11101010=10011001B

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

(3)MOVCL,0FFH

ADDCL,01H

FFH+01H=11111111+00000001=00000000B

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

(4)MOVDL,49H

SUBDL,0CAH

49H-CAH=01001001-11001010=01111111B

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

3.18有两个32位的二进制数,分别存放在两个16为寄存器CX:

DX和两个16位寄存器SI:

DI中,求两数之和,并将和放在两个16位寄存器AXBX中,即AX:

BXCX:

DX+SI:

DI。

试编写程序。

解:

设两个32位数分别为1234567823456789

DEBUG

-A

MOVCX=1234

MOVDX=5678

MOVDI=6789

MOVSI=2345

ADDDX,DI

ADCCX,SI

MOVBX,DX

MOVAX,CX

3.21分别说明下面两条乘法指令中被乘数、乘数、积所在的位置。

(1)MULBL

(2)IMULBX

解:

(1)被乘数在AL中,乘数在指令中给出的8位操作数BL中,乘积在AX中。

(2)被乘数在AX中,乘数在指令中给出的16位操作数BX中,乘积在AX中。

3.22若AL=86H,BL=22H,分别执行指令MUL和IMUL后,其结果是多少?

OF=?

CF=?

解:

AL=86H执行MUL指令后OF=1、CF=1

执行IMUL指令后OF=1、CF=1

BL=22H执行MUL指令后OF=1、CF=1

执行IMUL指令后OF=0、CF=0

3.23分别说明下面两条除法指令中被除数、除数、商、余数所在的位置。

(1)DIVCX

(2)IDIVCL

解:

(1)AX内容除以16位操作数CX结果的商放入AX余数放入DX中。

(2)AX内容除以8位操作数CL结果的商放入AL余数放入AH中。

3.24分别写出CPU执行下面两程序后,寄存器DX=?

AX=?

(1)MOVAL,7FH

CBW

CWD

(2)MOVAL,80H

CBW

CWD

解:

(1)DX=0000AX=007F

(2)DX=0000AX=FF80

3.25分别写出CPU执行下面两段程序后,寄存器AL=?

标志CF=?

(1)MOVAL,36H

ADDAL,58H

DAA

(2)MOVAL,49H

ADDAL,87H

DAA

解:

(1)36H+58H=8EH,由于低4位大于9,需要修正,AL=8EH+6H=94H寄存器AL=94H标志寄存器CF=0

(2)49H+87H=D0H,AF=1,由于高4位大于9,需要修正,AL=D0H+66H=36H,CF=1

3.26设AX和CX中存放着两个4位的压缩型BCD码,求两数之和,并将和放在AX中。

试编写程序。

解:

ADDAL,BL

DAA

MOVCL,AL

MOVAL,AH

ADCAL,BH

DAA

MOVAH,AL

MOVAL,CL

3.27分别写出CPU执行下面两段程序后,寄存器AX=?

标志CF=?

(1)MOVAX,0138H

ADDAL,35H

AAA

(2)MOVAX,0533H

ADDAL,34H

AAA

解:

(1)AX=0230H,CF=1

(2)AX=0507H,CF=0

3.28下列程序执行完后,AX=?

CF=?

MOVAX,3649H

ADDAL,AH

DAA

CBW

INCAH

ADCAL,17H

AAA

解:

AX=0102H,CF=1

3.29有如下程序段

MOVAL,45H

ADDAL,71H

DAA

MOVBL,AL

ADCAL,19H

DAA

MOVBH,AL

问,执行完此程序后,BX=3616,标志位PF=1,CF=0.

3.30分别只使用一条指令实现下述各功能。

(1)使AL的低四位清0,高四位不变;

(2)使DI的高10位清0,低6位不变;

(3)使BL的低4位置1,高四位不变;

(4)使SI的高2位置1,低14位不变;

(5)使CL中的D2、D3、D4、D5、D6位取反,D0、D1、D7位不变;

(6)使BP的高4位取反,低12位不变。

解:

(1)ANDAL,0F0H

(2)ANDDI,003FH

(3)ORBL,0FH

(4)ORSI,0C000H

(5)XORCL,7CH

(6)XORBP,0F000H

3.31编写程序实现:

使寄存器SI的高5位置1,低5位清0,中间6位取反。

解:

ORSI,0F800H

ANDSI,0FFE0H

XORSI,07E0H

3.32写出用一条指令使AX清0的一些指令。

解:

MOVAX,0

XORAX,AX

SUBAX,AX

ANDAX,0

3.34用最少的指令实现下述功能。

(1)使AL的低4位移到高4位,低4位清0;

(2)使AH的高4位移到低4位,高4位清0.

解:

(1)MOVCL,4

SHLAL,CL

(2)MOVCL,4

SHRAL,CL

3.35用移位指令实现如下功能。

(1)将CL中的无符号数乘2;

(2)将BX中的带符号数除以4;

(3)将DX中的无符号数除以8.

解:

(1)SARCL,1

(2)MOVCL,2

SARBX,CL

(3)MOVCL,4

SHRDX,4

3.37编程实现如下功能。

(1)将AL的低6位移到高6位,高2位移到低2位;

(2)将BL的高6位移到低6位,低2位移到高2位;

(3)将BH的高4位与低4位变换;

(4)将BP的高8位与低8位变换。

解:

(1)MOVCL,2

ROLAL,CL

(2)MOVCL,2

RORBL,CL

(3)MOVCL,4

RORBH,CL

(4)MOVCL,8

RORBP,CL

3.39设AX=1234H,CX=9602H,下列程序执行完后,AL=?

ANDAL,AH

SHLAL,CL

ORAL,CH

SARAL,XL

XORAL,CL

RCLAL,

解:

ANDAL,AHAL=10H

SHLAL,CLCL=40H

ORAL,CHAL=0D6H

SARAL,XLAL=0F5H

XORAL,CLAL=0F7H

RCLAL,AL=0EE

最后结果:

AL=0EEH

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

当前位置:首页 > 经管营销 > 生产经营管理

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

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