微机原理期末考试重点总结备课讲稿Word文档格式.docx

上传人:b****4 文档编号:7814172 上传时间:2023-05-09 格式:DOCX 页数:25 大小:99KB
下载 相关 举报
微机原理期末考试重点总结备课讲稿Word文档格式.docx_第1页
第1页 / 共25页
微机原理期末考试重点总结备课讲稿Word文档格式.docx_第2页
第2页 / 共25页
微机原理期末考试重点总结备课讲稿Word文档格式.docx_第3页
第3页 / 共25页
微机原理期末考试重点总结备课讲稿Word文档格式.docx_第4页
第4页 / 共25页
微机原理期末考试重点总结备课讲稿Word文档格式.docx_第5页
第5页 / 共25页
微机原理期末考试重点总结备课讲稿Word文档格式.docx_第6页
第6页 / 共25页
微机原理期末考试重点总结备课讲稿Word文档格式.docx_第7页
第7页 / 共25页
微机原理期末考试重点总结备课讲稿Word文档格式.docx_第8页
第8页 / 共25页
微机原理期末考试重点总结备课讲稿Word文档格式.docx_第9页
第9页 / 共25页
微机原理期末考试重点总结备课讲稿Word文档格式.docx_第10页
第10页 / 共25页
微机原理期末考试重点总结备课讲稿Word文档格式.docx_第11页
第11页 / 共25页
微机原理期末考试重点总结备课讲稿Word文档格式.docx_第12页
第12页 / 共25页
微机原理期末考试重点总结备课讲稿Word文档格式.docx_第13页
第13页 / 共25页
微机原理期末考试重点总结备课讲稿Word文档格式.docx_第14页
第14页 / 共25页
微机原理期末考试重点总结备课讲稿Word文档格式.docx_第15页
第15页 / 共25页
微机原理期末考试重点总结备课讲稿Word文档格式.docx_第16页
第16页 / 共25页
微机原理期末考试重点总结备课讲稿Word文档格式.docx_第17页
第17页 / 共25页
微机原理期末考试重点总结备课讲稿Word文档格式.docx_第18页
第18页 / 共25页
微机原理期末考试重点总结备课讲稿Word文档格式.docx_第19页
第19页 / 共25页
微机原理期末考试重点总结备课讲稿Word文档格式.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

微机原理期末考试重点总结备课讲稿Word文档格式.docx

《微机原理期末考试重点总结备课讲稿Word文档格式.docx》由会员分享,可在线阅读,更多相关《微机原理期末考试重点总结备课讲稿Word文档格式.docx(25页珍藏版)》请在冰点文库上搜索。

微机原理期末考试重点总结备课讲稿Word文档格式.docx

全译码:

所有的系统地址线均参与对存储单元的译码寻址

特点:

采用全译码,每个存储单元的地址都是唯一的,不存在地址重复

译码电路可能比较复杂、连线也较多

部分译码:

只有部分(高位)地址线参与对存储芯片的译码

每个存储单元将对应多个地址(地址重复),需要选取一个可用地址

可简化译码电路的设计、但系统的部分地址空间将被浪费

存储芯片为什么要设置片选信号?

它与系统地址总线有哪些连接方式?

采用何种连接方式可避免地址重复?

采用哪些连接方式可节省用于译码的硬件?

解答:

片选信号说明该存储器芯片是否被选中正常工作,设置它可以比较方便地实现多个存储器芯片组成大容量的存储空间

存储器片选信号通常与CPU地址总线的高位地址线相关联,可以采用“全译码”、“部分译码”、“线选译码”方式

采用全译码方式可以避免地址重复

采用部分或线选译码可以节省译码硬件

8086微处理器的内部结构,EU、BIU的定义和作用,流水线。

BIU(总线接口单元):

由指令队列、指令指针、段寄存器、地址加法器和总线控制逻辑构成。

该单元管理着8088与系统总线的接口、负责CPU对存储器和外设进行访问。

EU(执行单元):

由ALU、通用寄存器、标志寄存器和指令译码逻辑等构成,它负责指令的译码、执行和数据的运算。

两个单元相互独立,分别完成各自操作。

两个单元可以并行执行,实现指令取指和执行的流水线操作

8086的寻址方式。

物理地址和逻辑地址的定义。

两者之间转换。

8086系统存储器采用分段管理方式。

(要求很熟练)

对于每个存储器单元都有一个唯一的20位地址,称为物理地址。

在8088的总线内部和用户编程时,所采用的“段地址:

偏移地址”形式,称为逻辑地址。

一个存储器单元可以拥有多个逻辑地址,但可能拥有唯一的物理地址。

转换过程:

