【汇编语言与微机原理】 期末半开卷复习整理(下)

2023-10-30 20:10

本文主要是介绍【汇编语言与微机原理】 期末半开卷复习整理(下),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

输入输出

8086采用I/O端口独立编址
in AL/AX,imm8/DX
out imm8/DX,AL/AX
大于0FFH的端口只能存在DX
读外设(查询)

status:in al,dxtest al,80H;//测标志位jz statusmov dx,100hin al,dx

写外设(查询)

status:mov dx,102Hin al,dxtest al,80Hjnz status;//D7=1,忙,继续查mov dx,100hmov al,charout dx,al

74LS273:锁存。输出锁存寄存器。
74LS244:缓冲。输入缓冲,输出锁存。
A 0 A_0 A0=0, R D ‾ = 1 \overline{RD}=1 RD=1,读IRR、ISR、查询自
A 0 A_0 A0=1, R D ‾ = 0 \overline{RD}=0 RD=0,读IMR
输入时序
在这里插入图片描述
输出时序
在这里插入图片描述

选通信号Ready将置1,状态口连在 D 7 D_7 D7上,选通信号置Ready

中断与8259

传送指令装入中断向量。

mov ax,0
mov es,ax
mov bx,N*4;//N为中断类型号
mov ax,offset intproc
mov es:[bx],ax
mov ax,seg intporc
mov es:[bx+2],ax
sti

内部中断:除法错误、溢出、指令单步、断点。
外部中断:NMI、INTR(高电平有效)。NMI类型号为2,边沿触发。
关中断情况:系统复位、中断被响应、CLI。

一条指令的结束是相应NMI的必要条件
普通屏蔽:IMR的 D i D_i Di为1,对应 I R i IR_i IRi屏蔽。
特殊屏蔽: I R i IR_i IRi被屏蔽时, I S R i ISR_i ISRi为0
中断结束: I S R ISR ISR某位为0
EOI:非自动中断结束,全嵌套清楚优先级最高位。
特殊:配合循环优先权,发EOI清楚ISR对应位。
缓冲:多片级联。非缓冲:单片。
IRR中断请求寄存器,1表示对应位有请求,响应后复位。
IMR中断屏蔽寄存器,0表示允许中断
ISR中断服务寄存器,1表示在被服务
PR优先级判别。
优先级固定方式:从高到低为 I R 0 IR_0 IR0, I R 1 IR_1 IR1,… I R 7 IR_7 IR7,完全嵌套
自动循环:初始 I R 0 , . . . , I R 7 IR_0,...,IR_7 IR0,...,IR7, I R i IR_i IRi被服务后, I R i IR_i IRi最低, I R i + 1 m o d 8 IR_{i+1\mod 8} IRi+1mod8最高
特殊循环:可设置初始最低优先级
普通全嵌套:禁止同级/低级优先权中断
特殊全嵌套:禁止低级中断,在主片。
S P ‾ / E N ‾ \overline{SP}/\overline{EN} SP/EN级联方式:主片 S P ‾ = 1 \overline {SP}=1 SP=1,从片 S P ‾ = 0 \overline{SP}=0 SP=0
I R 0 . . . I R 7 IR_0...IR_7 IR0...IR7中断请求。
C A S 0 . . . C A S 7 CAS_0...CAS_7 CAS0...CAS7级联引脚双相
C A S 2 . . . C A S 0 CAS_2...CAS_0 CAS2...CAS0:主片输出、从片输入、级联信号
例如
A 0 = 0 , W R ‾ = 0 A_0=0,\overline{WR}=0 A0=0,WR=0,写 I C W 1 , O C W 2 , O C W 3 ICW_1,OCW_2,OCW_3 ICW1,OCW2,OCW3.
A 0 = 1 , W R ‾ = 0 A_0=1,\overline{WR}=0 A0=1,WR=0,写 I C W 2 − I C W 4 , O C W 1 ICW_2-ICW_4,OCW_1 ICW2ICW4,OCW1
O C W 1 OCW_1 OCW1:中断屏蔽字寄存器,写

in al,81H
and al,11111101B;IR1开放中断
out 81H,al

O C W 2 OCW_2 OCW2:优先级循环方式和发中断结束命令
EOI=1发中断结束,清除相应位
O C W 3 OCW_3 OCW3:查询字

mov al,0AH;读IRR的OCW3
out 20H,al
in al,20H;读IRR到AL

中断服务子程序整体流程:保护现场、开中断、中断处理、关中断、恢复现场、中断返回。

intproc proc farpush axpush dsstimov ax,seg donemov ds,axin al,0a0h;读开关状态out 0c0h,al;输出控制ledcmp al,0ffhjnz exitint al,82h;中断屏蔽or al,00000100Bout 82h,al
exit:climov al,20H;EOIout 80H,alpop dspop axiret
intproc endp

