微机原理与接口技术作业答案.docx

上传人:b****3 文档编号:12922364 上传时间:2023-04-22 格式:DOCX 页数:32 大小:63.38KB
下载 相关 举报
微机原理与接口技术作业答案.docx_第1页
第1页 / 共32页
微机原理与接口技术作业答案.docx_第2页
第2页 / 共32页
微机原理与接口技术作业答案.docx_第3页
第3页 / 共32页
微机原理与接口技术作业答案.docx_第4页
第4页 / 共32页
微机原理与接口技术作业答案.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

微机原理与接口技术作业答案.docx

《微机原理与接口技术作业答案.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术作业答案.docx(32页珍藏版)》请在冰豆网上搜索。

微机原理与接口技术作业答案.docx

微机原理与接口技术作业答案

第二章微处理器及其结构

2-7什么是逻辑地址?

什么是物理地址?

在实地址方式下,如何求存储器的物理地址?

设一个16字的数据区,它的起始地址为70A0H:

DDF6(段基址:

偏移地址).写出这个数据区的首字单元和末字单元的物理地址.

解:

1).实模式下,逻辑地址由段基址和偏移地址组成.物理地址是真正的存储单元的地址.

2).物理地址=段基址*16+偏移地址

3).首字单元地址:

70A0H*16+DDF6H=70A00H+DDF6H=7E7F6H

末字单元地址:

7E7F6H+(16-1)*2=7E7F6H+1EH=7E814H

注意:

相邻两个存储单元可构成一个字长为16位的字,在对准字时,用偶地址表示字的地址.

第三章指令系统

3-6分别指出下列指令中源操作数和目标操作数的寻址方式.若是存储器寻址,用表达式表示EA=?

(1)ANDAX,00FFH

(2)ADDBX,[00FFH]

(3)MOVAX,[BX+10H]

(4)ADDAX,[ESI*8]

(5)SUB[BP][SI],AX

(6)MOVAX,[BX+DI+20H]

(7)CMP[SI],AX

(8)ORAX,DX

(9)MOVEAX,[ESI][EDI*2]

(10)PUSHDS

解:

(1)立即数寻址

(2)直接寻址EA=00FFH

(3)基址寻址EA=(BX)+10

(4)比例间址EA=ESI*8

(5)基址加间址寻址EA=(BP)+(SI)

(6)带位移的基址加间址寻址EA=(BX)+(DI)+20H

(7)间址寻址EA=(SI)

(8)寄存器寻址

(9)基址加比例间址寻址EA=(ESI)+(EDI)*2

(10)寄存器寻址

注意:

◆16位寻址:

BX和BP作为基址寄存器.BX以DS作为默认段寄存器,BP以SS为默认段寄存器.

SI和DI作为间址寄存器.默认DS为段寄存器

◆32位寻址:

8个32位通用寄存器均可作为基址寄存器,其中ESP,EBP以SS为默认段寄存器,其余均以DS为默认段寄存器.

除ESP外的其它7个寄存器均可作间址寄存器,EBP默认SS作段基址寄存器,其它以DS作段基址寄存器

3-732位微机工作在实地址模式下,已知(DS)=1000和(SS)=2000H,(SI)=007FH,(BX)=0040H,(BP)=0016H,变量TABLE的偏移地址为0100H.指出下列指令中源操作数的寻址方式,求它的有效地址(EA)和物理地址(PA).

(1)MOVAX,[1234H]

(2)MOVAX,TABLE

(3)MOVAX,[BX+100H]

(4)MOVAX,TABLE[BP][SI]

解:

(1)直接寻址

EA=1234HPA=(DS)*16+EA=11234H

(2)直接寻址

EA=(TABLE)=0100HPA=(DS)*16+EA=10100H

(3)基址寻址

EA=(BX)+100H=0140HPA=(DS)*16+EA=10140H

(4)带位移的基址加间址寻址

EA=(BP)+(SI)+TABLE=0195HPA=(SS)*16+EA=20195H

注意:

当基址寄存器和间址寄存器默认的段寄存器不同时,一般规定,由基址寄存器来决定默认的段寄存器为段基址寄存器.这里BP为基址寄存器,所以默认SS为段基址寄存器.

3-8指出下列指令的错误,并加以改正.

(1)MOVDS,100

(2)MOV1020H,DX

(3)SUB[1000H],[SI]

(4)PUSHAL

(5)INAL,[80H]

(6)MOVDS,ES

(7)JMPBX

(8)SHRDX,4

(9)OUT380H,AX

(10)ADDAL,BX

(11)POPCS

(12)MOVCL,3300H

解:

(1)立即数不能直接传送到段寄存器中去

应改为:

MOVAX,100

MOVDS,AX

(2)立即数只能出现在源操作数位置

