微机原理与应用微机原理与接口技术复习资料期末复习完美整合版Word格式文档下载.docx

上传人:b****3 文档编号:17405336 上传时间:2022-12-01 格式:DOCX 页数:10 大小:29.54KB
下载 相关 举报
微机原理与应用微机原理与接口技术复习资料期末复习完美整合版Word格式文档下载.docx_第1页
第1页 / 共10页
微机原理与应用微机原理与接口技术复习资料期末复习完美整合版Word格式文档下载.docx_第2页
第2页 / 共10页
微机原理与应用微机原理与接口技术复习资料期末复习完美整合版Word格式文档下载.docx_第3页
第3页 / 共10页
微机原理与应用微机原理与接口技术复习资料期末复习完美整合版Word格式文档下载.docx_第4页
第4页 / 共10页
微机原理与应用微机原理与接口技术复习资料期末复习完美整合版Word格式文档下载.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

微机原理与应用微机原理与接口技术复习资料期末复习完美整合版Word格式文档下载.docx

《微机原理与应用微机原理与接口技术复习资料期末复习完美整合版Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《微机原理与应用微机原理与接口技术复习资料期末复习完美整合版Word格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。

微机原理与应用微机原理与接口技术复习资料期末复习完美整合版Word格式文档下载.docx

负责与存储器、I/O端口传送数据

执行部件(EU):

负责指令的执行

协调工作过程:

总线接口部件和执行部件并不是同步工作的,它们按以下流水线技术原则来协调管理:

①每当8086的指令队列中有两个空字节,或者8088的指令队列中有一个空字节时,总线接口部件就会自动把指令取到指令队列中。

②每当执行部件准备执行一条指令时,它会从总线接口部件的指令队列前部取出指令的代码,然后用几个时钟周期去执行指令。

在执行指令的过程中,如果必须访问存储器或者输入/输出设备,那么,执行部件就会请求总线接口部件进入总线周期,完成访问内存或者输入/输出端口的操作;

如果此时总线接口部件正好处于空闲状态,那么,会立即响应执行部件的总线请求。

但有时会遇到这样的情况,执行部件请求总线接口部件访问总线时,总线接口部件正在将某个指令字节取到指令队列中,此时总线接口部件将首先完成这个取指令的操作,然后再去响应执行部件发出的访问总线的请求。

③当指令队列已满,而且执行部件又没有总线访问请求时,总线接口部件便进入空闲状态。

④在执行转移指令、调用指令和返回指令时,由于程序执行的顺序发生了改变,不再是顺序执行下面一条指令,这时,指令队列中已经按顺序装入的字节就没用了。

遇到这种情况,指令队列中的原有内容将被自动消除,总线接口部件会按转移位置往指令队列装入另一个程序段中的指令。

3.什么是指令周期?

什么是总线周期?

什么是时钟周期?

它们之间的关系如何?

指令周期----CPU执行一条指令所需要的时间称为一个指令周期(InstructionCycle)。

总线周期----每当CPU要从存储器或I/O端口存取一个字节称为一次总线操作,相应于某个总线操作的时间即为一个总线周期(BUSCycle)。

时钟周期----时钟周期是CPU处理动作的最小时间单位,其值等于系统时钟频率的倒数,时钟周期又称为T状态。

它们之间的关系:

若干个总线周期构成一个指令周期,一个基本的总线周期由4个T组成,我们分别称为T1~T4,在每个T状态下,CPU完成不同的动作。

4.8086/8088CPU有哪些基本操作?

基本的读/写总线周期各包含多少个时钟周期?

什么情况下需要插入Tw周期?

应插入多少个Tw取决于什么因素?

①8086/8088CPU最小模式下的典型时序有:

存储器读写;

输入输出;

中断响应;

系统复位及总线占用操作。

②一个基本的CPU总线周期一般包含四个状态,即四个时钟周期;

4321TTTT、、、③在存储器和外设速度较慢时,要在之后插入1个或几个等待状态;

3TwT④应插入多少个取决于READY信号的状态,CPU没有在状态的一开始采样到READY信号为低电平,就会在和之间插入等待状态,直到采样到READY信号为高电平。

wT3T3T4TwT

5.试说明8086/8088工作在最大和最小模式下系统基本配置的差异。

8086/8088微机

系统中为什么一定要有地址锁存器?

需要锁存哪些信息?

解答:

最大模式配置和最小模式配置有一个主要的差别:

①就是在最大模式下,需要用外加电路来对CPU发出的控制信号进行变换和组合,以得到对存储器和I/O端口的读/写信号及对锁存器(8282)和对总线收发器(8286)等等的控制信号。

8288总线控制器就是完成上面这些功能的专用芯片。