8255

D 0 − D 7 D_0-D_7 D0D7数据线, A 0 − A 1 A_0-A_1 A0A1地址, C S ‾ \overline{CS} CS片选, P A 0 − P A 7 PA_0-PA_7 PA0PA7, P B 0 − P B 7 PB_0-PB_7 PB0PB7, P C 0 − P C 7 PC_0-PC_7 PC0PC7
A组:A口、C口高4位。B组:B口、C口低4位。
方式0:无条件/查询。
方式1/2:查询、中断
输入时,8255为数据缓冲。输出时,8255为数据锁存。可知已准备好数据。
方式1输入: S T B ‾ \overline{STB} STB选通(外设准备好数据,将数据锁存、输入)
IBF:输入缓冲区满则,输出
I N T R A INTR_A INTRA:中断请求,输出。
方式1输出: O B F ‾ \overline{OBF} OBF输入缓冲器满,可取走。
A C K ‾ \overline{ACK} ACK:外设响应,输入,低有效。
I N T R INTR INTR:中断请求,输出。
方式1输出时 O B F ‾ \overline{OBF} OBF有效时输出,外设接受后回送 A C K ‾ \overline{ACK} ACK
方式2时外设提供 A C K ‾ \overline{ACK} ACK后输出数据

短口 P C i PC_i PCi输入输出
A端口 P C 7 PC_7 PC7 O B F ‾ \overline{OBF} OBF
A端口 P C 6 PC_6 PC6 A C K A ‾ / I N T E A \overline{ACK_A}/INTE_A ACKA/INTEA
A端口 P C 5 PC_5 PC5 I B F A IBF_A IBFA
A端口 P C 4 PC_4 PC4 S T B A ‾ / I N T E A \overline{STB_A}/INTE_A STBA/INTEA
A端口 P C 3 PC_3 PC3 I N T R A INTR_A INTRA I N T R A INTR_A INTRA
B端口 P C 2 PC_2 PC2 S T B B ‾ / I N T E B \overline{STB_B}/INTE_B STBB/INTEB A C K B ‾ / I N T E B \overline{ACK_B}/INTE_B ACKB/INTEB
B端口 P C 1 PC_1 PC1 I B F B IBF_B IBFB O B F B ‾ \overline{OBF_B} OBFB
B端口 P C 0 PC_0 PC0 I N T R B INTR_B INTRB I N T R B INTR_B INTRB

输入时序图

在这里插入图片描述
输出时序图
在这里插入图片描述
方式控制字

D 7 D_7 D7 D 6 D_6 D6 D 5 D_5 D5 D 4 D_4 D4 D 3 D_3 D3 D 2 D_2 D2 D 1 D_1 D1 D 0 D_0 D0
1A方式高位A方式低位A输入输出 P C 7 − P C 4 PC_7-PC_4 PC7PC4输入输出B方式B输入输出 P C 3 − P C 0 PC_3-PC_0 PC3PC0输入输出

其中,0表示输出,1表示输入。

C口位控制字

D 7 D_7 D7 D 6 D_6 D6 D 5 D_5 D5 D 4 D_4 D4 D 3 D_3 D3 D 2 D_2 D2 D 1 D_1 D1 D 0 D_0 D0
0无意义无意义无意义选位选位选位清零/置1

例:
在这里插入图片描述

mov dx,303H
mov al,81H
out dx,al
mov al,0FH
out dx,al;(PC7=1)
prn:mov dx,302Hin al,dxtest al,04hjz prn;//查询输入
mov dx,300H;A口
mov al,ah;//ah=打印数据
out dx,al
mov dx,303H
mov al,0eH;STB#=0
out dx,al
nop
nop
mov al,0FH;STB#=1
out dx,al

8254/8253奇数骑

8254每个奇数骑内都有个计数单元、初值寄存器、输出锁存器。GATE控制奇数骑工作。
工作过程:设定工作方式、计数初值、硬件启动,计数初值送入奇数骑、每个clk使得奇数骑-1、计数结束。
方式2/3连续计数,GATE高电平计数,上升沿重新计数。
方式0/4由软件启动(重写计数初值)。1/5硬件启动(GATE上升沿),0/4在高电平计数。
out初始值:方式0在写控制后变低,其余变高。
方式1输出N个CLK负脉冲,方式5输出1个CLK负脉冲(与2/4波形相同,N-1高,1低)。
方式3:若计数值为偶数,输出 N 2 \frac N2 2N个clk高电平和低电平。若计数值为奇数,输出 N + 1 2 \frac{N+1}2 2N+1个高电平和 N − 1 2 \frac{N-1}2 2N1个低电平。
方式0:计数结束中断。1:可编程硬件触发单稳负脉冲发生器
方式2:速率发生器。3:方波速率发生器。4:软件触发选通信号发生。5:硬件选通发生。
读出控制字:只有8254有,8253没有。

