SWT微机原理与接口技术期末复习参考资料.docx

上传人:b****8 文档编号:29361032 上传时间:2023-07-22 格式:DOCX 页数:19 大小:30.24KB
下载 相关 举报
SWT微机原理与接口技术期末复习参考资料.docx_第1页
第1页 / 共19页
SWT微机原理与接口技术期末复习参考资料.docx_第2页
第2页 / 共19页
SWT微机原理与接口技术期末复习参考资料.docx_第3页
第3页 / 共19页
SWT微机原理与接口技术期末复习参考资料.docx_第4页
第4页 / 共19页
SWT微机原理与接口技术期末复习参考资料.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

SWT微机原理与接口技术期末复习参考资料.docx

《SWT微机原理与接口技术期末复习参考资料.docx》由会员分享,可在线阅读,更多相关《SWT微机原理与接口技术期末复习参考资料.docx(19页珍藏版)》请在冰豆网上搜索。

SWT微机原理与接口技术期末复习参考资料.docx

SWT微机原理与接口技术期末复习参考资料

一.填空题

1.在计算机中存储容量单位中,1KB=1024字节。

2.计算机系统中的三总线通常是指地址总线,数据总线,控制总线。

3.8086/8088内4个段寄存器CS,DS,SS,ES的中文名分别是代码段寄存器、数据段寄存器、堆栈段寄存器、附加段寄存器。

4.在16位寻址方式下的机制寻址方式中,基址寄存器为BH、BL,变址寄存器位SI、DI。

5.源程序的基本结构为、

6.每个指令有两个部分构成,即操作码和操作数。

7.10100110B=166D=A6H=O。

8.8086CPU是由EU和BIU两部分组成的。

9.8086/8088标志寄存器中CF、DF、SF的中位名分别为进位标志位、方向标志位、符号标志位。

10.CPU是微型计算机的核心芯片,而且无论哪种CPU其内部组成都大同小异,既包括运算器、控制器、寄存器。

11.在通用传送指令MOV中规定,目的操作数不能同时为存储器操作数、段寄存器、IP&CS。

12.8086/8088内4个段寄存器都是16位的,在用于内存寻址时作为段地址,20位物理地址是有段寄存器的段地址左移4位后,在与16位偏移量经过相加运算而得到。

二.选择题

1.常用的数据定义伪指令有(A)种。

A.3B.4C.5D.6

2.若屏蔽某几位可用指令(A)

A.ANDB.ORC.NOTD.XOR

3.微处理器8086字符串操作,用来存放源串偏移地址的寄存器是(C)。

A.BPB.SPC.SID.DI

4.若当减法运算X-Y中,是SF=1,OF=1,说明两者比较结果为(A)

A.XYC.X≦YD.X≧Y

5.8086/8088CPU中,标志寄存器的第11位OF位是(C)

A.符号标志位B.零标志位C.溢出标志位D.方向标志位

6.CPU中运算器的主要功能是()

A.算数运算B.逻辑运算C.算术运算和逻辑运算D.函数运算

7.如对某一寄存器清零可以使用下面命令()。

A.ANDB.ORC.NOTD.XOR

8.BCD码运算中,设AL=25H,BL=71H,进行BCD码减法运算后,AL=()。

A.67HB.54HC.43HD.0B4H

9.下列指令中,错误的是()

A.MOVAX,100B.POPFC.ADDOFFSET[BX][SI]D.DECDI

10.中断向量地址是指()

A.子程序入口地址B.中断服务例行入口地址C.中断服务入口地址的地址

D.例行程序地址

三.判断题。

1.8086CPU的逻辑段允许段的重复和交叉。

()

2.8086微处理器的标志寄存器FLAGS是16位的,每一位都有含义。

()

3.按约定,串操作指明都是以DS:

SI来寻址源串,以ES:

DI来寻址目的串,所以指令中不必显示指明操作数。

()