先将段寄存器提供的16位段地址左移四位,低位补0,恢复为20位地址,然后与由各种寻址方式提供的16位偏移地址相加,即得到20位的物理地址。

8086微处理器的内部构成。

8086的寄存器结构,标志寄存器中每一个标志位的含义及应用。

8086复位时各寄存器的初始状态。

内部构成:

算术逻辑单元(运算器)、寄存器组、指令处理单元(控制器)

寄存器结构:

8086/8088共有8个的通用寄存器,1个标志寄存器,4个段寄存器和1个指令指针寄存器。

进位标志CF:

计算结果的最高有效位有进位,则CF=1,否则CF=0

溢出标志OF:

若算术运算的结果有溢出,则OF=1;

否则OF=0

全零标志位ZF:

若运算结果为全0,则ZF=1,否则ZF=0

符号标志CF:

运算结果最高位为1,则SF=1;

否则SF=0

奇偶标志位PF:

当运算结果最低字节中1的个数为零或偶数时,PF=1;

否则PF=0(奇校验)

辅助进位标志AF:

运算时D3位(低半字节)有进位或借位时,AF=1;

否则AF=0

方向标志DF:

存储地址自动增加,DF=1,否则DF=0

中断允许标志:

IF=1,则允许中断,IF=0,则禁止中断

陷阱标志TF:

TF=0,处理器正常工作;

TF=1,处理器每执行一条指令就中断一次

中断向量表。

掌握中断向量表的构成,计算中断类型号,中断服务程序入口地址。

中断的工作过程。

中断向量表是一种表数据结构,是中断向量号与其对应的中断服务程序入口之间的链接表。

该地址包括:

偏移地址IP、段地址CS(共32位)

每个中断向量的低字是偏移地址、高字是段地址,需占用4个字节(低对低,高对高)。

8088微处理器从物理地址000H开始到3FFH(1KB),依次安排各个中断向量,向量号从0到255。

256个中断向量所占用的1KB区域,称中断向量表

中断向量的存放首址=N*4

中断类型:

8088CPU具有哪些中断类型?

各种中断如何产生,如何得到中断向量号?

除法错中断:

在执行除法指令时,除数为0或商超过了寄存器所能表达的范围产生

指令中断:

在执行中断指令INTn时产生

溢出中断:

在执行溢出中断指令INTO时,溢出标志OF为1产生

单步中断:

单步标志TF为1,在每条指令执行结束后产生

非屏蔽中断:

外部通过NMI请求信号向微处理器提出请求时产生

可屏蔽中断:

外部通过INTR请求信号向微处理器提出请求,并在允许可屏蔽中断的条件下产生

(2)除法错中断、溢出中断、单步中断、非屏蔽中断的向量号是8086微处理器内部已经确定

指令中断的操作数n就是向量号

可屏蔽中断的向量号在响应中断时通过数据总线从外部获得

什么是8259A的中断结束字(EOI)?

(1)IRi被响应时,ISR中对应的Di位被置1;

(2)中断处理完毕,相应的Di位应置0。

(3)向8259A送中断结束指令,使ISR的某位清0,指令的内容叫作中断结束字。

8259A中IRR、IMR和ISR三个寄存器的含义

中断请求寄存器IRR:

保存8条外界中断请求信号IR0~IR7的请求状态

Di位为1表示IRi引脚有中断请求;

为0表示无请求

中断屏蔽寄存器IMR:

保存对中断请求信号IRi的屏蔽状态

Di位为1表示IRi中断被屏蔽(禁止);

为0表示允许

中断服务寄存器ISR:

保存正在被8259A处理的中断的状态

Di位为1表示IRi中断正在处理中;

为0表示没有被处理

中断的概念。

中断向量表的含义。

深入理解8259的工作方式,优先权设置、中断结束处理、中断源屏蔽、中断触发等等。

8259的初始化编程。

中断服务程序编写。

中断:

指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。

优先权设置:

在ISR的Di位置位期间,禁止再发生同级和低级优先权的中断,但允许高级优先权中断的嵌套

中断结束处理:

自动中断结束方式、普通中断结束方式、特殊中断结束方式;

中断向量表的含义:

计算机主机和I/O设备之间进行数据传送的方法。

重点掌握查询方式完成数据传送的流程,要会编程。

查询传送的特点是:

工作可靠,适用面宽,但传送效率低

查询输入接口(考电路):

代码如下:

movdx,8000h;

dx指向状态端口

Status:

inal,dx;

读状态端口

testal,01h;

测试标志位D0

jzstatus;

D0=0,未就绪,继续查询

incdx;

D0=1,就绪,DX指向数据端口

inal,dx;

从数据端口输入数据

中断传送:

