第五讲 汇编语言程序设计
合集下载
第5章 汇编语言程序设计20PPT课件

第5章 汇编语言程序设计
第5章 汇编语言程序设计
5.1 汇编语言的基本概念
汇编语言是一种采用助记符表示的程序设计语言, 即用助记符来表示指令的操作码和操作数,用标 号或符号代表地址、常量或变量。
汇编语言编写的程序能够直接利用硬件系统的特 性直接对位、字节、字寄存器或存储单元、I/O端 口进行处理,同时也能直接使用CPU指令系统提供 的各种寻址方式。
(小于)、GT(大于)、LE(小于等于)、GE (大于等于) (4)分析运算符:SEG、OFFSET、TYPE、SIZE和 LENGTH (5)合成运算符:PTR、THIS、SHORT
5.3 伪指令语句
5.3.1 数据定义伪指令 5.3.2 符号定义伪指令 5.3.3 段定义伪指令 5.3.4 模块定义与连接伪指令 5.3.5 处理器选择伪指令
汇编程序时最早也是最成熟的一种系统软件。 汇编程序的功能如下:
用汇编语言编 写的源程序
汇编程序
目标程序
5.2汇编语言源程序的格式
5.2.1 分段结构 5.2.2 汇编语言语句的类型和格式
5.2.1 分段结构
汇编语言源程序的结构是分段结构形式,一个汇 编语言源程序由若干段(SEGMENT)组成,每个段 以SEGMENT语句开始,以ENDS语句结束。整个源 程序的结尾是END语句。
5.3.1 数据定义伪指令
数据定义伪指令的用途是定义一个变量的类型, 给操作数赋值,或者仅给变量分配存储单元而不 赋予特定的值
数据定义伪指令的一般格式为:
[变量名] 作数……]
伪指令定义符
操作数[,操
数据定义伪指令定义符后面的操作数可以是 常数、表达式或字符串,但每项操作数的值不能 超过由伪指令定义符所定义的数据类型限定的范 围。
第5章 汇编语言程序设计
5.1 汇编语言的基本概念
汇编语言是一种采用助记符表示的程序设计语言, 即用助记符来表示指令的操作码和操作数,用标 号或符号代表地址、常量或变量。
汇编语言编写的程序能够直接利用硬件系统的特 性直接对位、字节、字寄存器或存储单元、I/O端 口进行处理,同时也能直接使用CPU指令系统提供 的各种寻址方式。
(小于)、GT(大于)、LE(小于等于)、GE (大于等于) (4)分析运算符:SEG、OFFSET、TYPE、SIZE和 LENGTH (5)合成运算符:PTR、THIS、SHORT
5.3 伪指令语句
5.3.1 数据定义伪指令 5.3.2 符号定义伪指令 5.3.3 段定义伪指令 5.3.4 模块定义与连接伪指令 5.3.5 处理器选择伪指令
汇编程序时最早也是最成熟的一种系统软件。 汇编程序的功能如下:
用汇编语言编 写的源程序
汇编程序
目标程序
5.2汇编语言源程序的格式
5.2.1 分段结构 5.2.2 汇编语言语句的类型和格式
5.2.1 分段结构
汇编语言源程序的结构是分段结构形式,一个汇 编语言源程序由若干段(SEGMENT)组成,每个段 以SEGMENT语句开始,以ENDS语句结束。整个源 程序的结尾是END语句。
5.3.1 数据定义伪指令
数据定义伪指令的用途是定义一个变量的类型, 给操作数赋值,或者仅给变量分配存储单元而不 赋予特定的值
数据定义伪指令的一般格式为:
[变量名] 作数……]
伪指令定义符
操作数[,操
数据定义伪指令定义符后面的操作数可以是 常数、表达式或字符串,但每项操作数的值不能 超过由伪指令定义符所定义的数据类型限定的范 围。
微机原理与汇编语言第5章汇编语言程序设计

(2) 约定段寄存器和段的关系(即物理段和逻辑 段的关系,使用一个或多个ASSUME语句实现)
(3) 装填段寄存器(只装填数据型段寄存器)
(4) 设置返回DOS的方法
例如:
MYDARA SEGMENT ……
MYDATA ENDS MYCODE SEGMENT
ASSUME CS:MYCODE,DS:MYDATA START:
无法正常连接
有算法错误
LINK .EXE文件
(1) 编辑程序
DOS 环境下用 EDIT 编辑器
WINDOWS 环境下用 记事本
(2)汇编源程序
宏汇编程序 MASM.EXE 或小汇编程序 汇编程序主要有以下功能:
① 检查源程序中语法错误,给出错误提示信息 ② 产生目标文件(.OBJ)、列表文件(.LST)及 交叉引用文件(.CRF) ③ 展开宏指令
end start
汇编后的目 标文件只有 208字节
汇编语言源程序的格式
例二 编程实现多字节加法,如 S=3B74AC60F8H+20D59E36C1H
DATA1
F8H 60H ACH 74H 3BH
……
被加数、和
DATA2
C1H 36H 9EH D5H 20H
加数
DATA SEGMENT
DATA1 DB 0F8H, 60H, 0ACH, 74H, 3BH
(3) 操作数
操作数即为操作的对象。在指令语句中,可能有 单操作数或双操作数,也可能无操作数或隐含操作数; 而在伪指令中可能有更多个操作数。当操作数不止一个 时,相互之间应该用逗号隔开。
可以作为操作数的有:常数、寄存器、标号、变量 和表达式等。
1) 常量:是指令在中出现的哪些固定值, 可以分为数值常数和字符串常数两类。
(3) 装填段寄存器(只装填数据型段寄存器)
(4) 设置返回DOS的方法
例如:
MYDARA SEGMENT ……
MYDATA ENDS MYCODE SEGMENT
ASSUME CS:MYCODE,DS:MYDATA START:
无法正常连接
有算法错误
LINK .EXE文件
(1) 编辑程序
DOS 环境下用 EDIT 编辑器
WINDOWS 环境下用 记事本
(2)汇编源程序
宏汇编程序 MASM.EXE 或小汇编程序 汇编程序主要有以下功能:
① 检查源程序中语法错误,给出错误提示信息 ② 产生目标文件(.OBJ)、列表文件(.LST)及 交叉引用文件(.CRF) ③ 展开宏指令
end start
汇编后的目 标文件只有 208字节
汇编语言源程序的格式
例二 编程实现多字节加法,如 S=3B74AC60F8H+20D59E36C1H
DATA1
F8H 60H ACH 74H 3BH
……
被加数、和
DATA2
C1H 36H 9EH D5H 20H
加数
DATA SEGMENT
DATA1 DB 0F8H, 60H, 0ACH, 74H, 3BH
(3) 操作数
操作数即为操作的对象。在指令语句中,可能有 单操作数或双操作数,也可能无操作数或隐含操作数; 而在伪指令中可能有更多个操作数。当操作数不止一个 时,相互之间应该用逗号隔开。
可以作为操作数的有:常数、寄存器、标号、变量 和表达式等。
1) 常量:是指令在中出现的哪些固定值, 可以分为数值常数和字符串常数两类。
第05章汇编语言及程序设计ppt课件