4.在8086系统中,所有中断都要执行两个中断响应总线周期。

()

5.指令语句与伪指令需经汇编程序翻译为机器代码后才能执行。

()

四.简答题。

1.8位和16位二进制数的原码、补码和反码可表示的数的范围分别是多少?

解:

(1)对于8位二进制数的原码、补码和反码可表示的数的范围如下:

1原码:

11111111B~01111111B(-127~+127)。

2反码:

10000000B~01111111B(-127~+127)。

3补码:

10000000B~01111111B(-128~+127).。

(2)对16位二进制数的原码、补码和反码可表示的数的范围如下:

①原码:

FFFFH~7FFFH(-32767~+32767);

②反码:

8000H~7FFFH(-32767~+32767);

③补码:

8000H~7FFFH(-32768~+32767).

2.8086/8088系统中,存储器为什么要分段?

一个段最大为多少字节?

最少为多少字节?

解:

8086/8088有20条地址总线,可寻址的最大物理内存容量为1MB(

),其中任何一个内存单元都有一个20位的地址,也就是内存单元的物理地址。

由于8086/8088的内部寄存器只有16位,而访问内存单元在多数情况下都要通过寄存器间接寻址,因此,8086/8088就采用了将地址空间分段的方法,即将1MB的地址空间分为若干个64KB的段,然后再用段基地址加上段内偏移地址来访问物理存储器。

3.I/O接口的主要功能有哪些?

有哪两种编制方式?

在8086/8088系统中采用哪一种编制方式?

解:

由I/O接口在系统中的位置可以得出接口电路具有如下功能:

(1)I/O地址译码与设备选择;

(2)信息的输入/输出;

(3)命令、数据和状态的缓冲与锁存;

(4)信息转换。

在微型计算机系统中,I/O端口的编址通常有两种不同的方式:

与内存单元统一编址、独立编址;8086/8088采用独立编址。

4.在8086/8088CPU中,标志寄存器包含哪些标志位?

各位为0(为1)分别表示什么含义?

解:

如图:

包括6个状态标志和3个控制标志:

(1)状态标志如下:

①CF:

进位标志位。

最高为向前有(借)进位时,CF=1;否则CF=0。

②PF:

奇偶标志位。

当运算结果的低8位中1的个数为偶数时,PF=1;为奇数时PF=0.

③AF:

辅助进位标志位。

在加减法操作中,D

有进位借位发生时,AF=1,否则AF=0.

④ZF:

零标志位。

当运算结果为零时ZF=1,否则ZF=0.

⑤SF:

符号标志位。

当运算结果的最高位为1时SF=1,否则SF=0.

⑥OF:

溢出标志位。

当算数的运算结果超出了带符号数的范围,即溢出时OF=1;否则OF=0.

(2)控制标志位

①TF:

陷阱标志位。

当TF=1时,激活处理器的调试特性,使CPU处于单步执行指令的工作方式。

每执行一条指令后的,自动产生一次单步中断,从而使用户能够逐条指令的检查程序。

②IF:

中断允许标志位。

IF=1使CPU可以响应可屏蔽中断请求。

IF=0使CPU禁止响应可屏蔽中断请求。

③DF:

方向标志位。

方向标志位在执行串操作指令时控制操作的方向。

DF=1时按减地址方式进行,即从高地址开始,每进行一次操作,地址指针自动减1(或减2);DF=0时则按照增地址方式进行。

5.CPU满足什么条件能够响应可屏蔽中断?

解:

当INTR信号有效时,如果中断允许标志位IF=1,则CPU就会在当前指令执行完毕后,产生两个连续的中断响应总线周期。

6.8086/8088CPU中,有哪些通用寄存器和专用寄存器?

解:

8086/8088CPU内部共有14个16位寄存器。

按其功能可分为三大类,即通用寄存器(8个)、段寄存器(4个)、控制寄存器(2个)

1)通用寄存器

(1)数据寄存器

①AX:

