汇编语言课件第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
汇编语言段寄存器的入门
第8章 汇编语言基础
8.4.5 其他伪指令(续)
1. NAME 格式:NAME 模块名 将模块名作为模块的名字。
第8章 汇编语言基础
8.4.5 其他伪指令(续) 2. TITLE (标题)伪指令,指定一个标题 格式:TITLE 文本 字符不超过80个 例: TITLE EXAMPLE PROGRAM
第8章 汇编语言基础
8.4.3 段结构伪指令 SS的装入
(1) STACK1 SEGMENT PARA STACK DW 20H DUP(?) STACK1 ENDS (2) STACK2 SEGMENT DW 30H DUP(?) TOP LABEL WORD STACK2 ENDS ... CODE SEGMENT ... MOV AX , STACK2 ;设置SS MOV SS , AX MOV SP , OFFSET TOP ;修改SP
第8章 汇编语言基础
8.4.5 其他伪指令(续) 6. ENEN 伪指令 定位偶地址。
第8章 汇编语言基础
8.4.5 其他伪指令(续) 内部标记符和外部标记符 7. PUBLIC 伪指令 格式:PUBLIC 符号1,符号2, ......
8. EXTRN 伪指令
EXTRN 符号 1:类型 ,符号 2: 类型, ...
例20:
第8章 汇编语言基础
模块1: PUBLIC NUM1 , STRING , SUB1 , LOOP1 DATA1 SEGMENT NUM1 EQU 1234H ... STRING DB ‘CHARACTER STRING’ ... DATA1 ENDS ... CODE1 SEGMENT ... LOOP1: SUB1 PROC FAR ... SUB1 ENDP CODE1 LOOP1: … … LOOP LOOP1 CODE1 ENDS
《汇编语言程序设计》课件(上)
课程性质与设置目的要求《汇编语言程序设计》课程是计算机专业高等教育的专业基础必修课程。
通过该课程的学习,使学生掌握汇编语言程序设计的基本方法和技术,从而加深对计算机系统的认识和理解;以有利于今后计算机相关专业课程的学习。
同时本课程作为一门面向机器硬件的软件设计技术,可以在计算机应用开发中得到应用,能够帮助学生今后从事有关计算机应用及研究工作。
本课程采用汇编程序MASM 6.0版,强调对基本指令的理解和掌握,重点介绍16位机的指令系统和程序设计技术。
要求掌握基本的编程技术,强调上机实验,熟练进行程序的调试,培养学生的动手能力。
先修课程要求:本课程的先修课程为《数字逻辑》、《高级语言程序设计》。
本课程学分为4分。
总学时数为90,其中54学时为课堂教学,36学时为上机实践。
教学手段:课堂教学运用多媒体教学手段和上机实践等相结合。
考核方法:采用笔试,结合平时成绩。
考试成绩占70%,平时成绩占30%引言:●关于本书●我们要学习本书中的哪些内容?●时间安排●平时成绩计算方法目录第一章基础知识1.1汇编语言简介1.1.1什么是汇编语言1.1.2为什么要学习汇编语言1.2计算机中数据的表示1.3计算机组织1.3.1计算机系统概述1.3.2 中央处理机CPU1.3.3 存储器1.3.4 外部设备第二章汇编语言程序实例及上机操作2.1汇编语言程序实例2.2工作环境及上机操作2.3 DEBUG主要命令2.4 常用的DOS命令2.5 几个常用的DOS系统功能调用(INT 21H)第三章指令系统和寻址方式3.1 寻址方式3.2 指令系统第四章汇编语言程序格式4.1汇编程序功能4.2 伪操作4.3 程序格式4.4 汇编语言上机第五章循环与分支程序设计5.1 循环程序设计5.2 分支程序设计第六章子程序6.1 子程序的设计方法6.2 子程序的嵌套(见书)6.3 子程序举例第七章高级汇编语言技术第一章基础知识1.1 汇编语言简介1.1.1什么是汇编语言机器语言汇编语言高级语言1.1.2为什么要学习汇编语言1.2计算机中数据的表示1.2.1 不同进位计数制及其相互转换二进制及进制十进制数: 123.6(D)=1×102+2×101+3×100+6×10 -1各位权值10k二进制数: 101101(B) = 1×25+1×23+1×22+1×20=45(D) 各位权值2k十六进制数: 5F(H)=5×161+15×160(D)各位权值16k1.2.2 二进制数、十进制数和十六进制数转换(1)二进制数转换为十进制数(按权展开)1101.1(B)=23+22+20+2-1=8+4+1+0.5=13.5(D)(2)十进制数转换为二进制数. 降幂法:(适用于数值不大的数)13.5(d)=8+4+1+0.5 =1101.1100001000001+ 0.1 1101.1★对于小数有:例1.2:N=0.8125D (降幂法)2-12-22-32-40.5 0.25 0.125 0.0625计算过程:0.8125- 0.5 =0.3125 (b1=1)0.3125- 0.25 =0.0625 (b2=1)0.0625- 0.125 <0 (b3=0)0.0625- 0.0625=0 (b4=1)N=0.8125D=0.1101B例1.4: N=0.8125D (乘2取整法)0.8125 × 2 1.6250.625 × 2 1.250.25 × 2 0.50.5 × 2 1.00.8125D =0.1101B★对于整数有:除法:(除2取余法,对整数而言)N=13 除2即二进制数去掉最右一位13/2=6 余1 (余1表明N是奇数,得到一位)6/2=3 余0 商为6即可写出1103/2=1 余11/2=0 余113(d)=1101(b)1011B = 11D1101B = 13D(3)十六进制数与二进制数转换每四位二进制数表示一位十六进制数例:0011 0101 1011 1111 3 5 B F即0011010110111111(B)= 3 5 B F(H)(4)十六进制数与十进制数转换方法同二进制数与十进制数转换,不过是基数为十六进制数所对应的权。