微机原理课后答案1.docx

上传人:b****6 文档编号:4569581 上传时间:2022-12-06 格式:DOCX 页数:19 大小:257.61KB
下载 相关 举报
微机原理课后答案1.docx_第1页
第1页 / 共19页
微机原理课后答案1.docx_第2页
第2页 / 共19页
微机原理课后答案1.docx_第3页
第3页 / 共19页
微机原理课后答案1.docx_第4页
第4页 / 共19页
微机原理课后答案1.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

微机原理课后答案1.docx

《微机原理课后答案1.docx》由会员分享,可在线阅读,更多相关《微机原理课后答案1.docx(19页珍藏版)》请在冰豆网上搜索。

微机原理课后答案1.docx

微机原理课后答案1

4.本章作业:

(带答案)

1、试分别说明下列指令中源操作数和目的操作数采用的寻址方式:

答案:

目的操作数源操作数

(1)MOVAX,0FFFFH寄存器立即

(2)MOVES,AX寄存器寄存器

(3)XORCL,[100H]寄存器直接

(4)ADD[SI],DX寄存器间寄存器

(5)MOVES:

[2000H],CL直接寄存器

(6)SUB[BX+SI],1基+变立即

(7)ADCAX,[BX+SI+10H]寄存器相对基+变

(8)PUSHDS隐含寄存器

(9)CLD隐含

(10)CMP[BP+DI],CL基+变寄存器

2、若(BX)=1123H,(SI)=1968H,位移量=0313H,(DS)=1971H,试确定由这些寄存器和下列寻址方式产生的有效地址和物理地址:

答案:

EA物址

(1)直接寻址;0313H19A23H

(2)用BX的寄存器间接寻址;1123H1A833H

(3)用BX的寄存器相对寻址;1436H1AB46H

(4)用BX和SI的基址变址寻址;2A8BH1C19BH

(5)用BX和SI的相对基址加变址寻址。

2D9EH1C4AEH

3、连续执行以下指令,并在空格中填写执行指令的结果。

答案:

MOVAX,2060HAL=60HAH=20HCF=

MOVDS,AXDS=2060HAH=20HCF=

ADDAL,AHAL=80HAH=20HCF=0

INCAXAL=81HAH=20HCF=0

MOVDX,512DL=00HDH=02HCF=0

SUBAX,DXAL=81HAH=1EHCF=0

4、编写程序实现下述功能:

答案:

(1)将BX寄存器的低8位清零,其余位不变。

ANDBX,0FF00H

(2)将DL寄存器的最高位置1,其余位不变。

ORDL,80H

(3)将CL寄存器的高4位保持不变,低4位取反。

XORCL,0FH

(4)测试CX中的最低位,当最低位为0时将AL置1,否则AL置0。

答案:

TESTCX,01H

JZL1

MOVAL,0

HLT

L1:

MOVAL,1

HLT

(5)测试SI,如果SI为奇数将AL置1,否则AL置0。

答案:

TESTSI,01H

JNZL1

MOVAL,0

HLT

L1:

MOVAL,1

HLT

本章典型例题分析:

【例1】若从0200H单元开始有100个数,编一个程序检查这些数,正数保持不变,负数都取补后送回。

DATASEGMENT

ORG0200H

STRINGDB4DUP(-55,5DUP(6,-10,-8,9),2DUP(-4,0))

DATAENDS

STACKSEGMENTPARASTACK'STACK'

DB100DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DATA,SS:

STACK

STARTPROCFAR

BEGIN:

PUSHDS

MOVAX,0

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVCX,100

LEASI,STRING

AGAIN:

MOVAL,[SI]

ANDAL,AL

JNSOVER;AL>0,跳至OVER

NEGAL;AL<0,对AL求补

OVER:

MOV[SI],AL

INCSI

LOOPAGAIN

INT3

RET

STARTENDP

CODEENDS

ENDBEG

1.本章作业(带答案):

1、计算下列程序分别执行后AX寄存器的内容。

(1)MOVAX,0

MOVBX,3456H

TESTBX,1000H

JZNEXT答案:

INCAX

NEXT:

HLT(AX)=1

(2)MOVAX,0

XORBX,BX

AGAIN:

INCBX

ADDAX,BX

CMPBX,5

JBAGAIN

HLT(AX)=(((((0+1)+2)+3)+4)+5)=15

(3)MOVAL,0FFH

CBW

INCAX

INCAX

XCHGAH,AL

SHRAH,1

RCRAL,1

HLT(AX)=0080H

(4)MOVAX,0

MOVBX,1234H

MOVCX,16

AGAIN:

SHLBX,1

JNCNEXT

INCAX

NEXT:

LOOPAGAIN

HLT检测1的个数(AX)=5

