汇编语言课件第8章
第8章-Cortex-M3组成和结构(上课版)

MSR BASEPRI, r0
; Write R0 into BASEPRI register
MSR PRIMASK, r0
; Write R0 into PRIMASK register
MSR FAULTMASK, r0 ; Write R0 into FAULTMASK register
在用户访问级,PRIMASK, FAULTMASK, 和BASEPRI寄存 器不能被置位。
堆栈指针用来进行堆栈存储器操作,比如PUSH和POP。
堆栈存储器的基本概念
8.3 Cortex-M3 基础
汇编语言的语法:
PUSH {R0} POP {R0}
; R13R13-4, then Memory[R13] R0 ; R0 Memory[R13], then R13 R13+4
你可以在一条指令中PUSH或POP多个寄存器:
ARM处理器广泛用于消费类电子产品,包括掌上电 脑,移动电话,数字媒体和音乐播放器。
8.1 嵌入式系统简介
ARM公司的业务一直是出售IP核。 最成功的ARM7TDMI已经有亿万售出。 现在或先前ARM授权的公司包括: Alcatel-Lucent, Apple Inc., Atmel, Broadcom, Freescale, Intel ,Samsung, TI, ect.
Example:
MRS r0, BASEPRI
; Read BASEPRI register into R0
MRS r0, PRIMASK
; Read PRIMASK register into R0
MRS r0, FAULTMASK ; Read FAULTMASK register into R0
IBM—PC(80x86)汇编语言与接口技术-第8章 输入输出程序设计

8259A
76 5 4
中断屏蔽寄存器21H
打 印 机
3210
IN AL, 21H AND AL,0FDH
键定 时
盘器
OUT 21H,AL
76 5 4
中断命令寄存器20H
EOI
3 2 1 0 MOV AL, 20H OUT 20H, AL
11
中断向量表
00000 类型0的(IP) 类型0的(CS)
00004 类型1的(IP) 类型1的(CS)
speaker_on endp
speaker_off proc push ax in al, 61h and al, 0fch out 61h, al pop ax ret
speaker_off endp
end
8
3. 中断传送方式
中断源:引起中断的事件
外中断(硬中断):
外设的 I/O 请求 —— 可屏蔽中断 电源掉电 / 奇偶错 —— 非屏蔽中断
15
例:用 DOS 功能调用存取中断向量
MOV AL, N
MOV AH, 35H
INT 21H
PUSH BX
; 保存原中断向量
PUSH DS
MOV AX, SEG INTHAND
MOV DS, AX
MOV DX, OFFSET INTHAND
MOV AL, N
MOV AH, 25H
08 系统定时器 09 键盘 0A 彩色/图形接口 0B 保留 0C 串行通讯口 0D 保留 0E 软盘 0F 打印机
10
中断的条件:
设置CPU中断允许位:
FLAGS 中的 IF 位 = 1 允许中断 ( STI ) = 0 禁止中断 ( CLI )
汇编语言第8章输入输出接口

(1) I/O接口的基本概念 (2) I/O控制方式 (3) DMA接口技术 (4) 可编程DMA控制器8237
8.1 I/O接口概述
8.1.1 I/O接口的基本功能
(1) 数据缓冲 (2) 提供联络信息 (3) 信号与信息格式的转换 (4) 设备选择 (5) 中断管理 (6) 可编程功能
IOW
图8.4 片选信号的产生
8.2 I/O控制方式
主机与外围设备之间的数据传送控制方式(即I/O控制 方式)主要有三种:
程序控制方式、中断控制方式和直接存储器存取 (DMA)方式。
8.2.1 程序控制方式
程序控制方式是指在程序控制下进行的数据传送方式。 它又分为无条件传送和程序查询传送两种。
地址空间 200~20FH 210~217H 218~2F7H 2F8~2FFH 300~31FH 320~32FH 330~377H 378~37FH
器件/接口适配器 地址空间
游戏卡
380~38FH
扩充部件
390~3AFH
未用
3B0~3BFH
异步通信卡(COM2) 3C0~3CFH
未用
3D0~3DFH
(5) DMA控制器发出存储器写信号MEMW,将数据传送 到由地址总线上的地址所指向的内存单元;
(6) DMA控制器放弃对总线的控制权;
(7) 地址寄存器加1;
(8) 字节计数寄存器减1;
(9) 如果字节计数寄存器的值不为零,则返回第一步,否 则结束。
第8章 作业
8.1 8.2 8.3 8.5 8.6 8.7 8.11
硬盘卡
3E0~3EFH
未用
3F0~3F7H
打印卡
3F8~3FFH
目标代码的生成第8章