②为多中断源的需要,常采用中断优先权控制电路(如Intel8259A)。

8086/8088系统一定要有地址锁存器――因为高四位地址和状态信号是从同一组引脚上分时送出的,低16位地址和数据是从同一组引脚上分时传输的,所以必须把地址信息锁存起来。

需要锁存的信息:

地址信号、7/SBHE和MIO/(8086为IOM/)信号进行锁存。

6.试简述8086/8088微机系统最小模式下从存器储读数据时的时序过程。

正常的存储器读总线操作占用4个时钟周期,通常将它们称为4个T状态即T1~T4。

①T1状态,IO/M=0,指出要访问存储器。

送地址信号A19-0,地址锁存信号ALE有效,用来控制8282锁存地址。

DT/R=0,控制8286/8287工作在接收状态(读)。

②T2状态,A19~A16送状态S6~S3,AD7~AD0浮空,准备接收数据。

同时,RD=0,表示要进行读操作,而DEN=0作为8286/8287的选通信号,允许进行数据传输。

③T3状态,从指定的存储单元将数据读出送AD7~AD0。

若存储器速度较慢,不能及时读出数据的话,则通过READY引脚通知CPU,CPU在T3的前沿采样READY,如果READY=0,则在T3结束后自动插入1个或几个等待状态TW,并在每个TW的前沿检测READY,等到READY变高后,就自动脱离TW进入T4。

④T4状态,CPU采样数据线,获得数据。

RD、DEN等信号失效。

7.8086/8088CPU中有哪些寄存器?

各有什么用途?

标志寄存器F有哪些标志位?

各在什么情况下置位?

寄存器功能:

数据寄存器,AX字乘法,字除法,字I/O;

BX查表转换;

CX串操作,循环次数;

DX字节相乘,字节相除,间接I/O

变址寄存器:

SI源变址寄存器,用于指令的变址寻址;

DI目的变址寄存器,用于指令的变址寻址;

指针寄存器:

SP堆栈指针寄存器,与SS一起来确定堆栈在内存中的位置;

BP基数指针寄存器,用于存放基地址,以使8086/8088寻址更加灵活.控制寄存器:

IP控制CPU的指令执行顺序;

PSW用来存放8086/8088CPU在工作过程中的状态;

段寄存器CS控制程序区;

DS控制数据区;

SS控制堆栈区;

ES控制数据区.标志寄存器F的标志位:

①控制标志:

OF、DF、IF、TF;

②状态标志:

SF、ZF、AF、PF、CF。

标志寄存器F的各标志位置位情况:

·

CF:

进位标志位。

做加法时出现进位或做减法时出现借位,该标志位置1;

否则清0。

PF:

奇偶标志位。

当结果的低8位中l的个数为偶数时,该标志位置1;

AF:

半进位标志位。

在加法时,当位3需向位4进位,或在减法时位3需向位4借位时,该标志位就置1;

该标志位通常用于对BCD算术运算结果的调整。

ZF:

零标志位。

运算结果各位都为0时,该标志位置1,否则清0。

SF:

符号标志位。

当运算结果的最高位为1时,该标志位置1,否则清0。

TF:

陷阱标志位(单步标志位)。

当该位置1时,将使8086/8088进入单步指令工作方式。

在每条指令开始执行以前,CPU总是先测试TF位是否为1,如果为1,则在本指令执行后将产生陷阱中断,从而执行陷阱中断处理程序。

该程序的首地址由内存的00004H~00007H4个单元提供。

该标志通常用于程序的调试。

例如,在系统调试软件DEBUG中的T命令,就是利用它来进行程序的单步跟踪的。

IF:

中断允许标志位。

如果该位置1,则处理器可以响应可屏蔽中断,否则就不能响应可屏蔽中断。

DF:

方向标志位。

当该位置1时,串操作指令为自动减量指令,即从高地址到低地址处理字符串;

否则串操作指令为自动增量指令。

OF:

溢出标志位。

在算术运算中,带符号的数的运算结果超出了8位或16位带符号数所能表达的范围时,即字节运算大于十127或小于-128时,字运算大于十32767或小于-32768时,该标志位置位。

CH028086/8088指令系统

1.Z=(W*X)/(R+6)(4)Z=((W-X)/5*Y)*2

MOVDX,0MOVAX,W

MOVAX,WMOVBX,X

MOVBX,XSUBAX,BX

MULBXMOVDX,0

PUSHAXMOVCL,5

MOVAX,RDIVCL

ADDAX,6MOVBX,Y

MOVCX,AXMULBX

POPAXMOVCL,2

DIVCXMULCL

MOVZ,AXMOVZ,AX

MOVZ+1,DXMOVZ+1,DX

