微机原理期末考试习题选讲资料.docx

上传人:b****8 文档编号:24019504 上传时间:2023-05-23 格式:DOCX 页数:26 大小:244.95KB
下载 相关 举报
微机原理期末考试习题选讲资料.docx_第1页
第1页 / 共26页
微机原理期末考试习题选讲资料.docx_第2页
第2页 / 共26页
微机原理期末考试习题选讲资料.docx_第3页
第3页 / 共26页
微机原理期末考试习题选讲资料.docx_第4页
第4页 / 共26页
微机原理期末考试习题选讲资料.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

微机原理期末考试习题选讲资料.docx

《微机原理期末考试习题选讲资料.docx》由会员分享,可在线阅读,更多相关《微机原理期末考试习题选讲资料.docx(26页珍藏版)》请在冰豆网上搜索。

微机原理期末考试习题选讲资料.docx

微机原理期末考试习题选讲资料

 

微机原理习题选讲

 

江苏大学机械学院测控系

2011年9月

存储器数据组织

:

:

:

VAR1

32H

41H

‘A’

42H

‘B’

43H

‘C’

VAR2

34H

1234H

12H

40H

0040H

00H

42H

‘B’

41H

‘A’

78H

12345678H

56H

34H

12H

--

预留的存储单元

C3H

11000011B

ARRY1

00H

第一组字节方式的0,1

01H

00H

第二组字节方式的0,1

01H

ARRY2

--

第一组字方式的?

,1

--

01H

00H

--

第二组字方式的?

,1

--

01H

00H

:

:

:

例4-3

VAR1DB32H,’ABC’

VAR2DW1234H,40H,’AB’

DD12345678H

DB?

11000011B

ARRY1DB2DUP(0,1)

ARRY2DW2DUP(?

1)

本例所定义的数据存储器分配情况如图示。

寻址方式与指令系统

1.已知(DS)=1000H,(ES)=2000H,(SS)=1100H,(SI)=1010H,(BX)=0200H,(BP)=0600H,请指出下列指令的源操作数字段是什么寻址方式?

源操作数字段的物理地址是什么?

(1)MOVAL,[2400H]

(2)MOVAX,[BP]

(3)ADDAX,ES:

[BP+10]

(4)MOVAL,[BX+SI+25]

解:

(1)该指令的源操作数字段是直接寻址方式

物理地址PA=(DS)×16+2400H=1000H×16+2400H=12400H

(2)该指令的源操作数字段是寄存器间接寻址方式

物理地址PA=(SS)×16+(BP)=1100H×16+0600H=11600H

(3)该指令的源操作数字段是寄存器相对寻址方式

物理地址PA=(ES)×16+(BP)+10=2000H×16+0600H+000AH=2060AH

(4)该指令的源操作数字段是寄存器相对基址变址寻址方式

物理地址PA=(DS)×16+(BX)+(SI)+25

=1000H×16+0200H+1010H+0019H=11229H

2.请指出下列指令中得错误:

(1)MOVDS,12H

(2)MOVAH,400

(3)MOVBP,AL(4)MOVAX,[SI][DI]

(5)OUT257H,AL(6)MOVBYTEPTR[BX],1000

(7)MOV[BX],[SI](8)MOV4[DI],02

(9)MOV[BX+SI+3],IP(10)PUSHBH

解:

(1)不能直接向DS中送立即数

(2)400超过了一个字节的范围

(3)寄存器类型不匹配

(4)SI、DI不能同时使用

(5)直接寻址的输出指令中,端口号只能在0~0FFH范围内

(6)1000超过了一个字节的范围

(7)源和目的操作数不能同时为存储器操作数

(8)源操作数与目的操作数的类型不明确

(9)IP不能作源和目的操作数

(10)PUSH是字操作指令

3.请写出如下程序片段中每条算术运算指令执行后标志CF、ZF、SF、OF、PF和AF的状态:

MOVAX,7896H

ADDAL,AH

ADDAH,AL

ADDAL,0F2H

解:

(1)MOVAX,7896H执行后,AX=7896H,即AH=78H,AL=96H,各标志位保持不变。

(2)ADDAL,AH执行后,AH=78H,AL=0EH,即AX=780EH,所以各标志位状态为:

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

(3)ADDAH,AL执行后,AH=86H,AL=0EH,即AX=860EH,所以各标志位状态为:

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

(4)ADDAL,0F2H执行后,AH=86H,AL=00H,即AX=8600H,所以各标志位状态为:

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