8.1.2 目标代码
本章采用汇编语言代码作为目标代码,但不针对某种特 定的目标机指令系统或汇编语言来生成目标代码,而是假设 有一台计算机,其指令系统等均按某种需要而设定,为教学 目的往往采取这种虚拟机目标代码形式。
2.按真转编写程序
8.2.2 虚拟机的汇编指令
3.按假转编写程序
8.3 从中间代码生成目标代码
8.3.1 从逆波兰表示生成目标代码 8.3.2 从四元式序列生成目标代码
8.3.1 从逆波兰表生成目标代码
从表达式的逆波兰表示生成相应的目标代码的算法可给出如下。 首先设立一个运算分量栈(栈),用来存放暂时不能处理的运算 分量的名(即工作单元地址)以及中间运算结果的名(即存放中间结 果的工作单元地址或累加器AC)。 其具体算法步骤如下。 从左到右扫描所给定的逆波兰表达式中的每个符号: 若扫描到运算分量,则将其下推入运算分量栈。 若扫描到运算符,按该运算符是几目运算,把运算分量栈 中相应个数的栈顶元素取出,生成该运算相应的目标代码,此后 栈上退去相应个数的运算分量,运算结果存放在“AC”中,把“AC” 标志入运算分量栈。 如此继续,直到整个逆波兰表达式处理完毕为止。
该虚拟机是一台地址单累加器的计算机,用“AC”表示该 累加器;设OP为操作码,d为地址,则指令: 0P d
表示 AC OP d=>AC
即累加器AC中的内容与d中的内容进行某种运算,结果送 到累加器AC中;其内存容量足够大;提供了21条符号汇 编指令。
8.2.2 虚拟机的汇编指令
虚拟机的汇编指令如表8.1所示。
汇编语言第8章答案 沈美明

第八章输入输出程序设计1、写出分配给下列中断类型号在中断向量表中的物理地址。
(1)INT 12H (2)INT 8答:(1)00048H (2)00020H2、用CALL指令来模拟实现INT 12H显示字符T的功能。
答:MOV AH, 02MOV DL, ‘T’MOV BX, 0MOV DS,BXMOV BX, 21H * 4CALL FAR PTR [BX]3、写出指令将一个字符数据输出到端口25H。
答:MOV AL, 12HOUT 25H, AL4、写出指令将一个字数据从端口1000H输入。
答:MOV DX, 1000HIN AX, DX8、给定(SP)=1000,(SS)=0300,(FLAGS)0240,以下存储单元的内容为(00020)=0040,(00022)=0100,在段地址为0900及偏移地址为00A0的单元中有一条中断指令INT 8指令后,SP,SS,IP,FLAGS的内容是什么?答:(SP) = 00FA(SS) = 0300(IP) = 0040(FLAGS) = 00409、类型14的中断向量在存储器的哪些单元里?答:14H*4 = 50H ,∴ (00050H)= 偏移地址,(00052H)= 段地址10、假设中断类型的中断处理程序的首地址为INT_ROUT,试写出主程序中为建立这一中断相量而编制的程序段。
答:PUSH DSMOV AX, SEG INT_ROUTMOV DS, AXMOV DX, OFFSET INT_ROUTMOV AL, 09MOV AH, 25HINT 21HPOP DS13、在8.12题中假设所有的中断处理程序中都没有STI指令,而他们的IRET指令都可以由于FLAGS出栈而使IF置1,则各设备的中断处理程序的运行次序应是怎样的?答:D3→D2→D4→D5→D1→D3→D5。
第8章 串并行通信