2.编写一段程序,比较两个5字节的字符串OLDS和NEWS,如果OLDS字符串不同于NEWS字符串,则执行NEW_LESS,否则顺序执行。

编程如下,(说明:

左测程序为常规编法,两个字符串在一个数据段中;

右测的程序要求OLDS在数据段中,NEWS在附加段中,利用串操作的指令是可行的)

LEASI,OLDS;

LEASI,OLDS

LEADI,NEWS;

LEADI,NEWS

MOVCX,5;

MOVCX,5

NEXT:

MOVAL,[SI];

CLD

MOVBL,[DI];

REPECMPSB

CMPAL,BL;

JNZNEW_LESS

JNZNEW_LESS;

……

INCSI;

JMPEXIT

INCDI;

NEW_LESS:

LOOPNEXT;

……EXIT:

JMPEXIT

NEW_LESS:

……

EXIT:

3.若在数据段中从字节变量TABLE相应的单元开始存放了0~15的平方值,试写出包含有XLAT指令的指令序列查找N(0~15)的平方。

(设N的值存放在CL中)

MOVBX,OFFSETTABLE;

LEABX,TABLE;

MOVCL,N;

MOVAL,CL;

XLAT

4.有两个双字数据串分别存放在ASC1和ASC2中(低字放低地址),求它们的差,结果放在ASC3中(低字放低地址)。

ASC1DW578,400;

ASC2DW694,12;

ASC3DW?

,?

编程如下,LEASI,ASC1;

LEADI,ASC2;

LEABX,ASC3;

MOVCX,2;

CLC;

MOVAX,[SI];

MOVDX,[DI];

SBBAX,DX;

MOV[BX],AX;

INCSI;

INCDI;

INCBX;

LOOPNEXT

CH03汇编语言程序设计

1.下列语句在存储器中分别为变量分配多少字节空间?

并画出存储空间的分配图。

VAR1DB10,2;

VAR2DW5DUP(?

),0;

VAR3DB‘HOWAREYOU?

’,3DUP(1,2);

VAR4DD-1,1,0

字节空间----VAR1:

2;

VAR2:

12;

VAR3:

20;

VAR4:

12。

存储空间的分配图:

DS:

00000A02000000000000—000000000000484F

00105720204152452020—594F553F01020102

00200102FFFFFFFF0100—000000000000

2.假定VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误之处。

(1)ADDVAR1,VAR2

(2)SUBAL,VAR1(3)JMPLAB[CX](4)JNZVAR1(5)MOV[1000H],100(6)SHLAL,4

(1)两个操作数中至少有一个为寄存器;

(2)AL为字节,VAR1为字变量,不匹配;

(3)[]中不能用CX,LAB为标号,非变量;

(4)转向地址应为标号,不能是变量;

(5)目的操作数的类型不确定;

(6)SHL指令中,当所移位数超过1时,必须用CL或CX来取代所移位数。

3.数据定义语句如下所示:

FIRSTDB90H,5FH,6EH,69H;

SECONDDB5DUP(?

);

THIRDDB5DUP(?

)自FIRST单元开始存放的是一个四字节的十六进制数(低位字节在前),要求:

编一段程序将这个数左移两位后存放到自SECOND开始的单元,右移两位后存放到自THIRD开始的单元。

DATASEGMENT;

FIRSTDB90H,5FH,6EH,69H;

DATAENDS;

CODESEGMENT;

ASSUMECS:

CODE,DS:

DATA;

START:

MOVAX,DATA;

MOVDS,AX;

LEASI,FIRST;

LEADI,SECOND;

左移2位;

MOVAX,[SI];

AX=5F90H为低十六位数据;

MOVDX,[SI];

DX=696EH为高十六位数据;

PUSHDX;

保存原有的高十六位数据;

PUSHAX;

保存原有的低十六位数据;

ROLDX,CL;

将高位数据不带进位循环左移两位,即高2位数据在DL的低2位;

ANDDL,03H;

让DL中仅保存移出的高2位数据;

MOV[DI+4],DL;

将移出的高2位数据放入SECOND中的最高单元中;

ROLAX,CL;

将低位数据不带进位循环左移两位,即AX的高2位在AL的低2位;

ANDAL,03H;

让AL中仅保存移出的AX高2位数据;

MOVBL,AL;

将AL中的数据放入BL中保存;

POPAX;

弹出原有的低十六位数据;

POPDX;

弹出原有的高十六位数据;

SHLDX,CL;

将高位数据算术逻辑左移2位;

SHLAX,CL;

将低位数据算术逻辑左移2位;

ORDL,BL;

将AX中移出的高2位数据放入DX的低2位;

MOV[DI],AX;

MOV[DI+2],DX;

右移2位;

LEADI,THIRD;