4.X、Y、Z均为16位带符号数,请编写一个程序段计算表达式(X*Y+Z-1000)/70的值。

解:

假设X、Y和Z分别存放在名为DATAX、DATAY和DATAZ的变量单元中。

计算结果保存在AX中,余数保存在DX中,则程序段如下:

MOVAX,DATAX

IMULDATAY;计算X*Y

MOVCX,AX

MOVBX,DX;积保存到BX:

CX

MOVAX,DATAZ

CWD;将DATAZ扩展成32位

ADDAX,CX;计算和

ADCDX,BX

SUBAX,1000;计算差

SBBDX,0

MOVCX,70;计算商和余数

IDIVCX

汇编程序基本设计方法

简单(顺序)程序

例4-25有X,Y两个16位数3456H和0ABCDH,求两数之和,并将结果送到Z单元。

程序清单:

DATASEGMENT

XDW3456H

YDW0ABCDH

ZDW00

DATAENDS

CODESEGMENT

ASSUMEDS:

DATA,CS:

CODE

START:

MOVAX,DATA

MOVDS,AX

LEASI,X

LEADI,Y

MOVAX,[SI]

ADDAX,[DI]

MOVZ,AX

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

例4-26把压缩BCD码表示的数M,转换为两个相应的ASCII码,结果存在紧跟M后的两个内存单元,低位在前,高位在后。

程序清单:

DATA1SEGMENT

MDB?

NDB2DUP(00)

DATA1ENDS

CODE1SEGMENT

ASSUMEDS:

DATA1,CS:

CODE1

START:

MOVAX,DATA1

MOVDS,AX

LEASI,M

LEADI,N

MOVAL,[SI]

ANDAL,0FH

ADDAL,30H

MOV[DI],AL

MOVAL,[SI]

MOVCL,4

SHRAL,CL

ADDAL,30H

MOV[DI+1],AL

MOVAH,4CH

INT21H

CODE1ENDS

ENDSTART

分支程序

例4-27内存单元M有一个16位带符号数,求其绝对值,并将结果放回原处。

程序清单:

DATA2SEGMENT

MDW?

DATA2ENDS

CODE2SEGMENT

ASSUMEDS:

DATA2,CS:

CODE2

START:

MOVAX,DATA2

MOVDS,AX

LEASI,M

MOVAX,[SI]

ANDAX,AX

JNSDONE

NEGAX

DONE:

MOV[SI],AX

MOVAH,4CH

INT21H

CODE2ENDS

ENDSTART

例4-28编写实现下列函数的程序。

程序清单如下:

DATA3SEGMENT

XDW?

YDW?

DATA3ENDS

CODE3SEGMENT

ASSUMECS:

CODE3,DS:

DATA3

START:

MOVAX,DATA3

MOVDS,AX

LEASI,X

MOVAX,[SI]

ANDAX,AX

JNSLP1

MOVY,0FFH

JMPEND1

LP1:

JNZLP2

MOVY,00H

JMPEND1

LP2:

MOVY,01H

END1:

MOVAH,4CH

INT21H

CODE3ENDS

ENDSTART

循环程序

例4-29以ARRY开始的字节数组有10个带符号数,求出它们的和,并将和送到SUM字单元中。

程序清单如下:

DATA4SEGMENT

ARRAYDBa1,a2,a3,...a10

SUMDW?

DATA4ENDS

CODE4SEGMENT

ASSUMECS:

CODE4,DS:

DATA4

START:

MOVAX,DATA4

MOVDS,AX

LEASI,ARRAY

XORDX,DX

MOVCX.10

DONE:

MOVAL,[SI]

CBW

ADDDX,AX

INCSI

LOOPDONE

MOVSUM,DX

MOVAH,4CH

INT21H

CODE4ENDS

ENDSTART

例子4-30统计数据段string字符串的字符个数,将统计值存入count单元,字符串是由字符$值为结束符的,统计时$不统计在内。

程序清单如下:

DATA5SEGMENT

STRINGDB'Howareyou!

','$'

COUNTDW?

DATA5ENDS

CODE5SEGMENT

ASSUMECS:

CODE5,DS:

DATA5

START:

MOVAX,DATA5

MOVDS,AX

MOVSI,OFFSETSTRING

XORCX,CX

AGAIN:

MOVAL,[SI]

CMPAL,'$'

JZDONE

INCCX

INCSI

JMPAGAIN

DONE:

MOVCOUNT,CX

MOVAH,4CH

INT21H

CODE5ENDS