应改为:

MOVDX,1020H

(3)源操作数和目标操作数不能同时为寄存器寻址

应改为:

MOVAX,[1000H]

SUBAX,[SI]

(4)PUSH指令不能操作8位数据

应改为:

PUSHAX

(5)[80H]不是端口INAL,80H

应改为:

INAL,80H

(6)两个段寄存器之间不能直接传送

应改为:

MOVAX,ES

MOVDS,AX

(7)对

(8)移位次数超过1的时候,要把移位次数放入CL中

应改为:

MOVCL,4

SHRDX,CL

(9)端口地址大于255时,要把地址放入DX中

应改为:

MOVDX,380H

OUTDX,AX

(10)源操作数和目标操作数不匹配

应改为:

ADDAX,BX

(11)POP指令只能使用在存储器或通用寄存器

可改为:

POPAX

(12)源操作数和目标操作数不匹配

应改为:

MOVCX,3300H

3-9已知:

(DS)=091DH,(SS)=1E4AH,(AX)=1234H,(BX)=0024H,(CX)=5678H,(BP)=0024H,(SI)=0012H,(DI)=0032H,[09226H]=00F6H,[09228H]=1E40H,[1E4F6H]=091DH.试求下列各指令单独执行后的结果.

(1)MOVCL,20H[BX][SI];(CL)=?

(2)MOV[BP][DI],CX;[IE4F6H]=?

(3)LEABX,20H[BX][SI]:

(BX)=?

MOVAX,2[BX]:

(AX)=?

(4)LDSSI,[BX][DI]

MOV[SI],BX;(SI])=?

(5)XCHGCX,32H[BX];(AX)=?

XCHG20[BX][SI],AX;[09226H]=?

解:

(1)(CL)=00F6H

(2)[IE4F6H]=5678H

(3)(BX)=0056H

(AX)=1E40H

(4)(SI)=0024H

(5)(AX)=5678H

[09226H]=1234H

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

0---xxux0)

(1)ANDAL,DATA

(2)ORAL,DATA

(3)XORAL,DATA

(4)NOTDATA

(5)ANDAL,0FH

(6)ORAL,1H

(7)XORAL,0FFH

(8)TESTAL,80H

解:

(1)(AL)=40HCF=0,OF=0,SF=0,ZF=0,PF=0,AF无定义

(2)(AL)=DEHCF=0,OF=0,SF=1,ZF=0,PF=1,AF无定义

(3)(AL)=9EHCF=0,OF=0,SF=1,ZF=0,PF=0,AF无定义

(4)(AL)=A5H不影响任何标志位

(5)(AL)=04HCF=0,OF=0,SF=0,ZF=0,PF=0,AF无定义

(6)(AL)=C5HCF=0,OF=0,SF=1,ZF=0,PF=1,AF无定义

(7)(AL)=3BHCF=0,OF=0,SF=0,ZF=0,PF=0,AF无定义

(8)(AL)不变=0C4HCF=0,OF=0,SF=1,ZF=0,PF=0,AF无定义

3-12(AL)=8EH,(BL)=72H,执行以下指令后,标志位OF、SF、ZF、AF、PF和CF的值是什么?

(1)ADDAL,BL

(2)ANDBL,AL

(3)CMPAL,BL

(4)SHLAL,1

解:

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

(2)OF=0,SF=0,ZF=0,AF=(未定义),PF=0,CF=0

(3)OF=1,SF=0,ZF=0,AF=0,PF=0,CF=0

(4)OF=1,SF=0,ZF=0,AF=(未定义),PF=0,CF=1

3-15试用CMP指令和无条件指令实现以下判断

(1)AX和CX中的内容均为无符号数

①(AX)>(CX)则转至BIGGER标号执行

②(AX)<(CX)则转至LESS标号执行

(2)BX和DX中的内容均为有符号数

①(BX)>(DX)则转至BIGGER标号执行

②(BX)<(DX)则转至LESS标号执行

解:

(1)CMPAX,CX

JABIGGER

JBLESS

(2)CMPBX,DX

JGBIGGER

JLLESS

第四章汇编语言程序设计

4-9试用伪指令编写一数据段与下面程序等效。

MOVAX,0913H

MOVDS,AX

MOVBX,20H

MOV[BX],‘AB’

DATASEGMENTAT0931H

ORG20H

DATA1DW?

(或DATA1DW'AB')

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDATA1,'AB'

CODEENDS

4-10下面各题有语法错误,分别用两种办法修改,使其正确。

(1)M1DW5060H…MOVBL,M1

改:

M1DB60H,50H

MOVBL,M1

 

M1DW5060H

MOVBL,BYTEPTRM1

MOVBX,M1

M2LABELBYTE

M1DW5060H

MOVBL,M2