保存原有的高十六位数据PUSHAX;

RORAX,CL;

将低位数据不带进位循环右移两位,即低2位数据在AH的高2位;

ANDAH,0C0H;

让AH中仅保存移出的低2位数据;

PUSHCX;

MOVCX,6;

SHRAH,CL;

POPCX;

MOV[DI],AH;

将移出的低2位数据放入THIRD中的最低单元中;

RORDX,CL;

ANDDH,0C0H;

让DH中仅保存移出的DX低2位数据;

MOVBL,DH;

将DH中的数据放入BL中保存;

SHRDX,CL;

SHRAX,CL;

ORAH,BL;

将DX中移出的低2位数据放入AX的高2位;

MOV[DI+1],AX;

MOV[DI+3],DX;

MOVAH,4CH;

INT21H;

CODEENDS;

ENDSTART;

4.在当前数据区从400H开始的256个单元中存放着一组数据,试编程序将它们顺序搬移到从A000H开始的顺序256个单元中。

ORG400H;

DAT1DB...;

256DUP(?

ORG0A000H;

DAT2DB...;

;

;

STACKSEGMENT;

STACKENDS;

ASSUMEDS:

DATA,CS:

CODE,SS:

STACK,ES:

START:

MOVAX,DATA;

MOVDS,AX;

CH3-14;

LEASI,DAT1LEADI,DAT2;

MOVCX,128;

AGAIN:

MOVAL,[SI];

MOV[DI],AL;

LOOPAGAIN;

CH3-15,将两个数据块逐个单元进行比较,若有错BL=00H,否则BL=FFH;

LEASI,DAT1;

LEADI,DAT2;

NEXT:

MOVBL,[DI];

CMPAL,BL;

JNZERROR;

MOVBL,0FFH;

JMPEXIT;

ERROR:

MOVBL,00H;

EXIT:

MOVAX,4C00H;

ENDSTART

5.试编程序将当前数据区从BUFF开始的4K个单元中均写入55H,并逐个单元读出比较,看写入的与读出的是否一致。

若全对,则将ERR单元置0H;

如果有错,则将ERR单元置FFH。

BUFFDB1000HDUP(?

ERRDB?

ASSUMECS:

CODE,DS:

将55H依次放入BUFF开始的4K个单元;

LEASI,BUFF;

MOVCX,1000HMOVAL,55H;

NTXT:

MOV[SI],AL;

取出与55H比较,全对则ERR=0,否则ERR=FFH;

LEADI,BUFF;

LEASI,ERR;

MOVCX,1000H;

NEXT1:

MOVAL,[DI];

CMPAL,55H;

JNZERROR;

若有一个不同,即置ERR=FFH;

LOOPNEXT1;

MOVAL,00H;

MOV[SI],AL;

全比较完无错,则置ERR=0;

MOVAL,0FFH;

MOV[SI],AL;

返回DOS;

MOVAH,4CH;

END

6.在上题中,如果发现有错时,要求在ERR单元中存放出错的数据个数,则程序该如何修改?

ERRDW?

MOVAL,55H;

取出与55H比较LEADI,BUFF;

MOVDX,0000H;

JZNEXT2;

若相同,则比较下一个;

INCDX;

否则将放出错个数的DX加1;

NEXT2:

LOOPNEXT1;

MOV[SI],DX;

7.试编写程序段,完成将数据区从0100H开始的一串字节数据逐个从F0H端口输出,已知数据串以0AH为结束符。

DATASEGMENT;

ORG0100H;

DATA1DBNDUP(?

将DATA1数据串中的数据取出并从F0H端口中输出;

LEASI,DATA1;

MOVCX,N;

MOVBL,0AH;

JZEXIT;

OUT0F0H,AL;

CODEENDSENDSTART;

8.内存中以FIRST和SECOND开始的单元中分别存放着两个4位用压缩BCD码表示的十进制数,低位在前。

编程序求这两个数的和,仍用压缩BCD码表示,并存到以THIRD开始的单元。

FIRSTDW3412H;

SECONDDW7856H;

THIRDDB?

?

LEASI,FIRST;

LEADI,SECOND;

LEABX,THIRD;

MOVCX,2;

MOVAL,BYTEPTR[SI];

MOVDL,BYTEPTR[DI];

ADCAL,DL;

DAA;

MOVBYTEPTR[BX],AL;

JCAA;

MOVBYTEPTR[BX],0;

AA:

MOVBYTEPTR[BX],1;

9.试编写程序实现将键盘输入的小写字母转换成大写字母并输出。

MESSDB'

THEINPUTISNOTCORRECT.'

0DH,0AH,'

$'

DAT

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

当前位置:首页 > 考试认证 > 从业资格考试

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

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