微型计算机各种接口框图
微机接口电路图
2.什么是I/O接口(电路)?
I/O接口是位于系统与外设间、用来协助 CPU实现CPU与外设之间的数据传送和 控制任务的逻辑电路 PC机系统板的可编程接口芯片、I/O总 线槽的电路板(适配器)都是接口电路
CPU
接口 电路
I/O 设备
3.为什么需要I/O接口(电路)?
数据端口
• 用于中转数据信息。一种情况是CPU通过数据总线,将待传送 给外设的数据先传送到数据端口,然后由I/O设备通过与I/O 接口电路相连接的数据线取得该数据 • 另一种情况是I/O设备首先将输入数据锁存于数据端口,然后, CPU通过数据端口将该数据读入CPU中。数据端口一般既有输 出寄存器(或称输出锁存器),又有输入寄存器(或称输入 锁存器)
一、统一编址
从内存空间划出一部分地址空间留给I/O设备编址,CPU把
I/O端口所指的寄存器当作存储单元进行访问,直接用访问内存 的指令访问I/O寄存器,这种I/O端口的编址方式被称之为统一
编址,或称为存储器映像的I/O编址方式。
统一编址优缺点 优点:不需要设立专门的I/O指令,用访问内存的指令就可 以访问外设,指令类型多,功能齐全,还可以对端口进行算术 运算,逻辑运算以及移位操作等。I/O端口空间不受限制 缺点:是I/O端口占用了内存空间,减少了内存容量
住址的总 线 地址总线
READY
M/IO
图8.2 查询式输入接口电路
WR
条件传送方式
数 据 锁 存 器
选通信号
数据总线
WR 地址 总线
输 出译码
Q
R
D +5V
RD M/IO
状 态 寄 存 器 图8.3 查询式输出的接口电路
汇编语言程序设计教程第4版课件第8章
与宏有关的操作符
(1)连接操作符(&) • 在宏定义中,可以用连接操作符&作为形参的前 缀或后缀。在宏展开时,&符前后的两个符号连 接在一起构成一个新的符号。这个连接的功能对 修改某些符号是很有用的。 (2)字符串传递操作符(< >) • 在宏调用时,若某个实参中包含逗号或空格等间 隔符,则必须用字符串传递操作符将该实参括起 来,以保证其完整性。这样就可以将该实参作为 一个单一的参数而不是多个参数了。
2018/9/26 汇编语言程序设计教程 3
宏定义与宏调用
• 宏是具有宏名的一段汇编语句序列。宏的 定义相当于C语言中的预定义语句DEFINE, 定义一个标识符来代表一组指令序列。 • 在汇编时,汇编程序用对应的代码序列替 代宏指令。
2018/9/26
汇编语言程序设计教程
4
宏定义的格式
宏定义是用一组伪指令来实现的。其格式是:宏名 MACRO [形式参数表] ┇ (宏体) ENDM
2018/9/26 汇编语言程序设计教程 17
定义宏库的原则
• • • • • 宏尽量具有通用性; 宏定义中的标号必须用 LOCAL 伪指令说明; 要对宏中使用的每一个寄存器进行保护; 附有必要的使用说明; 宏库文件是文本文件,其扩展名无严格限 制,可由用户定义。
2018/9/26
汇编语言程序设计教程
2018/9/26 汇编语言程序设计教程 25
不定重复汇编伪指令IRP
IRP的格式为: IRP 形参,<参数表> ┇ (重复体) ENDM • IRP的功能是使汇编程序对重复体作重复汇编,汇编时, 依次将参数表中的参数取出代替形参,重复汇编的次数等 于参数表中参数的个数。 • IRP 和 ENDM 必须成对出现,重复体部分的语句序列的重 复次数由参数表中的参数个数决定,参数之间应用逗号分 隔,用参数表中的参数取代形参后得到的应该是有效的指 令序列。
第8章 汇编语言程序开发与调试
第8章 汇编语言程序开发与调试
8.1 汇编语言程序开发过程 8.2
第8章 汇编语言程序开发与调试
8.1 汇编语言程序开发过程
返回本章首页
第8章 汇编语言程序开发与调试
汇编语言开发过程
(1)编写程序,建立扩展名为.asm的汇编源程
序文件。
(2)对源程序进行汇编,生成目标文件(.obj)。
;------------------- 子程序ASCII结束--------------------------------------------
另外,对于大多数汇编语言程序都需通过调试才能检验 程序执行结果的。下面我们讨论汇编语言程序的调试方法。
返回本节
第8章 汇编语言程序开发与调试
8.2 汇编语言程序的调试方法
命令来调试程序。
返回本节
第8章 汇编语言程序开发与调试
3. DEBUG的主要命令
在输入提示符“-”后,键入?,然后回车,可以显示 DEBUG命令一览表。下面介绍其中得主要命令。 (1) 显示存储单元的命令D(DUMP),格式为:
-D[address]或_D[range]
例如,按指定范围显示存储单元内容的方法为: -d 100 120 18E4:0100 c7 06 04 02 38 01 c7 06-06 02 00 02 c7 06 08 02 G ...8.G.....G ... 18E$:0110 02 02 bb 04 02 e8 02 00-CD 20 50 51 56 57 8B 37.. ; .. h ..M PQVW. 7 18E4:0120 8B
图 8-7 编译界面
第8章 汇编语言程序开发与调试
同样直接输入demo.obj即可。在连接过程中 会提示我们是否需要生成映像文件.map和库文 件.lib,如下图8-8所示。一般不需要,可以直接 键入Enter跳过去。
汇编教程,汇编指令详解
A 0 0 1 1
B 0 1 0 1
AvB 0 1 1 1
21
1.4.3 “非”运算(NOT) 如变量为A,则它的“非”运算的结果用 A来 表示。“非”运算规则可用下表说明: A A 0 1 1 0
22
1.4.4 “异或”运算(XOR Exclusive—OR)
“异或”运算可用符号 来表示。 运算规则:即当两个变量的取值相异时,它们 的“异或” 结果为1。
13
用补码表示数时的符号扩展问题
符号扩展:将一个数从位数较少扩展到 位数较多。正数的符号扩展:高位补0, 负数的符号扩展:高位补1。
王爽汇编语言第二版(全部)
1.5 指令和数据
指令和数据是应用上的概念。 在内存或磁盘上,指令和数据没有
任何区别,都是二进制信息。
本课件由汇编网()制作提供
1.5 指令和数据
二进制信息: 1000100111011000 ─> 89D8H (数据)
1000100111011000 ─> MOV AX,BX (程序)
1KB=1024B 1MB=1024KB 1GB=1024MB 1TB=1024GB
磁盘的容量单位同内存的一样,实际上 以上单位是微机中常用的计量单位。
本课件由汇编网()制作提供
1.7 CPU对存储器的读写
CPU要想进行数据的读写,必须和外部器 件(标准的说法是芯片)进行三类信息 的交互:
计算机能读懂的只有机器指令,那么如 何让计算机执行程序员用汇编指令编写 的程序呢?
本课件由汇编网()制作提供
用汇编语言编写程序的工作过程
本课件由汇编网()制作提供
1.3 汇编语言的组成
汇编语言由以下3类组成:
1、汇编指令(机器码的助记符) 2、伪指令 (由编译器执行) 3、其它符号(由编译器识别)
(4)在存储器中指令和数据没有任何区 别,都是二进制信息。
本课件由汇编网()制作提供
1.1节~1.10节 小结
(5)存储单元从零开始顺序编号。
(6)一个存储单元可以存储 8 个 bit (用作单位写成“b”),即 8 位二进制 数。
(7)1B = 8b
1KB = 1024B
示例 应用8086CPU完成运算: S = 768 + 12288 – 1280
本课件由汇编网(768 + 12288 - 1280
机器码: 101100000000000000000011 000001010000000000110000 001011010000000000000101