(2)M2EQU10H…MOVM2,AL

改:

DATASEGMENT

ORG10H

M2DB?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVM2,AL

CODEENDS

ENDSTART

MOVSI,10H

MOV[SI],AL

MOVDS:

[0010H],AL

(3)M3DW‘ABCD’

改:

M3DW'AB','CD'

M3DB'ABCD'

(4)M4DB1234

改:

M4DB'1234'

M4DW1234

(5)DATA1SEGMENT

DA1DW1234H

DATA1ENDS

DATA2SEGMENT

DA2DW5678H

DATA2ENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA1

MOVBX,DA2

CODEENDS

 

ASSUMECS:

CODE,DS:

DATA2

ASSUMECS:

CODE,DS:

DATA1

ASSUMEDS:

NOTHING

ASSUMEDS:

DATA2

ASSUMECD:

CODE,DS:

DATA1,ES:

DATA2

MOVAX,DATA2

MOVES,AX

MOVBX,DA2

4-12按照下面要求写出程序的框架

(1)数据段的位置从8000H开始,数据段中定义一个有100个字节的数组。

(2)堆栈段名为STACK1,留100个字的空间。

(3)代码段指定段寄存器,主程序从1000H开始,给有关段寄存器赋值。

DATASEGMENTAT800H

M1DB100DUP(?

DATAENDS

STACK1SEGMENTSTACK

DW100DUP(?

STACK1ENDS

CODESEGMENTAT100H

ASSUMECS:

CODE,DS:

DATA,SS:

STACK1

START:

MOVAX,DATA

MOVDS,AX

CODEENDS

ENDSTART

4-15将MBUF为起始单元的5个数按相反次序传到NBUF单元开始的存储单元之中.

DATASEGMENT

MBUFDW1,2,3,4,5

NBUFDW5DUP(?

MEQU10H

DATAENDS

STACK1SEGMENTPARASTACK

DB100DUP(0)

STACK1ENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK1

START:

MOVAX,DATA

MOVDS,AX

MOVSI,OFFSETMBUF

MOVDI,OFFSETNBUF

MOVCX,5

ADDSI,8

LOP:

MOVAX,[SI]

MOV[DI],AX

DECSI

DECSI

INCDI

INCDI

DECCX

JNZLOP

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

 

4-16试编写程序,完成下列数字表达式的功能

解:

DATASEGMENT

XXDBX

YDB?

DATAENDS

STACK1SEGMENTPARASTACK

DB100DUP(0)

STACK1ENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK1

START:

MOVAX,DATA

MOVDS,AX

MOVAL,XX

CMPAL,-1

JGBIGR

MOVAL,-1

JMPJUST2

BIGR:

CMPAL,1

JGEJUST1

MOVAL,0

JMPJUST2

JUST1:

MOVAL,1

JUST2:

MOVY,AL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

4-17将内存中某数据块中的正数和负数分开,并分别将这些正数和负数送同一数据段的两个缓冲区中,并在屏幕上显示正数和负数的个数.

DATASEGMENT

D1DB-1,-2,1,2,3,-4,4,5,-5,0,0,9,-3

COUNTEQU$-D1

D2DB100DUP(?

D3DB100DUP(?

PNUMDW1DUP(?

NNUMDW1DUP(?

CONSTDW10000,1000,100,10,1

DECSDB5DUP(0)

HEAD1DB'THENUMBEROFPOSITIVENUMBERIS:

$'

HEAD2DB'THENUMBEROFNEGATIVENUMBERIS:

$'

DATAENDS

STACK1SEGMENTPARASTACK

DB100DUP(0)

STACK1ENDS

 

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK1

START:

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETD1

MOVSI,OFFSETD2

MOVDI,OFFSETD3

MOVCX,COUNT

LOP:

MOVAL,[BX]

CMPAL,0

JGEJUST1

MOV[DI],AL

INCDI

INCNNUM

JMPJUST2

JUST1:

JEJUST2

MOV[SI],AL

INCSI

INCPNUM

JUST2:

INCBX

DECCX

JNZLOP

MOVAH,9H

MOVDX,OFFSETHEAD1

INT21H

MOVAX,PNUM

MOVDL,0AH

MOVAH,02H

INT21H

MOVDL,0DH

MOVAH,02H

INT21H

 

MOVAH,9H

MOVDX,OFFSETHEAD2

INT21H

MOVAX,NNUM

CALLDISPLAY

MOVDL,0AH

MOVAH,02H

INT21H

MOVDL,0DH

MOVAH,02H

INT21H

MOVAH,4CH

INT21H

 

DISPLAYPROCNEAR

MOVCX,5

LEASI,CONST

LEADI,DECS

CONV3:

MOVBL,0

LOP1:

SUBAX,[SI]

JCNEXT

INCBL

JMPLOP1

NEXT:

ADDAX,[SI]

ORBL,30H

MOV[DI],BL

INCSI

INCSI

INCDI

LOOPCONV3

MOVAH,02H

MOVCX,5

LEADI,DECS

CONV4:

MOVDL,[DI]

CMPDL,30H

JZNODIS

JMPDISP

NODIS:

INCDI

LOOPCONV4

DISP:

INT21H

CMPCX,0

JZQUIT

INCDI

MOVDL,[DI]

LOOPDISP

QUIT:

RET

DISPLAYENDP

CODEENDS

ENDSTART

4-19内存BLOCK开始,存放着256个字节的带符号数.编写程序,从这些数中找出绝对值最大的数,将其放入MAX中.

解:

DATASEGMENT

BLOCKDB-1,-3,2,5,-4,-7,-8,9,10,-124

COUNTEQU$-BLOCK

MAXDB?

MAX1DB?

DATAENDS

STACK1SEGMENTPARASTACK

DB100DUP(0)

STACK1ENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK1

START:

MOVAX,DATA

MOVDS,AX

MOVSI,OFFSETBLOCK

MOVCX,COUNT

MOVBL,[SI]

CMPBL,0

JLABS1

JMPCON1

ABS1:

NEGBL

CON1:

DECCX

LOP:

INCSI

MOVAL,[SI]

CMPAL,0

JLABS2

JMPCON2

ABS2:

NEGAL

CON2:

CMPBL,AL

JAEJUST1

XCHGBL,AL

MOVDI,SI

JUST1:

DECCX

JNZLOP

MOVBH,[DI]

MOVMAX,BH

MOVMAX1,BL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

第五章存储器

5-7若用1024*1b的RAM芯片组成16K*8b的存储器,,需要多少芯片?

在地址线中有多少位参与片内寻址?

多少位用做芯片组选择信号?

解:

先进行位扩展,一组芯片需要8片

再进行字扩展,需要16组芯片.

所以共需要16*8=128片

1024=1K,需要10位参与片内寻址

16=24,需要4位做选择信号.

5-8试用4K*8b的EPROM2732和8K*8b的SRAM6264,以及74LS138译码器,构成一个8KB的ROM,32KB的RAM存储系统,要求设计存储器扩展电路,并指出每片存储芯片的地址范围.

解:

5-9用EPROM2764(8K*8b)和SRAM6264(8k*8b)各一片组成存储器,其地址范围为FC000~FFFFFH,试画出存储器与CPU的连接图和片选信号译码电路(CPU地址线20位,数据线8位)。

11111100000000000000

11111101111111111111

11111110000000000000

11111111111111111111

5-10现有存储芯片:

2K*1b的ROM和4K*1bdeRAM,若用它们组成容量为16KB的存储器,前4KB为ROM,后12KB为RAM,问各种存储芯片分别用多少片?

解:

4KB=4K*8b需要2*8=16片

12KB=12K*8b需要3*8=24片

第六章中断技术

6-18某系统使用一片8259A管理中断,中断请求由IR2引入,采用电平触发、完全嵌套、普通EOI结束方式,中断类型号为42H,端口地址为80H和81H,试画出8259A与CPU的硬件连接图,并编写初始化程序。

解:

电路图参见教材P178图6-19,

由A19-A1=0000000000001000000和M/

给出低电平。

MOVAL,1BH(00011011B)

OUT80H,AL;设置ICW1

MOVAL,40H(01000000B)

OUT81H,AL:

设置ICW2

MOVAL,01H(00000001B)

OUT81H,AL:

设置ICW4

MOVAL,FBH(11111011B)

OUT81H,AL;设置OCW1

 

6-19某系统使用两片8259A管理中断,从片的INT连接到主片的IR2请求输入端。

设主片工作于边沿触发、特殊完全嵌套、非自动结束和非缓冲方式,中断类型号为70H,端口地址为80H和81H;从片工作与边沿触发、完全嵌套、非自动结束和非缓冲方式,中断类型号为40H,端口地址为20H和21H。

要求:

(1)画出主、从片级联图

(2)编写主、从片初始化程序

解:

电路图参见教材P179图6-21,主片

由A19-A1=0000000000001000000和M/

给出低电平,从片

由A19-A1=0000000000000010000和M/

给出低电平。

主片8259A

MOVAL,11H(00010001B)

OUT80H,AL;定义ICW1

MOVAL,70H(01110000B)

OUT81H,AL;定义ICW2

MOVAL,04H(00000100B)

OUT81H,AL;定义ICW3

MOVAL,11H(00010001B)

OUT81H,AL;定义ICW4

MOVAL,FBH(11111011B)

OU

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

当前位置:首页 > 考试认证 > IT认证

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

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