D 7 D_7 D7 D 6 D_6 D6 D 5 D_5 D5 D 4 D_4 D4 D 3 D_3 D3 D 2 D_2 D2 D 1 D_1 D10
读出控制字110:锁存计数值0:锁存状态1:2#1:1#1:0#0
状态字OUTisNULL读写格式读写格式工作方式工作方式工作方式进制

输入时钟信号频率 F c l k F_{clk} Fclk,周期 T c l k T_{clk} Tclk,输出频率 F o u t F_{out} Fout,周期 T o u t T_{out} Tout
T o u t = T c l k N T_{out}=T_{clk}N Tout=TclkN, N = F c l k F o u t N=\frac{F_{clk}}{F_{out}} N=FoutFclk,先写控制字,再写初值
某工厂计件系统,装一个零件产生一个脉冲接 C L K 0 CLK_0 CLK0,装100个后扬声器发声,则奇数骑0方式0,奇数骑1在方式3。

mov al,10H
mov dx,PORT_CTRL
out dx,al
mov al,100
mov dx,PORT_0
out dx,al
mov al,76H
mov dx,PORT_CTRL
out dx,al
mov ax,2000
mov dx,PORT_1
out dx,al
mov al,ah;写高8位
out dx,al

数字信号与模拟信号

单极性电压输出: V o u t = ( − D / ( 2 8 ) ) ∗ V R E F V_{out}=(-D/(2^8))*V_{REF} Vout=(D/(28))VREF
双极性电压输出: V o u t = D − 2 7 2 7 ∗ V R E F V_{out}=\frac{D-2^7}{2^7}*V_{REF} Vout=27D27VREF
正负范围-5~5
ILE:数据输入,锁存允许
C S ‾ \overline{CS} CS:片选
W R 1 ‾ \overline{WR_1} WR1:写数据
X F E R ‾ \overline {X_{FER}} XFER数据传送控制
W R 2 ‾ \overline{WR_2} WR2:第二级写。当 X F E R ‾ = W R 2 ‾ = 0 \overline{X_{FER}}=\overline{WR_2}=0 XFER=WR2=0,开始转换
L E 1 = L E 2 = 1 LE_1=LE_2=1 LE1=LE2=1直通,否则缓冲。 I o u t I_{out} Iout输出电压
双缓冲控制:

mov dx,portx
out dx,xdata
mov dx,porty
out dx,ydata
mov ax,portcon
out dx,al
call delay

读8路电压转换

lea di,buf
mov cx,8
mov dx,300
convert:out dx,al;启动转换push dxmov dx,310H
state:in al,dx;读EOCtest al,20H;D5(EOC)为1?jz state
pop dx
in al,dx;读取结果
mov [di],al
add dx,2;下一模拟通道
add di,2
loop convert

0832锯齿波
N = V i n − V R E F − V R E F + − V R E F − ∗ 2 8 N=\frac{V_{in}-V^-_{REF}}{V^+_{REF}-V^-_{REF}}*2^8 N=VREF+VREFVinVREF28

mov dx,330H
mov al,00H
aga:out dx,alcall delayinc aljmp aga
delay procpush cxmov cx,10loop $pop cxret
delay endp

这篇关于【汇编语言与微机原理】 期末半开卷复习整理(下)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/310313

相关文章

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

MySQL中的表连接原理分析

《MySQL中的表连接原理分析》:本文主要介绍MySQL中的表连接原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、表连接原理【1】驱动表和被驱动表【2】内连接【3】外连接【4编程】嵌套循环连接【5】join buffer4、总结1、背景

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

Java Stream的distinct去重原理分析

《JavaStream的distinct去重原理分析》Javastream中的distinct方法用于去除流中的重复元素,它返回一个包含过滤后唯一元素的新流,该方法会根据元素的hashcode和eq... 目录一、distinct 的基础用法与核心特性二、distinct 的底层实现原理1. 顺序流中的去重

Python变量与数据类型全解析(最新整理)

《Python变量与数据类型全解析(最新整理)》文章介绍Python变量作为数据载体,命名需遵循字母数字下划线规则,不可数字开头,大小写敏感,避免关键字,本文给大家介绍Python变量与数据类型全解析... 目录1、变量变量命名规范python数据类型1、基本数据类型数值类型(Number):布尔类型(bo

Spring @Scheduled注解及工作原理

《Spring@Scheduled注解及工作原理》Spring的@Scheduled注解用于标记定时任务,无需额外库,需配置@EnableScheduling,设置fixedRate、fixedDe... 目录1.@Scheduled注解定义2.配置 @Scheduled2.1 开启定时任务支持2.2 创建

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可