汇编语言 源程序
汇编
目标程序
汇编程序
一一对应
汇编语言的指令
机器语言的指令
汇编语言程序设计的特点:
➢ 汇编语言是面向机器的语言,CPU不同的机器有不同 的汇编语言
➢ 可以充分利用机器的硬件功能和结构特点
➢ 可有效地加快程序的执行速度,减少目标程序所占用 的存储空间
➢ 可以对输入/输出端口进行控制,实时性能好 ➢ 汇编语言程序移植性、通用性、可读性差
第 5 章 程序设计及汇编语言
内容安排
一. 程序设计步骤 二. 程序设计 三. 汇编语言及汇编程序 四. 汇编语言源程序格式及实例 五. 上机操作
§5.1 程序设计步骤
(1〕分析问题 (2〕建立数学模型 (3〕确定算法 (4〕绘制程序流程图 (5〕内存空间分配 (6〕编制程序与静态检查 (7〕程序调试〔实验)
[名字] DW <表达式或数据项表> 功能:表达式或项表中的每一项是一个/两个字
节数,他们从符号名地址开始按字节连续存放, 如:直D到1 表中DB数据12H项, 结12H束 12H
D1 DB 3 DUP (12H) MOV AX, D1
注意:① 表达式或数据项表多于一项时,项与项之间用 逗号“,”或空格分隔
MOV BL,0FFH ;将FFH送入BL寄存器
LOut: MOV AL,BL
OUT 73H,AL ;将结果的标志数据输出到 73H端口
HLT
;暂停
Lw10: MOV BL,00H
JMP LOut
L10to20: MOV BL,88H
JMP LOut
3. 循环程序
强制CPU重复执行某一指令系列〔程序段〕的一种程序 结构形式
组成:
汇编语言程序设计ppt课件

3.用注释行说明程序,便于阅读和修改调试和修改。
1
9
常用程序结构: 顺序程序、循环程序、分支程序、查表程序、子程
2. 顺序与循环程序设计
❖5.2.1 顺序程序设计(又称简单程序) 既无分支,又无循环,按照顺序执行 可完成一定的基本功能,是编写复杂程序的 基础
10
例1:将一个字节内的两个BCD码拆开并变成ASCII码, 存入两个RAM单元。BCD码放在内RAM的20H, 转换后高半字节放到21H,低字节放22H。
ROM
20H BCDH BCDL
SWAP A ORL A, #30H MOV 21H, A SJMP $
;BCDH数送A的低4位 21H 0011 BCDH ;完成转换 @R0 22H 000101 B0C0D0L0
;存数
END
12
回目录 上页 下页
5.2.2 循环程序
包含多次重复执行的程序段,循环结构使程序紧凑。
11
回目录 上页 下页
程序:
ORG 1000H
MOV R0, #22H ;R0 22H MOV @R0,#0 ; 22H 0 MOV A, 20H ;两个BCD数送A
A
B0C0D01H01 B0BCC0DD0LH0
XCHD A, @R0 ;BCDL数送22H ORL 22H, #30H ;完成转换
表示程序结构和程序功能
美国国家标准化协会ANSI(American National
Standard Institute)设定了一些常用的流程图符号如图所示:
开始
起止框
或
流程线
输入输出框 判断框
处理框
连接点 图:常用流程图符号
Y
?
第5章 汇编语言程序设计ppt课件

;段分配
START:MOV AX,DATA MOV DS,AX MOV AL,BUF1 ADD AL,BUF2 MOV SUM,AL MOV AH,4CH INT 21H
CODE ENDS END START
;填装数据段寄存器DS ;取第一个加数 ;和第二个加数相加
代 码 段
;返回DOS状态 ;CODE段结束 ;整个源程序结束
第5章 汇编语言程序设计
5.1 汇编语言程序格式 5.2 常用伪指令 5.3 汇编语言的编写 5.4 DOS功能调用 5.5 汇编语言设计
最新课件
教学重点
本章介绍程序结构、伪指令、DOS功能调用。 重点:汇编语言程序的基本结构;
伪指令及其使用方法; DOS功能调用; 基本的汇编语言程序设计方法。 难点:DOS功能调用的应用 汇编语言程序的设计
算术运算符
运 算
逻辑运算符
符
及 关系运算符
表
达 式
分析运算符
综合运算符
+、—、*、/、MOD
与数学运算符的意义相同。
A取N模D是、取OR余、数N。OT、XOR E例运Q:算、82结NEM果、O是LD一T、1个6G常;T数、结.L果E、为G2 E 两个2表0H达M式O比D较7时; ,结表果达为式4表示 方法/性质要相同 关时SSEI系Z,GE成为、、立全OT,YF0PF结SE果ET为、全LE1;NG不T成H、立 例把T规等偏H如存定价移IS:储存于地、指单储址MP令元OT单RV地M元OB址的XV分,性B解0X质;,为3段2地EQ址4和5
作用:由编程者按照一定的规则来定义的一种较“宏 大”的指令,包括多条指令或伪指令 。
最新课件
例题1
SEGMENT
ENDS
汇编语言第5章 循环与分支程序设计

12
12
8 8
(si)=10h
8
Cf=1
…… lea di, array mov ax, number ;要查找数
cmp ax, [di+2] ; (ax)与第一个元素比较 ja chk_last lea si, [di+2] je exit ; (ax)=第一个元素,找到退出 stc jmp exit ; (ax)<第一个元素,未找到退出 chk_last: mov si, [di] ;元素个数 shl si, 1 ; 计算最后一个元素 add si, di ; 的地址 cmp ax, [si] ; (ax)与最后一个元素比较 jb search je exit ; (ax)=最后一个元素,找到退出 stc jmp exit ; (ax)>最后一个元素,未找到退出
(1) 条件控制:相容和相异 (2) 地址跳跃表〔值与地址有对应关系的表〕
1.条件控制
例:折半查找算法
data segment
array dw 12,11,22,33,44,55,66, 77,88,99,111,222,333
number dw 55 low_idx dw ? high_idx dw ?
compare: cmp ax, [bx+si] je exit ja higher
dec cx mov high_idx, cx jmp mid
higher:
inc cx mov low_idx, cx jmp mid
no_match: stc
exit:
……
2.跳跃表法: 例:根据 AL 存放器中哪一位为 1〔从低位 到高位〕,
array_end [si], ax insert bx, array_end [si] array_end [si+2], bx si, 2 short compare
汇编语言程序设计 第五章 课件

(3)串搜索指令 SCAS
LEA DX,ASS MOV AH,10 INT 21H LEA DI,ASS+2 ;输入串首址→DI MOV CL,ASS+1 ;输入串长度→CX MOVZX CX,CL MOV AL,′A′ ;计数器清零 MOV BX,0 P: REPNE SCASB ;查找字符‛A” JE A ;查到字符‛A”转A处执行 ;全部查完转结束 JMP OUT1 ;所有判断完否 A: CMP CX,0 JE OUT1 ;全部查完转结束 CMP BYTE PTR [DI], ‘M’ ;判断‛A”后的字符为‛M”否 JNE B ;不是转B处执行 INC BX ;是‛AM”计数器加1 B: JMP P ;未完转P继续判断 OUT1:MOV AH,4CH ;返回操作系统 INT 21H CODE ENDS END START
(1)串操作指令MOVS、CMPS、SCAS的 使用格式及功能; (2)简单宏指令的定义与调用方式; (3)模块程序设计的方法。
第五章
程序设计的其它方法与技术 三、本章学习的难点:
(1)MOVS与MOV、CMPS与CMP功能上
的差别及串操作指令的正确使用方法; (2)宏指令的定义与调用方式; (3)模块之间的组合、定位及通信方式; (4)模块化程序设计技术。
(5)存储字节/字/双字指令 STOS
●格式: ●功能:
STOS
OPD 或
STOSB 往字节串中存数 STOSW 往字串中存数 STOSD 往双字串中存数
⑴ 字节操作:(AL)→ ES:[DI]/[EDI] 字操作: (AX)→ ES:[DI]/[EDI] 双字操作:(EAX)→ES:[DI]/[EDI] 即将AL(或AX、EAX)中的数据送入DI/EDI所指的目的串中的字节(或 字、双字)存储单元中。修改指针DI/EDI,使之指向串中的下一个元素。 ⑵ 修改串指针,使之指向下一元素,修改方式为: i.当DF=0时,(SI)/(ESI)增量1(字节操作)或2(字操作) 或 4(双字操作)。 ii.当DF=1时,(SI)/(ESI)减量1(字节操作)或2(字操作) 或 4(双字操作)。 说明:该指令执行后,并不影响标志位,因而它一般只带REP重复前缀, 用来将一片连续的存储字节(或字)单元臵相同的值。
《汇编语言程序设计》第5章基本汇编语言程序设计.ppt

汇编语言程序设计的基本步骤: 1.分析题意,确定数据结构和算法 2.根据算法绘制程序流程图 3.根据流程图编写程序 4.调试程序
5.1 汇编语言程序的设计步骤
汇编语言程序设计的基本步骤
例5.1 在100个字的无符号整数字中找出最 大数。
5.1 汇编语言程序的设计步骤
汇编语言程序设计的基本步骤
5.2 顺序结构的程序设计
(2)输出:在8086.8088指令系统中,字符的输出是由 DOS21H中断的02H子功能来实现的,命令序列如下: MOV AH,02H INT 21H 其作用是将寄存器DL中所存放的字符进行显示输出, 故在执行该命令序列之前,应先将被输出字符的ASCII 码存入DL中。
程序的基本结构
1.顺序结构 2.分支结构 3.循环结构
ห้องสมุดไป่ตู้
5.1 汇编语言程序的设计步骤
程序的基本结构 1.顺序结构
5.1 汇编语言程序的设计步骤
程序的基本结构 2.分支结构
5.1 汇编语言程序的设计步骤
程序的基本结构 3.循环结构
5.1 汇编语言程序的设计步骤
第5章基本汇编语言程序设计
1.分析题意,确定数据结构和算法 (1)初始化,建立一个数据指针指向数据区的首
地址; (2)将第一个数存入寄存器(如AX)中; (3)调整数据指针,使其指向下一个数; (4)将数据指针所指的数与寄存器AX的内容相比
较,如果该数较大,则将其存入AX,否则丢掉; (5)重复执行(3)、(4)两步,直至将数组中
分析:比较两数可用CMP指令,而带符号数的比 较结果可由标志位SF、OF来确定,选用的转移 指令应为JG、JL等。
第5章基本汇编语言程序设计
5.1 汇编语言程序的设计步骤 5.2 顺序结构的程序设计 5.3 分支结构的程序设计 5.4 循环结构的程序设计 5.5 子程序设计
5.1 汇编语言程序的设计步骤
汇编语言程序设计的基本步骤
例5.1 在100个字的无符号整数字中找出最 大数。
5.1 汇编语言程序的设计步骤
汇编语言程序设计的基本步骤
5.2 顺序结构的程序设计
(2)输出:在8086.8088指令系统中,字符的输出是由 DOS21H中断的02H子功能来实现的,命令序列如下: MOV AH,02H INT 21H 其作用是将寄存器DL中所存放的字符进行显示输出, 故在执行该命令序列之前,应先将被输出字符的ASCII 码存入DL中。
程序的基本结构
1.顺序结构 2.分支结构 3.循环结构
ห้องสมุดไป่ตู้
5.1 汇编语言程序的设计步骤
程序的基本结构 1.顺序结构
5.1 汇编语言程序的设计步骤
程序的基本结构 2.分支结构
5.1 汇编语言程序的设计步骤
程序的基本结构 3.循环结构
5.1 汇编语言程序的设计步骤
第5章基本汇编语言程序设计
1.分析题意,确定数据结构和算法 (1)初始化,建立一个数据指针指向数据区的首
地址; (2)将第一个数存入寄存器(如AX)中; (3)调整数据指针,使其指向下一个数; (4)将数据指针所指的数与寄存器AX的内容相比
较,如果该数较大,则将其存入AX,否则丢掉; (5)重复执行(3)、(4)两步,直至将数组中
分析:比较两数可用CMP指令,而带符号数的比 较结果可由标志位SF、OF来确定,选用的转移 指令应为JG、JL等。
第5章基本汇编语言程序设计
5.1 汇编语言程序的设计步骤 5.2 顺序结构的程序设计 5.3 分支结构的程序设计 5.4 循环结构的程序设计 5.5 子程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
知识点复习-最小系统
由于PIC单片机具备上电复位的功能,设计最小系统的 时候可以直接把MCLR拉成高电平就可以了,可以不需 要而外的阻容电路。
上电
VCC
<20MHz
72ms的延时 等待VDD稳定 1024个时钟周期 等待晶振输出稳定
上电定时器
起振定时器(时钟周期 等于晶振频率的倒数)
22uF
单片机开始工作
第五讲 4. 汇编程序下载到硬件
下载之前一定要先看硬件电路图,并做好如下准备工作 1,用万用表检查电路 连接是否正常,是否不同线路之间存在短路。 2,用万用表检查电源 供电电压是否正常?极性有没有弄反? 3,连接电源和电路
4,检查器件是否工作正常 例如:第一次实验中,采用杜邦线连接控制蜂鸣器 的IO口引脚和VDD。测试蜂鸣器是否鸣叫
操作数1,操作数2
;注释
;将W寄存器的值放入0x55H中
第五讲 1. 汇编语言指令格式
标号(非指令必须项,在程序中被引用(如跳转时) 才需要) 作用: 程序在汇编是被赋予FLASH程序存储器地址 的具体值,即,代表指令的地址 命名规则:字母数字或下划线组成,开头必须为字 母或下划线。例如:LOOP1,_HERE,HERE,DEC1 书写格式: FINDASCII ADDWF PCL,F ;910 或标号放到单独一行: FINDASCII ADDWF PCL,F ;9;+) { a++; }
(20H)=(20H)+1 (20H)==0? No (30H)=(30H)+1;
YES
满足循环三次的计数值 等于多少? 0xFC?0xFD?
(30H)=(30H)+1;
结束
典型的循环结构
INCLUDE "P16F877A.INC" ;加载头文件 ORG 0000H ;程序从0000H开始 NOP ;0 ;空操作 CLRF 0x30 ;1 CLRF 0x20 ;2 CLRW ;3 MOVLW 0xfc; ;4 or 0xfd MOVWF 0x20; ;5 INC1 INCFSZ 0x20,1 ;6 0x30内容+1,若零则PC+2,反之则PC+1 GOTO LP1 ;7 GOTO LP2 ;8 LP1 INCF 0x30,1 ;9 GOTO INC1 ;10 LP2 NOP NOP ;12 END
(2)EQU-赋值伪指令 作用:对一个符号名赋予一个特定的值 格式: 符号名 EQU nn 注意:符号名区分大小写 在PIC16F877A单片机中,nn字长8位,范围0-255 nn表达方式可以是十六进制,二进制或十进制等 例程: VALUE EQU 35H ADDR EQU 20H ORG 0000H NOP START MOVLW VALUE MOVWF ADDR END
第五讲 4. 汇编程序下载到硬件
第五讲 4. 汇编程序下载到硬件
第五讲 4. 汇编程序下载到硬件
RC2
第五讲 4. 汇编程序下载到硬件
PIC单片机外设编程方法: 初始化 设置相关寄存器 设置TRISC, 将RC2设置 为输出状态
访问相关寄存器,控制 或者读取寄存器内容
加载数值到PORTC, 控制 RC2输出高电平或者低 电平
第五讲 1. 汇编语言指令格式
操作数的表达方式: 二进制: B’0110 0100’ 十进制: D’100’ 八进制: Q’144’ 十六进制:0x64 或64H
推荐使用
第五讲 2. 常用伪指令
伪指令:用于对编译器的控制、定位、输入/输出 的非正式指令。 与指令的区别:编译过程中不产生机器码 (1)ORG-定位伪指令 作用:定义了紧跟其后的指令机器码的真实存放地址 格式:ORG nnnn nnnn的范围:0 到 8192
0x01 0x02 0x03 0x04 0x05
INCLUDE ”P16F877.INC” COUNTER EQU 31H SUM EQU 30H ADDR EQU 22H ORG 0000H NOP MOVLW D'5' MOVWF COUNTER MOVLW 20H MOVWF ADDR CLRF SUM BSF STATUS,C LOOP MOVLW 01H SUBWF COUNTER,F 20H BTFSS STATUS,C GOTO STOP 21H MOVF ADDR, W 22H ADDWF SUM, F INCF ADDR, F 23H GOTO LOOP 24H STOP NOP END
(W)→(22H)
是否发生进位? YES END (23H)=(23H)+1
NO
知识点复习
• 直接寻址。
数据传送方向 • 间接寻址
例: 初始条件(W)=35H (20H)=00H (FSR)=20H MOVWF INDF;
操作码 操作数地址的存放地址
例: 初始条件 (W)=35H (20H)=0 MOVWF 20H;
直接寻址的基本步骤
访问121H
间接寻址的基本步骤 1,设置STATUS的IRP位 (设置第8位); 2,将低八位地址装载到 FSR(设置第0到7位); 例:BSF STATUS,IRP MOVLW 21H; MOVWF FSR; MOVF INDF,0;
1,设置STATUS 的 RP0 和RP1 位,设置第8,7位。 2,在直接寻址指令中给 第 6到0位。
第五讲 2. 常用伪指令
(6)BANKSEL 数据存储器体域选择伪指令 作用:直接选择数据存储单元所在的体域。 格式:BANKSEL nn nn为数据存储器单元的地址,对PIC16F877A来说,字长 为9位,范围0到512
注意:BANKSEL只能改变STATUS的 RP0和RP1,所以只能
用于直接寻址的情况,不适用于间接寻址的场合。
第五讲 2. 常用伪指令
(1)ORG-定位伪指令 例程:
ORG 0000H NOP ;MPLAB 特定需要 MOVLW 20h …… …… ORG 00FFH FUNCTION1 MOVLW 20H …… …… ORG 01FFH FUNCTION2 MOVLW 20H …… ……
第五讲 2. 常用伪指令
(5)LIST-列表选项伪指令 作用:设置汇编参数,可设置的参数达10余种。 最常用的两种: P=<单片机型号>,例如: LIST P=16F877 R=<默认的数值>,例如: LIST R=BIN; 二进制 LIST R=DEC; 十进制
例程: INCLUDE “P16F877A.INC” LIST R=DEC ORG 0000H NOP MOVLW 44 END
例:BSF STATUS, RP0 BCF STATUS, RP1 MOVF 21H,0
INCLUDE "P16F877.INC" COUNTER EQU 31H SUM EQU 30H ORG 0000H NOP MOVLW D'5' MOVWF COUNTER MOVLW 20H MOVWF FSR CLRF SUM BSF STATUS,C LOOP MOVLW 01H SUBWF COUNTER,F BTFSS STATUS,C GOTO STOP MOVF INDF, W ADDWF SUM, F INCF FSR, F GOTO LOOP STOP NOP END
第五讲 2. 常用伪指令
(6)BANKSEL 数据存储器体域选择伪指令 例:PICT4-38 比较 INCLUDE “PIC16F877.INC” ORG 0000H NOP BANKSEL 121H MOVLW 0F0H MOVWF 21H END
BCF STATUS RP1 BSF STATUS RP0
第五讲 2. 常用伪指令
(3)END-程序结束伪指令 作用:通知编译器停止对源程序的编译,一个程序有且 只要一条END
(4)INCLUDE-文件调用伪指令 格式:INCLUDE”文件名” 例程: INCLUDE”P16F877A.INC” ORG 0000H NOP ……
第五讲 2. 常用伪指令
第五讲 3. 汇编程序的结构
第五讲 3. 汇编程序的结构
初始化 对20H, 21H,22H,23H 及 W寄存器内容进行清零 将乘数1及乘数2分别装 载到20H和21H
输入是什么? 输出是什么?
YES
将乘数2装载到W寄存器
(20H)=(20H)-1 (20H)==0? No (W)=(21H)+(W)
第五讲 4. 汇编程序下载到硬件
寄存器名称 TRISC 地址 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 0x87 RC7 方 向 0x07 RC7 RC6 方 向 RC6 RC5 方 向 RC5 RC4 方 向 RC4 RC3 方 向 RC3 RC2 方 向 RC2 RC1 方 向 RC1 RC0 方 向 RC0
要求, 1装载的初始值要能够使得循环能够进行3次,每一次循环结果,即所有 寄存器的结果要截图贴在文档里面一并答应出来。详见作业模板
类似于C语言中的 a=0; for(i=1; i≤10; i++) { a++; }
第五讲 3. 汇编程序的结构
初始化 对20H, 30H, 及W寄 存器内容进行清零
将计数值装载到 20H
第五讲 2. 常用伪指令
(7)PAGESEL 程序存储器体域选择伪指令
第五讲 3. 汇编程序的结构
编程的步骤:
1问题解读 2设计流程 图 3编写程序
4调试
第五讲 3. 汇编程序的结构
第四讲作业:模仿实例PICT4-34 编写如下功能汇编程序。
对通用寄存器 0x20H 装载初始值, 并利用INCFSZ 对0x20H进行加1, 若 (0x20H)=0, 则跳出循环结束程序, 若(0x20H)≠0, 则对0x30H的内容+1,并继续循环,直到0x20H的值变为零。