中断传送是一种效率更高的程序传送方式;

中断过程的完成由中断系统(硬件,如8259和CPU)和中断服务程序(软件)共同控制完成

中断工作过程:

1、中断请求(外设)2、中断响应(CPU)

3、关中断(CPU)4、断点保护(CPU)

5、中断识别(软件/硬件)6、现场保护(用户)

7、中断服务(用户)8、恢复现场(用户)

9、开中断(用户/CPU)10、中断返回(IRET/用户)

最小组态的写总线周期时序:

如何限制只能输入小写字母(61h~7Ah,课本P22),否则要求重新输入。

.data

msgdb'

notalowercase,inputagain'

db0dh,0ah,'

$'

input:

movah,1;

输入小写字母

int21h

cmpal,61h

jlonce-again

cmpal,7Ah

jaonce-again

jmpconvert

once-again:

movdx,offsetmsg

movah,9

int21h

jmpinput

convert:

subal,20h;

转换为大写字母

……

采用查表法,实现一位16进制数转换为ASCII码显示

04h——34h(4)0bh——42h(B)

ASCIIdb30h,31h,32h,33h,34h,35h,36h,37h,38h,39h

对应0~9的ASCII码

db41h,42h,43h,44h,45h,46h

对应A~F的ASCII码

hexdb04h,0bh

假设两个16进制数

;

代码段

movbx,offsetASCII

BX指向ASCII码表

moval,hex

AL取得一位16进制数;

恰好就是ASCII码表中的位移

andal,0fh

只有低4位是有效的,高4位清0

xlat;

换码:

AL←DS:

[BX+AL]

movdl,al;

欲显示的ASCII码送DL

movah,2;

2号DOS功能调用

int21h;

显示一个ASCII码字符

moval,hex+1;

转换并显示下一个数据

andal,0fh

xlat

movdl,al

movah,2

int21h

编写一个源程序,在键盘上按一个键,将从AL返回的ASCII码值显示出来,如果按下ESC键则程序退出。

(可调用书中的HTOASC子程序)

HTOASCproc

andal,0fh;

al低四位保存待转;

换的16进制数

cmpal,9

jbehtoasc1

addal,37h;

是A~F,加37H

ret;

子程序返回

htoasc1:

addal,30h;

0~9,加30H

HTOASCendp

pushax

movcl,4

roral,cl

callHTOASC

calldisp_a_char

popax

把从键盘输入的一个小写字母用大写字母显示出来(大小写字母转换)。

movah,1;

int21h

subal,20h;

movdl,al

movah,2

int21h;

显示

写一个子程序,根据入口参数AL=0、1、2,依次实现对大写字母转换成小写、小写转换成大写或大小写字母互换。

欲转换的字符串在string中,用0表示结束。

lucaseproc

pushbx

movbx,offsetstring

cmpal,0

jecase0cmpal,1jzcase1cmpal,2jzcase2jmpdone

case0:

cmpbyteptr[bx],0jedone

cmpbyteptr[bx],’A’jbnext0

cmpbyteptr[bx],’Z’janext0

addbyteptr[bx],20h

next0:

incbx

jmpcase0

case1:

cmpbyteptr[bx],0

jedone

cmpbyteptr[bx],’a’

jbnext1

cmpbyteptr[bx],’z’

janext1

subbyteptr[bx],20h

next1:

jmpcase1

case2:

cmpbyteptr[bx],’A’jbnext2

cmpbyteptr[bx],’Z’janext20

jmpnext2

next20:

jbnext2

janext2

next2:

jmpcase2

done:

popbx

ret

lucaseendp

循环累加(调用子程序)

arraydb12h,25h,0f0h,0a3h,3,68h,71h,0cah,0ffh,90h

countequ$-array;

数组元素个数

resultdb?

校验和;

代码段(主程序)

movbx,offsetarray;

BX←数组的偏移地址

movcx,count;

CX←数组的元素个数

callchecksum;

调用求和过程

movresult,al;

处理出口参数

checksumproc

xoral,al;

累加器清0

sum:

addal,[bx];

求和

incbx;

指向下一个字节

loopsumRet

Checksumendp

计算AX中有符号数的绝对值

cmpax,0

jgenonneg;

条件满足(AX≥0),转移

negax;

条件不满足,求补(即绝对值P43)

nonneg:

movresult,ax;

保存结果;

不恰当的分支

jlyesneg;

条件满足(AX<0),转移

jmpnonneg

yesneg:

条件满足,求补

保存结果

设置两个变量maxay和minay存放最大和最小值

arraydw10

dw-3,0,20,900,587,-632,777,234,-34,-56

maxaydw?

存放最大值

minaydw?