ENDSTART

例4-31数据段buffer数组有100个字数据,统计该数组中所有为“1”的位的个数,统

计结果存入result单元。

程序清单如下:

DATA6SEGMENT

BUFFERDWa1,a2,a3,...,a100

COUNTEQU100

RESULTDW?

DATA6ENDS

CODE6SEGMENT

ASSUMECS:

CODE6,DS:

DATA6

START:

MOVAX,DATA6

MOVDS,AX

MOVSI,OFFSETBUFFER

MOVCH,COUNT

MOVBX,00H

LOP1:

MOVAX,[SI]

MOVCL,16

LOP2:

SHRAX,1

JNCNEXT

INCBX

NEXT:

DECCL

JNZLOP2

INCSI

INCSI

DECCH

JNZLOP1

MOVRESULT,BX

MOVAH,4CH

INT21H

CODE6ENDS

ENDSTART

子程序

例4-32子程序SUM的功能是对字节数组求和,用寄存器传送参数,主程序两次调用子程序,对不同的数组求和。

程序清单如下:

DATA7SEGMENT

;ARRYADBa1,a2,a3,...,am

COUNTAEQU$-ARRYA

SUMADW?

;ARRYBDBb1,b2,b3,...,bn

COUNTBEQU$-ARRYB

SUMBDW?

DATA7ENDS

STACK1SEGMENT

STAKDB100DUP(?

TOPEQU100

STACK1ENDS

CODE7SEGMENT

ASSUMECS:

CODE7,DS:

DATA7,SS:

STACK1

MAIN:

MOVAX,DATA7

MOVDS,AX

MOVAX,STACK1

MOVSS,AX

MOVSP,TOP

LEASI,ARRYA

LEADI,SUMA

MOVCX,COUNTA

CALLSUM

MOVSI,OFFSETARRYB

MOVDI,OFFSETSUMB

MOVCX,COUNTB

CALLSUM

MOVAH,4CH

INT21H

CODE7ENDS

;子程序名为SUM,对字节数组求和

;SI=数组起始地址

;CX=数组长度

;DI=有效数组和目的地址

SUMPROCNEAR

PUSHAX

PUSHBX

MOVAX,00H

AGAIN:

MOVBL,[SI]

MOVBH,0

ADDAX,BX

INCSI

LOOPAGAIN

MOV[DI],AX

POPBX

POPAX

RET

SUMENDP

ENDMAIN

 

存储器地址及其分配

例5-1图为某一8088系统的存储器连接图,试确定其中各芯片的地址空间。

片选:

选中所用芯片(高位地址线)

字选:

选中所用存储单元(低位地址线)

分析:

对于芯片的使用

1、若使74LS138起作用,需满足:

A17=1;A19=A18=0;A16=A15=A14=0时选中Y0

A16=1,A15=A14=0时选中Y4

2、若选中27128(16KEPROM,需14根地址线A13~A0)

需满足:

1)Y0=0(A16=A15=A14=0)

A19

A18

A17

A16

A15

A14

A13

A12

A11

……

27128:

20000H~23FFFH

A0

0

0

1

0

0

0

0

0

0

……

0

1

1

1

……

1

3、若选中1#6264(8KSRAM,需13根地址线A12~A0)

需满足:

1)A13=0;

2)Y4=0(A16=1,A15=0,A14=0)

A19

A18

A17

A16

A15

A14

A13

A12

A11

……

1#6264:

30000H~31FFFH

A0

0

0

1

1

0

0

0

0

0

……

0

1

1

……

1

4、若选中2#6264需满足:

需满足:

1)A13=1;

2)Y4=0(A16=1,A15=0,A14=0)

A19

A18

A17

A16

A15

A14

A13

A12

A11

……

2#6264:

32000H~33FFFH

A0

0

0

1

0

0

0

1

0

0

……

0

1

1

……

1

例5-2设计某一16位微处理器系统,要求存储容量位8K的EPROM,采用2764芯片,地址为FE000H~FFFFFH;RAM容量为16K,选用6264芯片,地址为F0000H~F3FFFH。

采用全译码方式。

分析:

1)2764EPROM8K×8(需1片);6264SRAM8K×8(需2片)

2)对于2764:

地址范围FE000H~FFFFFH,当A15=A14=A13=1时,选中Y7,2764片选端CE使能。

C

B

A

A19

A18

A17

A16

A15

A14

A13

A12

A11

……

A0

1

1

1

1

1

1

1

0

0

……

0

1

1

1

1

