微机原理与应用微机原理与接口技术复习资料期末复习完美整合版.docx

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

微机原理与应用微机原理与接口技术复习资料期末复习完美整合版.docx

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

微机原理与应用微机原理与接口技术复习资料期末复习完美整合版.docx

微机原理与应用微机原理与接口技术复习资料期末复习完美整合版

CH01微型计算机概述

1.微型计算机由哪些部件组成?

各部件的主要功能是什么?

解答:

CPU由运算器,控制器(CU),协处理器,高速缓冲器,各种借口和控制部件组成。

运算器由算术逻辑部件(ALU)和Reg.组构成。

微型计算机(μC):

CPU+(RAM+ROM)+I/O接口+其他支持器件;各部分通过系统总线连接。

微型计算机系统(μCS):

μC+系统软件+应用软件+外设+总线接口+电源。

单片机:

CPU+MEM+I/O接口→集成在一个芯片上。

外围设备:

打印机、键盘、CRT、磁盘控制器等;微处理器:

(CPU);系统总线:

AB、CB、DB(功能:

为CPU和其他部件之间提供数据、地址和控制信息的传输通道);存储器:

只读存储器(ROM)、随机存储器(RAM)(功能:

用来存储信息);输入/输出(I/O)接口:

串/并行接口等(功能:

使外部设备和微型机相连);算术逻辑部件(ALU):

累加器、寄存器控制器;操作系统(OS):

系统实用程序:

汇编、编译、编辑、调试程序等;(注:

CPU的功能--①可以进行算术和逻辑运算;②可保存少量数据;③能对指令进行译码并执行规定的动作;④能和存储器、外设交换数据;⑤提供整修系统所需要的定时和控制;⑥可以响应其他部件发来的中断请示。

2.8086/8088CPU由哪两部分组成?

它们的主要功能各是什么?

是如何协调工作的?

解答:

总线接口部件(BIU):

负责与存储器、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;否则清0。

·AF:

半进位标志位。

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

该标志位通常用于对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;NEXT:

MOVAX,[SI];MOVDX,[DI];SBBAX,DX;MOV[BX],AX;INCSI;INCSI;INCDI;INCDI;INCBX;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;SECONDDB5DUP(?

);THIRDDB5DUP(?

);DATAENDS;CODESEGMENT;ASSUMECS:

CODE,DS:

DATA;START:

MOVAX,DATA;MOVDS,AX;LEASI,FIRST;LEADI,SECOND;MOVCX,2;CLC;;左移2位;MOVAX,[SI];AX=5F90H为低十六位数据;INCSI;INCSI;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位;LEASI,FIRST;LEADI,THIRD;MOVCX,2;CLC;MOVAX,[SI];AX=5F90H为低十六位数据;INCSI;INCSI;MOVDX,[SI];DX=696EH为高十六位数据;PUSHDX;保存原有的高十六位数据PUSHAX;保存原有的低十六位数据;RORAX,CL;将低位数据不带进位循环右移两位,即低2位数据在AH的高2位;ANDAH,0C0H;让AH中仅保存移出的低2位数据;PUSHCX;MOVCX,6;SHRAH,CL;POPCX;MOV[DI],AH;将移出的低2位数据放入THIRD中的最低单元中;RORDX,CL;将低位数据不带进位循环左移两位,即AX的高2位在AL的低2位;ANDDH,0C0H;让DH中仅保存移出的DX低2位数据;MOVBL,DH;将DH中的数据放入BL中保存;POPAX;弹出原有的低十六位数据;POPDX;弹出原有的高十六位数据;SHRDX,CL;将高位数据算术逻辑左移2位;SHRAX,CL;将低位数据算术逻辑左移2位;ORAH,BL;将DX中移出的低2位数据放入AX的高2位;MOV[DI+1],AX;MOV[DI+3],DX;MOVAH,4CH;INT21H;CODEENDS;ENDSTART;

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

解答:

DATASEGMENT;ORG400H;DAT1DB...;256DUP(?

);ORG0A000H;DAT2DB...;256DUP(?

);DATAENDS;;;STACKSEGMENT;STACKENDS;;;CODESEGMENT;ASSUMEDS:

DATA,CS:

CODE,SS:

STACK,ES:

DATA;START:

MOVAX,DATA;MOVDS,AX;;CH3-14;LEASI,DAT1LEADI,DAT2;MOVCX,128;AGAIN:

MOVAL,[SI];MOV[DI],AL;INCSI;INCDI;LOOPAGAIN;;CH3-15,将两个数据块逐个单元进行比较,若有错BL=00H,否则BL=FFH;LEASI,DAT1;LEADI,DAT2;MOVCX,128;NEXT:

MOVAL,[SI];MOVBL,[DI];CMPAL,BL;JNZERROR;INCSI;INCDI;LOOPNEXT;MOVBL,0FFH;JMPEXIT;ERROR:

MOVBL,00H;EXIT:

MOVAX,4C00H;INT21H;CODEENDS;ENDSTART

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

若全对,则将ERR单元置0H;如果有错,则将ERR单元置FFH。

解答:

DATASEGMENT;BUFFDB1000HDUP(?

);ERRDB?

;DATAENDS;;;CODESEGMENT;ASSUMECS:

CODE,DS:

DATA;START:

MOVAX,DATA;MOVDS,AX;;将55H依次放入BUFF开始的4K个单元;LEASI,BUFF;MOVCX,1000HMOVAL,55H;NTXT:

MOV[SI],AL;INCSI;LOOPNEXT;;取出与55H比较,全对则ERR=0,否则ERR=FFH;LEADI,BUFF;LEASI,ERR;MOVCX,1000H;NEXT1:

MOVAL,[DI];INCDI;CMPAL,55H;JNZERROR;若有一个不同,即置ERR=FFH;LOOPNEXT1;MOVAL,00H;MOV[SI],AL;全比较完无错,则置ERR=0;JMPEXIT;ERROR:

MOVAL,0FFH;MOV[SI],AL;;返回DOS;EXIT:

MOVAH,4CH;INT21H;CODEENDS;ENDSTART;END

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

解答:

DATASEGMENT;BUFFDB1000HDUP(?

);ERRDW?

;DATAENDS;;;CODESEGMENT;ASSUMECS:

CODE,DS:

DATA;START:

MOVAX,DATA;MOVDS,AX;;将55H依次放入BUFF开始的4K个单元;LEASI,BUFF;MOVCX,1000H;MOVAL,55H;NTXT:

MOV[SI],AL;INCSI;LOOPNEXT;;取出与55H比较LEADI,BUFF;LEASI,ERR;MOVDX,0000H;MOVCX,1000H;NEXT1:

MOVAL,[DI];INCDI;CMPAL,55H;JZNEXT2;若相同,则比较下一个;INCDX;否则将放出错个数的DX加1;NEXT2:

LOOPNEXT1;MOV[SI],DX;;;EXIT:

MOVAH,4CH;INT21H;CODEENDS;ENDSTART;END

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

解答:

DATASEGMENT;ORG0100H;DATA1DBNDUP(?

);DATAENDS;;;CODESEGMENT;ASSUMECS:

CODE,DS:

DATA;START:

MOVAX,DATA;MOVDS,AX;;将DATA1数据串中的数据取出并从F0H端口中输出;LEASI,DATA1;MOVCX,N;MOVBL,0AH;NTXT:

MOVAL,[SI];CMPAL,BL;JZEXIT;OUT0F0H,AL;INCSI;LOOPNEXT;;返回DOS;EXIT:

MOVAH,4CH;INT21H;CODEENDSENDSTART;END

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

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

解答:

DATASEGMENT;FIRSTDW3412H;SECONDDW7856H;THIRDDB?

?

?

;DATAENDS;;;STACKSEGMENT;STACKENDS;;;CODESEGMENT;ASSUMEDS:

DATA,CS:

CODE,SS:

STACK,ES:

DATA;START:

MOVAX,DATA;MOVDS,AX;LEASI,FIRST;LEADI,SECOND;LEABX,THIRD;MOVCX,2;CLC;AGAIN:

MOVAL,BYTEPTR[SI];MOVDL,BYTEPTR[DI];ADCAL,DL;DAA;MOVBYTEPTR[BX],AL;INCSI;INCDI;INCBX;LOOPAGAIN;JCAA;MOVBYTEPTR[BX],0;JMPEXIT;AA:

MOVBYTEPTR[BX],1;EXIT:

MOVAX,4C00H;INT21H;CODEENDS;ENDSTART

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

解答:

DATASEGMENT;MESSDB'THEINPUTISNOTCORRECT.',0DH,0AH,'$';DAT

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

当前位置:首页 > 高中教育 > 语文

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

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