存放最小值

leasi,array

movcx,[si];

取得元素个数

deccx;

减1后是循环次数

addsi,2movax,[si]movbx,ax

maxck:

addsi,2

cmp[si],ax;

与下一个数据比较

jleminck

movax,[si];

AX取得更大的数据

jmpnext

minck:

cmp[si],bx

jgenext

movbx,[si];

BX取得更小的数据

next:

loopmaxck;

计数循环

movmaxay,ax;

保存最大值

movminay,bx;

保存最小值

挑出数组中正数(不含0)和负数,分别形成正、负数组

DATASSEGMENT

countequ10

arraydw23h,9801h…ayplusdwcountdup(0)ayminusdwcountdup(0)

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

movsi,offsetarray

movdi,offsetayplus

movbx,offsetayminus

movax,ds

moves,ax

movcx,count

cld

again:

lodsw

cmpax,0

jlminus

jznext

minus:

xchgbx,di

stosw

xchgbx,di

next:

loopagain

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

8259A的初始化程序段(7.8)

mov al,13H;

写入ICW1:

设定边沿触发方式,单片方式

    mov dx,0FFDCH

    out dx,al

    jmp intr1

intr1:

mov al,90H;

写入ICW2:

设定IR0的中断向量号为90h

      mov dx,0FFDEH

      out dx,al

      jmp intr2

intr2:

mov al,1;

写入ICW4:

设定普通嵌套方式,普通中断方式

8259的初始化编程:

主片:

moval,11h;

写入ICW1

out20h,al

intr1:

moval,08h;

写入ICW2

out21h,al

intr2:

moval,04h;

写入ICW3

intr3:

moval,05h;

写入ICW4

从片:

out0a0h,al

intr5:

moval,70h;

out0a1h,al

intr6:

moval,02h;

intr7:

moval,01h;

out0a1h,al

试按如下要求分别编写8253的初始化程序,已知8253的计数器0~2和控制字I/O地址依次为204H~207H。

⑶使计数器2工作在方式2,计数值为02F0H。

moval,0b4h

movdx,207h

outdx,al

movax,02f0h

movdx,206h

outdx,al;

先写入低字节

moval,ah

后写入高字节

8255的初始化编程

要求:

A口:

方式1输入、CH口:

输出、CL口:

输入、B口:

方式0输出

方式控制字:

10110001B或B1H

初始化的程序段:

movdx,0fffeh;

假设控制端口为FFFEH

moval,0b1h;

方式控制字

outdx,al;

送到控制端口

 

某系统中8253芯片中计数器的0-2和控制字端口地址分别是FFF0H~FFF3H。

编写8253两个计数器初始化程序及两个计数器的连通图。

计数器0的计数值:

5M/1K=5000=1388H

方式控制字:

00100101=25H、2DH、35H、3DH(十进制计数)

00100100=24H、2CH、34H、3CH(二进制计数)

计数器1的计数值:

1000

01101001=69H、79H

(十进制计数)

01101000=68H、78H

(二进制计数)

MOVDX,0FFF3H

MOVAL,25H;

通道0,只写高字节,方式2,十进制

OUTDX,AL

MOVDX,0FFF0H

MOVAL,50H;

计数初值5000

MOVDX,0FFF3H

MOVAL,69H;

通道1,方式4

MOVDX,0FFF1H

MOVAL,10H;

计数初值1000

3、某字符输出设备(如打印机),其数据口和状态口的地址均为80H。

在读取状态时,当标志位D7=0时,表明该设备闲,可以接收一个字符,请编写利用查询方式进行数据传送的程序段。

要求将存放于符号地址addr处的一串字符(以$为结束标志)输出给该设备。

movbx,offsetaddr;

利用offset操作符,可在汇编过程中得到addr的偏移地址

again:

movah,[bx]

cmpah,’$’

jzdone

status:

inal,80h;

查询一次

testal,80h;

两个80h不一样

jnzstatus;

D7=1,表示设备忙,继续查询

moval,ah

out80h,al;

输出一个字节

jmpagain;

循环

……

如图10.23为用一片8255A控制8个8段共阴极LED数码管的电路。

现要求按下某个开关,其代表的数字(K1为1,K2为2,…K8为8)在数码管从左到右循环显示(已有一个延时子程序delay可以调用),直到按下另一个开关。

假定8255A的数据端口A、B、C及控制端口的地址依次为FFF8H~FFFBH。

编写完成上述功能的程序,应包括8255A的初始化、控制程序和数码管的显示代码表

显示代码表

tabledb0c0h;

对应0(任意)

db0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h;

对应1~8

8255A初始化

movdx,0fffbh

moval,10001001b;

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2