1

1

1

1

1

……

1

3)对于6264:

地址范围F0000H~F3FFFH,(8K需13根地址线0000H~1FFFH)

2#6264:

F0000H+1FFFH=F1FFFH→(F0000H~F1FFFH)

1#6264:

F2000H+1FFFH=F3FFFH→(F2000H~F3FFFH)

当A15=A14=A13=0时,选中Y0,2#6264片选端CE使能

当A15=A14=0,A13=1时,选中Y1,1#6264片选端CE使能

C

B

A

A19

A18

A17

A16

A15

A14

A13

A12

A11

……

A0

2#

1

1

1

1

0

0

0

0

0

……

0

1

1

1

1

0

0

0

1

1

……

1

1#

1

1

1

1

0

0

1

0

0

……

0

1

1

1

1

0

0

1

1

1

……

1

例5-3用存储器芯片SRAM6116构成一个4KB的存储器,要求其地址范围在78000H~78FFFH之间。

分析:

:

记住:

210=1K(A9A8A7…A0:

...0000000000~…1111111111)

1K:

0000H~03FFH

3K:

0000H~0BFFH(1K+2K)

2K:

0000H~07FFH

4K:

0000H~0FFFH

8K:

0000H~1FFFH

题目要求:

地址范围为78000H~78FFFH的4KB内存空间,而6116为2K×8故需2片。

①2K:

78000H~787FFH(78000H+07FFH=787FFH)

②2K:

78800H~78FFFH(78800H+07FFH=78FFFH)

C

B

A

A19

A18

A17

A16

A15

A14

A13

A12

A11

A10

……

A0

0

1

1

1

1

0

0

0

0

0

……

0

Y0

0

1

1

1

1

0

0

0

0

1

……

1

0

1

1

1

1

0

0

0

1

0

……

0

Y1

0

1

1

1

1

0

0

0

1

1

……

1

思考:

首地址为42000H,组成6K空间,末地址是多少?

(答案:

437FFH提示:

6K=4K+2K)

8255的应用

例7-3利用8255作为打印机的连接接口,并通过该打印机接口打印字符串,字符串长度放在DS段的COUNT单元中,要打印的字符存放在从DATA单元开始的数据区中。

8255与打印机的连接

CPU通过8255接口将数据传送到打印机的D0~D7端,然后利用一个负脉冲STROBE(宽度≥1μs)将数据锁存在打印机内部,以便打印机进行处理。

同时,打印机的BUSY端送出高电平信号,表示其正忙。

仅当BUSY端信号变低后,CPU才可以将下一个数据送给打印机。

INT:

MOVDX,0FBC3H

;8255的控制寄存器端口地址送DX

MOVAL,10000001B

;A组方式0:

A口输出,C口高4位输出

;B组方式0:

B口输出,C口低4位输入

OUTDX,AL

;方式控制字送控制寄存器

MOVAL,00001101B

;C口的按位操作控制字,使PC6初始状态置1

OUTDX,AL

;C口位操作控制字送控制寄存器

下面是打印一批字符的程序段:

MOVCX,COUNT

;将字符串长度作为循环次数

MOVSI,OFFSETDATA

;取字符串首地址

GOON:

MOVDX,0FBC2H

;0FBC2H为C口的地址

INAL,DX

;从C口读入打印机的BUSY信号状态

ANDAL,02H

JNZGOON

;若BUSY为高电平则循环等待

MOVAL,[SI]

;否则取一个字符

MOVDX,0FBC0H

;0FBC0H为A口的地址

OUTDX,AL

;输出一个字符到A口

MOVDX,0FBC2H

;准备在PC6上生成一个负脉冲

MOVAL,0

OUTDX,AL

;因仅PC6接打印机,故由C口输出00H将使PC6变低

MOVAL,40H

OUTDX,AL

;在使PC6变高,在PC6上生成一个STROBE负脉冲

INCSI

;指向下一个字符

LOOPGOON

;若未结束则继续

HLT

注:

STROBE负脉冲也可以利用控制字对C口的按位置位/复位操作来实现。

MOVDX,0FBC3H

MOVAL,00001100B;PC6复位(=0)

OUTDX,AL

MOVAL,00001101B;PC6置位(=1)

OUTDX,AL

附录

1许立梓等编.微型计算机原理及应用.北京:

机械工业出版社,2008

2冯博琴主编.微型计算机原理与接口技术.北京:

清华大学出版社,2002

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

当前位置:首页 > 高等教育 > 院校资料

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

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