累加器;②BX:

基址寄存器;③CX:

计数寄存器;④DX:

数据寄存器。

(2)地址指针寄存器

①SP:

堆栈指针寄存器②BP:

基址指针寄存器

(3)变址寄存器

①SI:

源变址寄存器②DI:

目的变址寄存器

2)段寄存器

①CS:

代码段寄存器②SS:

堆栈段寄存器③DS:

数据段寄存器④ES:

附加段寄存器

3)控制寄存器

①IP:

指令指针寄存器②FLAGS:

标志寄存器

5.分析题

1.读下列程序段,若(AL)=5BH,执行程序后(AL)=H。

MOVBL,AL

MOVCL,8

AGAINROLBL,1

RCRAL,1

LOOPAGAIN

2.如程序的数据段定义如下,写出各指令语句独立执行后的结果:

DSEGSEGMENT

DATA1DB10H,20H,30H

DATA2DW10HDUP(?

STRINGDB‘123’

DSEGENDS

(1)MOVAL,DATA

解:

(2)MOVBX,OFFSETDATA2

解:

(3)LEASI,STRING

ADDDI,SI

解:

3.设(DS)=6000H,(ES)=2000H,(SS)=1500H,(SI)=00A0H,(BX)=0800H,(BP)=1200H,数据变量VAR为0500H。

请分别指出下列各条指令源操作数的寻址方式?

它的物理地址是多少?

(1)MOVAX,AVR

解:

(2)MOVDI,ES:

[BX]

解:

(3)MOVBX,20H[BX]

解:

4.设堆栈指针SP的初始值为2300H,(AX)=50ABH,(BX)=1234H。

执行指令PUSHAX后,(SP)=?

在执行指令PUSHBX及POPAX之后,(SP)=?

(AX)=?

(BX)=?

解:

 

六编程题

1.把内存中首地址为MEM1的200个字节送到首地址为MEM2的区域中。

解:

程序如下:

MOVSI,0FFSETMEM1;源数据块首地址(偏移地址)送SI

MOVDI,0FFSETMEM2;目标首地址(偏移地址)送DI

MOVCX,200;数据块长度送CX,即=训坏次数CX

NEXT:

MOVAL,[SI];源数据块中当前字节送AL

MOV[DI],AL;AL内容送目标地址,完成一个字节数据的传送

INCSI;SI加1,修改源地址指针

INCDI;DI加1,修改目标地址指针

DECCX;CX减1,修改循环次数

JNZNEXT;如循环次数(CX)不为零,则转移到NEXT标号处

HLT;停止

2.编写一个程序,将2000H:

1200H地址开始的100个字节传送到6000H:

0000H开始的内存单元中。

解:

程序如下:

MOVAX,2000H

MOVDS,AX;设定源串段地址

MOVAX,6000H

MOVES,AX;设定目标串段地址

MOVSI,1200H;设定源串偏移地址

MOVDI,100;串长度送CX

CLD;DF=0,使地址指针按增量方向修改

REPMOVSB;每传送一个字节,自动修改地址指针及CX直至CX=0

HLT;暂停执行

3.统计以BUFFER为起始地址的100个单元中负数的个数,并将统计出来的负数个数送NUM单元中。

解:

程序如下:

 

4.编写程序,将数据区中以字节变量BUFFER为首地址的100个单元清零。

解:

程序如下:

DATASEGMENT

BUFFERDB100DUP(?

COUNTDW100;定义地址区长度

DATAENDS;

STACKSEGMENT

DW32DUP(?

STACKENDS;

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX;初始化数据

MOVAX,STACK

MOVSS,AX;初始化堆栈段

MOVCX,COUNT

LEABX,BUFFER

ADDCX,BX

AGAIN:

MOVBYTEPTR[BX],0;实现100个单元清零

INCBX

CMPBX,CX

JBAGAIN

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

5.编写一个程序,从4000H开始的单元中放油32个有符号数,要求统计出其中负数的个数,并将个数存于BUFFER单元中。

解:

XORDX,DX;清DX内容,DX用于存放中间结果MOVSI,4000H;SI←起始地址

MOVCX,20H;CX←统计次数

AGAIN:

MOVAL,[SI];AL←取第一个数

INCSI;地址指针加1

TESTAL,80H;测试所取得数是否为负数

JZNEXT;不为负数则转NEXT

INCDX;如为负数则转DX←DX+1

NEXT:

DECCX;CX←CX-1

JNZAGAIN;若CX≠0则继续检查下一个

MOVBUFFER,DX;统计结果送BUFFER单元

6.编写一个程序段,比较两个字符串是否相同,并找出其中第一个不相同等的字符的地址,将该地址送BX,不相等的字符送AL。

两个字符串的长度均为200B,M1为源串首地址,M2为目标串首地址。

解:

程序如下:

LEASI,M1;SI←源串首地址

LEADI,M2;DI←目标串首地址

MOVCX,200;CX←串长度

CLD;DF=0,使地址指针按增量方向修改

REPECMPSB;如相等则重复比较

JZSTOP;若ZF=1,表示两数据串完全相等,转STOP

DECSI;否则SI-1,指向不相等单元的内容

MOVBX,SI;BX←不相等单元的地址

MOVAL,[SI];AL←不相等单元的内容

STOP:

HLT;停止

7.把以DATA为首地址的两个连续单元中的16为无符号数乘以10.

解:

程序如下:

(因为10x=8x+2x=

所以可以用左移指令实现该运算)

LEASI,DATA;DATA单元的偏移地址送SI

MOVAX,[SI];AX←被除数

SHLAX,1;AX=DATA*2

MOVBX,AX;暂存BX

MOVCL,2;CL←移位次数

SHLAX,CL;AX=DATA*8

ADDAX,BX;AX=DATA*10

HLT

8.在当前数据段DATA1开始的顺序80个单元中,存放着80位同学某门功课的考试成绩(0~100)。

编写程序统计≥90分、80~89分、70~79分、60~69分以及<60分的人数,并将结果放到统一数据段的DATA2开始的5个单元中。

解:

程序如下:

DATASEGMENT

DATA1DB80DUP(?

);假定学生成绩已放入这80个单元中

DATA2DB5DUP(0);统计结果:

≥90、80~89、70~79、60~69、<60

DATAENDS;

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

ATART:

MOVAX,DATA

MOVCX,80;统计人数送CX

LEASI,DATA1;SI指向学生成绩

LEADI,DATA2;DI指向统计结果

AGNIN:

MOVAL,[SI];取一个学生的成绩

CMPAL,90;大于90分吗?

JCNEXT1;若不大于,继续判断

JNCBYTEPTR[DI];否则90分以上的人数加1

JMPSTO;转循环控制处理

NEXT1:

CMPAL,80;大于80分吗?

JCNEXT2;若不大于,继续判断

INCBYTEPTR[DI+1];否则80分以上的人数加1

JMPSTO;转循环控制处理

NEXT2:

CMPAL,70;大于70分吗?

JCNEXT3;若不大于,继续判断

INCBYTEPTR[DI+2];否则70分以上的人数加1

JMPSTO;转循环控制处理

NEXT3:

CMPAL,60;大于60分吗?

JCNEXT4;若不大于,继续判断

INCBYTEPTR[DI+3];否则60分以上的人数加1

JMPSTO;转循环控制处理

NEXT4:

INCBYTEPTR[DI+4];60分以下的人数加1

STO:

INCSI;指向下一个学生成绩

LOOPAGAIN;循环,直到所有成绩都统计完

MOVAH,4CH;返回DOS

INT21H

CODEENDS

ENDSTART

9.求从TABLE开始的10个无符号字节数的和,结果放到SUM单元中。

解:

程序如下:

DATASEGMENT;定义数据段

TABLEDB12H,23H,34H,45H,56H;10个加数

DB67H,78H,89H,9AH,0FDH

SUMDW?

DATAENDS;

CODESEGMENT;定义代码段

ASSUMECS:

CODE,DS:

DATA,ES:

DATA

STARTMOVAX,DATA

MOVDS,AX;初始化DS

MOVES,AX;初始化ES

LEASI,TABLE;SI指向TABLE

MOVCX,10;循环计数器

XORAX,AX;AX为中间结果

NEXT:

ADDAL,[SI];把一个数加到AL中

ADCAH,0;若有进位,则加到AH中

INCSI;指向下一个数

LOOPNEXT;若未加完继续循环

MOVSUM,AX;如结束,存结果于SUM

HLT;结束

CODEENDS;代码段结束

ENDSTART;汇编结束,起始运行地址为START

10.存储器块清零

Blockequ2220h

   movdptr,#Block;起始地址

movr0,#0;清256字节

clra

Loop:

movx@dptr,a

incdptr;指向下一个地址

djnzr0,Loop;记数减一

   ljmp$

end

11.二进制到BCD转换

;将A拆为三个BCD码,并存入Result开始的叁个单元

Resultequ20h

   org0

ljmpStart

BinToBCD:

movb,#100

divab

movResult,a;除以100,得百位数

mova,b

movb,#10

divab

movResult+1,a;余数除以10,得十位数

movResult+2,b;余数为个位数

ret

Start:

movsp,#40h

mova,#123

callBinToBCD

ljmp$

end

12.二进制到ASCII码转换

;将A拆为二个ASCII码,并存入Result开始的二个单元

Resultequ20h

   org0

ljmpStart

ASCIITab:

db'0123456789ABCDEF';定义数字对应的ASCII表

BinToHex:

movdptr,#ASCIITab

movb,a;暂存A

swapa

anla,#0fh;取高四位

movca,@a+dptr;查ASCII表

movResult,a

mova,b;恢复A

anla,#0fh;取低四位

movca,@a+dptr;查ASCII表

movResult+1,a

ret

Start:

movsp,#40h

mova,#1ah

callBinToHex

ljmp$

end

13.内存块移动

;移动3000H-->4000H,256字节

   movr0,#30h

movr1,#00h

movr2,#40h

movr3,#00h

movr7,#0

Loop:

movdph,r0

movdpl,r1

movxa,@dptr

movdph,r2

movdpl,r3

movx@dptr,a

cjner1,#0ffh,Goon1

incr0

Goon1:

incr1

   cjner3,#0ffh,Goon2

incr2

Goon2:

incr3

djnzr7,Loop

ljmp$

end

14.程序跳转表

   org0

ljmpStart

Func0:

mova,#0

ret

Func1:

mova,#1

ret

Func2:

mova,#2

ret

Func3:

mova,#3

ret

FuncEnter:

adda,acc;ajmp为二字节指令,调用号X2

movdptr,#FuncTab

jmp@a+dptr

FuncTab:

ajmpFunc0

ajmpFunc1

ajmpFunc2

ajmpFunc3

Start:

mova,#0

callFuncEnter

mova,#1

callFuncEnter

mova,#2

callFuncEnter

mova,#3

callFuncEnter

ljmp$

End

15.数据排序

Sizeequ10;数据个数

Arrayequ50h;数据起始地址

Changeequ0;交换标志

Sort:

movr0,#Array

movr7,#Size-1

clrChange

Goon:

mova,@r0

movr2,a

incr0

movB,@r0

cjnea,B,NotEqual

sjmpNext

NotEqual:

jcNext;前小后大,不交换

   setbChange;前大后小,置交换标志

xcha,@r0;交换

decr0

xcha,@r0

incr0

Next:

djnzr7,Goon

jbChange,Sort

ljmp$

end

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

当前位置:首页 > 表格模板 > 合同协议

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

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