2、若在自2000H单元开始有一个1000个字节的数据块,要把它传送到自2200H开始的存储区中去,用以下三中方法,分别编制程序:

(1)不用串操作指令。

(2)用单个传送的串操作数据传送指令。

(3)用带重复前缀的串操作数据传送指令。

程序如下:

DATASEGMENT

ORG2000H

N1DBn1,n2,…n1000

N2EQU2000H+1000–1

CONEQU1000

DATAENDS

STACKSEGMENTSTACK‘STACK’

DW100DUP(?

STACKENDS

CODESEGMENT

ORG1000H

ASSUMECS:

CODE,DS:

DATA,ES:

DATA,SS:

STACK

MAINPROC

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

LEASI,N1+1000–1;

(2);(3)

MOVDI,N2

MOVCX,CON;STD

L1:

MOVAL,[SI];MOVSB;REPMOVSB

MOV[DI],AL

DECSI

DECDI

LOOPL1;LOOPL1

MOVAH,4CH

INT21H

MAINENDP

CODEENDS

ENDSTART

3、若在存储器中有数a、b、c、d(它们连续存放),编写一个程序实现:

((a*10+b)*10+c)*10+d(假设和小于65535)

程序如下:

DATASEGMENT

BCMDWa,b,c,d

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

BCD1PROCFAR

START:

MOVAX,DATA

MOVDS,AX

LEASI,BCM

MOVCX,3

MOVAX,[SI]

L1:

INCSI

SHLAX,1;(AX)←(AX)×2

MOVBX,AX;(BX)←(AX)×2

SHLAX,1;(AX)←(AX)×4

SHLAX,1;(AX)←(AX)×8

ADDAX,BX;(AX)←(AX)×10

ADDAX,[SI]

LOOPL1

INCSI

MOV[SI],AX

MOVAH,4CH

INT21H

BCD1ENDP

CODEENDS

ENDSTART

4、已知数组A包含10个互不相等的整数,数组B包含15个互不相等的整数。

试编写一程序,将既在A中出现又在B中出现的偶数存放在数组C中。

程序如下:

DATASEGMENT

ORG0500H

DATAADWA1,A2,…A10

DATABDWB1,B2,…B15

COUNTAEQU10

COUNTBEQU15

DATACDW10DUP(?

DATAENDS

STACKSEGMENTSTACK'STACK'

DB100DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DATA,SS:

STACK

STARTPROCFAR

BEGIN:

PUSHDS

MOVAX,0

PUSHAX

MOVAX,DATA

MOVES,AX

MOVDS,AX

LEABX,DATAC;(BX)=数组C首址

CLD

LEASI,DATAA;(SI)=数组A首址

MOVDX,COUNTA;(DX)=数组A元素个数

LP1:

LODSW;取数组A元素到AX

LEADI,DATAB;(DI)=数组B首址

MOVCX,COUNTB;(CX)=数组B元素个数

REPNESCASW;(AX)=数组B元素?

不同重复

JNZNEXT;B中无此A元素转NEXT

TESTAX,01H

JNZNEXT

MOV[BX],AX;有A元素且是偶数存入C中

INCBX

INCBX

NEXT:

DECDX

JNZLP1

INT3

STARTENDP

CODEENDS

ENDBEGIN

5、若自STRING开始有一个字符串(以‘$’号作为字符串的结束标志),请编程查找此字符串中有无字符‘#’,有多少个‘#’,并将个数存放在NUMBER字单元中,且把每一个‘#’字符所存放的偏移地址放到自POINTER开始的连续存储字单元中。

程序如下:

DATASEGMENT

ORG0100H

STRINGDB'593#6707#84BK47#68H#8K8#497$'

NUMBERDB?

POINTERDW50DUP(?

DATAENDS

STACKSEGMENTPARASTACK'STACK'

DB100DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DATA,SS:

STACK

STARTPROCFAR

BEGIN:

PUSHDS

MOVAX,0

PUSHAX

MOVAX,DATA

MOVES,AX

MOVDS,AX

LEASI,STRING

LEADI,POINTER

XORBL,BL;BL清0

AGAIN:

MOVAL,[SI]

CMPAL,’$’;与’$’比较

JZSTOP

CMPAL,’#’

JNZNEXT

MOVDX,[SI]

MOV[DI],DX

INCDI

INCDI

INCBL

NEXT:

INCSI

JMPAGAIN

STOP:

LEADI,NUMBER

MOV[DI],BL

INT3

STARTENDP

CODEENDS

ENDBEGIN

〖例3〗为某8位微机(地址总线为16位)设计一个12KB容量的存储器,要求EPROM区为8KB,从0000H开始,采用2716芯片(2K×8);RAM区为4KB,从2000H开始,采用2114(1K×4)芯片。

分析:

根据要求可先列出存储器地址分配表如表7-4所示。

当然,也可画出如图7-23所示相应的存储单元地址分配图。

表7-4示例地址分配表

容量分配

芯片型号

地址范围

容量分配

芯片型号

地址范围

2KB

2716

0000~07FFH

1KB

2114

2000~23FFH

2KB

2716

0800~0FFFH

1KB

2114

2400~27FFH

2KB

2716

1000~17FFH

1KB

2114

2800~2BFFH

2KB

2716

1800~1FFFH

1KB

2114

2C00~2FFFH

需要指出的是,在微机应用系统中,存储器或I/O接口译码电路的设计方案不是唯一的,例如,本例的译码电路既可以采取ROM、RAM分别译码,即由译码器直接输出8个存储器芯片所需的片选信号,也可以采取二次译码的方式。

所谓二次译码方式,即先按“片”地址为2KB进行译码,得到一些映射地址空间为2KB的片选信号;再利用其中的某一条或某几条输出与一条地址线进行二次译码,得到映射地址空间为1KB的片选信号。

这种方法可推广到多种不同容量的存储芯片一起使用的场合,这时可通过多层译码来相继获得容量从大到小的不同芯片的片选信号。

对于本例,由于整个存储器ROM和RAM共为12KB,按2KB为一片共需6根“片选”信号线,故可选74LS138作为译码器。

这样,根据前面的地址分配表或分配图可画出如图7-24所示的地址位图。

图中第一次译码为2KBROM芯片提供片选信号,第二次译码为1KBRAM芯片提供片选信号。

根据图7-24的地址位图,可画出二次译码方式所对应的外部译码电路如图7-25所示,进一步可画出如图7-26所示的存储器与系统总线接口的连接图。

图7-24地址位图

图7-25芯片片选译码电路

图7-26存储器接口连接图

4.本章作业:

(带答案)

1.若用4K×1位的RAM芯片组成16K×8位的存储器,需要多少芯片(32片)?

A19~A0地址线中哪些参与片内寻址(A0~A13)?

哪些参与作芯片组的片选择信号(A14~A19)?

2.下列RAM各需要多少条地址线进行寻址?

多少条数据I/O线?

地址线数据线地址线数据线

(1)512×4;94(5)4K×1;121

(2)1K×4;1046)16K×4;144

(3)1K×8;108(7)64K×1;161

(4)2K×1;111(8)256K×4;184

3.使用下列RAM芯片,组成所需的存储容量,各需多少RAM芯片?

各需多少RAM芯片组?

共需多少寻址线?

每块片子需多少寻址线?

片数组数总线数片内线

(1)512×4的芯片,组成8K×8的存储容量;3216139

(2)1024×1的芯片,组成32K×8的存储容量;256321510

(3)1024×4的芯片,组成4K×8的存储容量;841210

(4)4K×1的芯片,组成64K×8的存储容量;128161612

4.若用2114芯片组成2KBRAM,地址范围为3000H~37FFH,问地址线应如何连接?

(假设CPU只有16条地址线,8根数据线,可选用线选法和全译码法)

CBA

A15A14A13A12A11A10A9A8A7~A0

001100000~0

001101111~1

 

2、假设标志寄存器各标志初始值为0,分别单独执行如下指令后,请指出标志寄存器CF、AF、ZF、SF、OF的值。

答案:

CFAFZFSFOF

(1)MOVAX,BX00000

(2)XORAX,AX00100

(3)MOVAX,1968H

ADDAX,1971H00000

(4)MOVCX,0FFFFH

INCCX01100

(5)MOVBX,0

SUBBX,80H10010

(6)MOVDX,0ABCDH

SHLDX,110001

3、判断下列指令正误,如果错误请指出原因。

答案:

(1)MOVCL,259×数据不匹配

(2)XORBL,BH√

(3)ADD100,AL×立即数不能为目标操作数

(4)MOVSS,2200H×立即数不能直接送基寄存器

(5)POPCS×POP不能对CS

(6)XCHGCX,DX√

(7)INAL,260H×端口地址超过256,应用DX间接寻址

(8)MOV[BP+SI],[BX]×源和目标操作数不能同时为存储器操作数

(9)LEABX,AX×源操作数应为存储器操作数

(10)MOVAX,10H[BX]√

4、问答题:

(1)何为逻辑地址?

何为物理地址?

它们俩者之间有何关系?

答:

物理地址是存储器的实际地址,一个存储单元的物理地址是惟一,逻辑地址为程序设计中所使用的存储器地址,它由段基址和地内偏移地址两部份构成,物理地址=段基址×16+偏移地址,可见一个存储单元的逻辑地址可以有若干个。

(2)什么是总线周期?

一个基本的总线周期由多少个T构成?

答:

CPU每访问一次总线所花的时间称为总线周期,一个基本的总线周期由四个T周期构成。

(3)在使用串操作指令(如MOVS)前应注意些什么?

答:

使用串操作指令时应注意以下五点:

1·将源串的首(末)地址送入SI中、将目标串的首(末)地址送入DI中;2·将串长度送入CX中;3·设置DF的值;4·选择适当的重复前缀;5·判断串操作指令的结束条件。

(4)8088CPU有多少根地址线?

多少根数据线?

它最大直接寻址范围是多少?

一次对外数据传送多少BIT二进制数?

答:

8088CPU有20根地址线,8根数据线,它最大直接寻址范围是1MB,一次对外数据传送8BIT二进制数。

(5)微机中的基本计时有哪几种?

它们之间的有何关系?

答:

微机中的基本计时有:

指令周期;总线周期;时钟周期。

一个指令周期由若干时钟周期或总线周期构成,

一个基本的总线周期由四个时钟周期构成,时钟周期是最小的计时单位,它是微机主频的倒数。

(6)8086/8088微处理器内部有哪些寄存器?

其主要作用是什么?

答:

8086/8088微处理器内部有:

AX、BX、CX、DX、SI、DI、CS、DS、SS、ES、IP、SP、FR、BP存放数据、偏移地址、段基址以及标志。

5、自1000H单元开始,有100个无符号数(字节),编写程序计算这100个数的和,并把和存放在1971H和1972H单元,且高位存放在1972H单元。

程序如下:

DATASEGMENT

ORG1000H

N1DBn1,n2,…n100

N2EQU1971H

CONEQU100

DATAENDS

STACKSEGMENTSTACK‘STACK’

DW100DUP(?

STACKENDS

CODESEGMENT

ORG2000H

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

MAINPROC

START:

MOVAX,DATA

MOVDS,AX

LEASI,N1

MOVCX,CON

XORAX,AX

L1:

ADDAL,[SI]

ADCAH,0

INCSI

LOOPL1

MOVN2,AL

MOVN2+1,AH

MOVAH,4CH

INT21H

MAINENDP

CODEENDS

ENDSTART

6、若自6000H单元开始有1000个数(字节),试针对下面情况编程将它们中的最小值、最大值找出来,并分别存放在5000H和5001H字节单元中。

(1)这1000个数为无符号数。

(2)这1000个数为带符号数。

程序如下:

DATASEGMENT

ORG6000H

BUFFERDBX1,X2,…,X1000;自定义N个无(带)符号数

COUNTEQU$-BUFFER

MAXEQU5000H;保存最大值

MINEQU5001H;保存最小值

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

MAINPROC

START:

MOVAX,DATA

MOVDS,AX

MOVCX,COUNT

LEABX,BUFFER;首地址→BX

MOVAL,[BX];AL←最大值初值

MOVDL,[BX];DL←最小值初值

DECCX;循环次数减1

AGAIN:

INCBX

CMPAL,[BX];比较

JNC(JGE)NEXT1;若最大值≥[BX],则转至NEXT1

MOVAL,[BX];AL←保存最新的最大值

JMPNEXT2

NEXT1:

CMPDL,[BX];比较

JC(JL)NEXT2;若最小值<[BX],则转至NEXT2

MOVDL,[BX];DL←保存最新的最小值

NEXT2:

LOOPAGAIN;循环

MOVMAX,AX;MAX←存最大值

MOVMIN,DX;存最小值→MIN

MOVAH,4CH

INT21H;返回DOS

MAINENDP

CODEENDS

ENDSTART

7、用2114存储器芯片组成2KBRAM,地址范围为C800H~CFFFH,问地址线、数据线及相关的控制线如何连接?

(假设CPU只有16根地址线、8根数据线,控制线为WR、RD、IO/M,采用LS138全译法。

见下图,)

CBA

A15A14A13A12A11A10A9A8A7~A0

110010000~0

110011111~1

试按如下要求分别编写8253的初始化程序,已知8253的计数器0~2和控制字I/O地址依次为204H~207H。

①使计数器1工作在方式0,仅用8位二进制计数,计数初值为128。

②使计数器0工作在方式1,按BCD码计数,计数值为3000。

③使计数器2工作在方式2,计数值为02F0H。

〔解答〕

moval,50h

movdx,207h

outdx,al

moval,128;=80h

movdx,205h

outdx,al

moval,33h

movdx,207h

outdx,al

movax,3000h;不是3000

movdx,204h

outdx,al

moval,ah

out

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

当前位置:首页 > 高中教育 > 理化生

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

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