汇编语言程序设计经典课件ppt(共65页)
合集下载
第4章汇编语言程序设计PPT教学课件

图 分支程序结构流程图
2020/12/11
《单片机应用技术》教学课件
12Leabharlann 第4章 汇编语言程序设计条件满足? Y
A
4.2.2 分支程序结构
第4章 汇编语言程序设计
目的:1.进一步熟悉指令系统 2.会编写简单的程序 3.上机训练
内容:4.1 汇编语言程序设计概述
4.2 三种程序结构 4.3 程序设计举例
2020/12/11
《单片机应用技术》教学课件
1
第4章 汇编语言程序设计
4.1 汇编语言程序设计概述
所谓程序设计,就是按照给定的任务要求,编写 出完整的计算机程序。要完成同样的任务,使用的方 法或程序并不是唯一的。
汇编后: (1000H)=12H (1001H ) = 34H
(1002H ) = 00H ( 1003H ) = ABH (1004H ) =00H (1005H) =0AH
2020/12/11
《单片机应用技术》教学课件
7
第4章 汇编语言程序设计
• (6)定义存储区伪指令DS
• 功能:从指定地址开始预留一定数量的内 存单元,以备源程序执行过程中使用。预
(4) 编写源程序
(5) 程序优化。
(6)上机调试、修改和最后确定源程序。
2020/12/11
《单片机应用技术》教学课件
10
第4章 汇编语言程序设计
4.2.1 顺序程序设计
顺序结构程序是一种最简单、最基本的程序,按照程序编 写的顺序依次执行。
【例4-1】两个多字节数加法
1.两个三字节无符号相加,其中被加数在内部RAM的 50H、51H和52H单元中;加数在内部RAM的53H、54H和 55H单元中;要求把相加之和存放在50H、51H和52H单元中 进位存放在位寻址区的00H位中。
四章汇编语言程序设计ppt课件

指令助记符:MOV,ADD,…. 指示性(伪指令)操作符:DB,DW,SEGMENT,
ENDS,ASSUME,END ,…. 保留字:SEGMENT ENDS OFFSET SIZE DB
DW DD MOV PUSH ADD SUB MUL DIV INC DEC LOOP PROC ENDP CALL RET END
类别名
CODE、DATA、STACK(同名同类别段连续存放)
第4章 汇编语言程序设计
伪操作命令之三:段定义伪指令
段寄存器说明伪指令ASSUME
ASSUME 段寄存器名:段名[段寄存器名:段名[…..]]
例:
CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
MAIN:
……
CODE ENDS ENDS MAIN
;指定第一条要执行的指令标号
注:1、该伪指令用于明确用SEGMENT定义的段的类型, 使编译程序能生成目标代码程序。
2、在源程序中,该伪操作放在可执行程序的前面。 3、该指令没有给段寄存器赋予实际的初值。这项工作要通
过写指令来完成,其中代码段不需要赋值。
+、-、*、/、MOD、SHL、SHR 都可应用于数字运算。 +、- 可以用于表示存储器操作数的地址,或两个存储器
单元(同一段内)的地址偏移量之差。 例:SUM - 2
CYCLE - GO
第4章 汇编语言程序设计
运算符之二:逻辑运算符
AND、OR、XOR、NOT 按位的逻辑运算 例:IN AL,PORT_VAL
DATA2 DB 0C1H,36H,9EH,0D5H,20H;加数
DATA ENDS;数据段结束
CODE SEGMENT;定义代码段
ENDS,ASSUME,END ,…. 保留字:SEGMENT ENDS OFFSET SIZE DB
DW DD MOV PUSH ADD SUB MUL DIV INC DEC LOOP PROC ENDP CALL RET END
类别名
CODE、DATA、STACK(同名同类别段连续存放)
第4章 汇编语言程序设计
伪操作命令之三:段定义伪指令
段寄存器说明伪指令ASSUME
ASSUME 段寄存器名:段名[段寄存器名:段名[…..]]
例:
CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
MAIN:
……
CODE ENDS ENDS MAIN
;指定第一条要执行的指令标号
注:1、该伪指令用于明确用SEGMENT定义的段的类型, 使编译程序能生成目标代码程序。
2、在源程序中,该伪操作放在可执行程序的前面。 3、该指令没有给段寄存器赋予实际的初值。这项工作要通
过写指令来完成,其中代码段不需要赋值。
+、-、*、/、MOD、SHL、SHR 都可应用于数字运算。 +、- 可以用于表示存储器操作数的地址,或两个存储器
单元(同一段内)的地址偏移量之差。 例:SUM - 2
CYCLE - GO
第4章 汇编语言程序设计
运算符之二:逻辑运算符
AND、OR、XOR、NOT 按位的逻辑运算 例:IN AL,PORT_VAL
DATA2 DB 0C1H,36H,9EH,0D5H,20H;加数
DATA ENDS;数据段结束
CODE SEGMENT;定义代码段
汇编语言程序设计PPT课件

DB 0AH,0BH,20
则 (1000H)=34H (1002H)=41H
(1001H)=49H (1003H)=42H
(1004H)=0AH
(1005H)=0BH
(1006H)=14H
(4) DW 定义字指令 定义程序存储器中存放的若干个字的数据或ASCII 码字符16位常数表 格式 DW<16位数据表>。
常用程序结构: 顺序程序、循环程序、分支程序、查表程序、子程
5.2 顺序与循环程序设计
❖5.2.1 顺序程序设计(又称简单程序) 既无分支,又无循环,按照顺序执行 可完成一定的基本功能,是编写复杂程序的 基础
例1:将一个字节内的两个BCD码拆开并变成ASCII码, 存入两个RAM单元。BCD码放在内RAM的20H, 转换后高半字节放到21H,低字节放22H。
第5章 汇编语言程序设计
教学目的:熟悉80C51系列单片机的汇编语言,能 够熟练编写汇编语言源程序。 教学重点:常用汇编语言程序设计方法。 教学难点: 分支程序、散转程序与子程序的设计
5.1 概 述
5.1.1 程序设计语言 ❖程序设计语言:机器语言、汇编语言、高级语言 ❖机器语言不易识别和记忆,使用不便,很难用它
SWAP A ORL A, #30H MOV 21H, A SJMP $
;BCDH数送A的低4位 21 0011
;完成转换 @R0 ;存数
H22HB0C001D0HBCD 01000L
END
回目录 上页 下页
5.2.2 循环程序
包含多次重复执行的程序段,循环结构使程序紧凑。
各个环节任务: 一.初始化部分(循环初态)
来进行程序设计。 汇编语言
图5-1 源程序、汇编程序、目的程序之间关系示意图
精品PPT课件--第5章汇编语言程序设计

指示性语句的格式为:
名字 伪指令 操作数1,操作数2,…,操作数n ;注释
注:各部分之间至少要用一个空格作为分隔符。
指示性语句由汇编程序执行。它指出汇编程序应如何对源程序进行汇编, 如何定义变量、分配存储单元以及指示程序开始和结束等。指示性语句无 机器码指令与其相对应。
指示性语句汇编时不生成机器码。
显然,第二种写法要比第一种写法要好。
2021/1/20
23
5.3 伪操作命令
由汇编程序执行的指令,它本身不被汇编成机器指令。 常用的伪指令有:
• 数据定义伪指令 • 符号定义伪指令 • 段定义和段寄存器指定伪指令 • 过程定义伪指令 • 结束伪指令
2021/1/20
24
5.3.2 数据定义伪指令
➢ 变量在程序中作为存储器操作数被引用。 •标号和变量名的使用规则
– 组成:A-Z(不分大小写), 0-9, ?@ . _ $ – 不能以数字开头 – 长度小于31个字符 – 不能与保留字(指令助记符、伪指令、预定义符号等)重名 – 不能重复定义 例如: 正确的:LP1, AGAIN, NEXT, _GO, OK_1
(1)算术运算符—— +、-、*、/,MOD
➢ 用于数字表达式,例: MOV AX,4*1024
汇编后的形式为:
MOV AX,4096
➢ 用于地址表达式,例: LEA SI,TAB+3
若TAB的偏移地址为1000H,则汇编后的形式为:LEA
SI,1003H
2021/1/20
16
(2)逻辑运算符—— AND、OR、XOR、NOT
INT 21H
;返回DOS
CODE ENDS
;代码段结束
END START
名字 伪指令 操作数1,操作数2,…,操作数n ;注释
注:各部分之间至少要用一个空格作为分隔符。
指示性语句由汇编程序执行。它指出汇编程序应如何对源程序进行汇编, 如何定义变量、分配存储单元以及指示程序开始和结束等。指示性语句无 机器码指令与其相对应。
指示性语句汇编时不生成机器码。
显然,第二种写法要比第一种写法要好。
2021/1/20
23
5.3 伪操作命令
由汇编程序执行的指令,它本身不被汇编成机器指令。 常用的伪指令有:
• 数据定义伪指令 • 符号定义伪指令 • 段定义和段寄存器指定伪指令 • 过程定义伪指令 • 结束伪指令
2021/1/20
24
5.3.2 数据定义伪指令
➢ 变量在程序中作为存储器操作数被引用。 •标号和变量名的使用规则
– 组成:A-Z(不分大小写), 0-9, ?@ . _ $ – 不能以数字开头 – 长度小于31个字符 – 不能与保留字(指令助记符、伪指令、预定义符号等)重名 – 不能重复定义 例如: 正确的:LP1, AGAIN, NEXT, _GO, OK_1
(1)算术运算符—— +、-、*、/,MOD
➢ 用于数字表达式,例: MOV AX,4*1024
汇编后的形式为:
MOV AX,4096
➢ 用于地址表达式,例: LEA SI,TAB+3
若TAB的偏移地址为1000H,则汇编后的形式为:LEA
SI,1003H
2021/1/20
16
(2)逻辑运算符—— AND、OR、XOR、NOT
INT 21H
;返回DOS
CODE ENDS
;代码段结束
END START
第4章汇编语言程序设计ppt课件

DATA1
11
22
33 44
DATA2
11
00
22
00
44
33
DATA3
22
0
0
0
22
0
0
0
XX
66
55 44 33
28
数据定义伪指令的几点 说明
伪指令的性质决定所定义变量的类型;
定义字符串必须用DB伪指令
例:
DATA1 DB ‘ABCD’,66H
41H
‘A’
42H
‘B’
43H
‘C’
44H
‘D’
AH
DISN:T D2X1H
功能号OAH 字符串在内存中的存放地址
58
2. 定义字符缓冲区
用户自定义缓冲区格式:
N1 N2
存放字符个数:≤255
存放键入的字符 整个缓冲区
实际键入字符数 最大可键入字符数
0DH
59
输入字符串程序段
DAT1 DB 20,?,20 DUP(?)
┇
LEA DX,DAT1 MOV AH,0AH INT 21H
定义的变量为4字型(8字节)
定义的变量为10字节型
26
数据定义伪指令例
DATA1 DB 11H,22H,33H,44H DATA2 DW 11H,22H,3344H DATA3 DD 11H*2,22H,33445566H
以上变量在内存中的 存放形式
27
数据定义伪指令例_变量在内存中的
分布
DSEG SEGMENT DATA1 DB 1,2, 3 DUP(?) DATA2 DW 1234H
DSEG ENDS ESEG SEGMENT
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
名字 伪指令指示符 操作数,操作数 ; 注释
汇编语言中常数,变量和标号是三种基本数据项
4.1程序格式和表达式
MASM中的表达式
算术运算符 逻辑运算符 关系运算符 数值返回 修改属性 其他运算符 运算符优先级
算术运算符
符号
+ - * /
MOD SHL SHR
格式2:变量名 助记符 n DUP(操作数,操作数….)
N必须是正整数,表示括号内操作数的重复次数
例如:
DA1 DB 10H, 23H ; 变量DA1装入10H , 23H
DA2 DW ‘OK’
; 字符串‘OK’的ASCII码装入DA2开始的存 储单元中
DA3 DB ?
; 变量DA3为不确定字节,保留1字节空间
运算符 ( ) , [ ] , < > , • , LENGTN , WIDTH , SIZE , MASK PTR , OFFEST , SEG , TYPE , THIS , CS: , DS: , ES: , SS: HIGH , LOW * , / , MOD , SHL , SHR +,- EQ , NE , LT , LE , GT , GE NOT AND OR , XOR SHORT
DA4 DB 5 DUP(0) ; 重复5个0存入DA4开始的存储单元中
2 表达式赋值语句
1)赋值语句 EQU
格式: 符号名 EQU 表达式 ;一个符号名只能定义一次
例:
COUNT EQU 100
; 常数赋给符号名COUNT
DATA EQU COUNT+2 ; 表达式赋给符号名DATA
第四章 汇编语言程序设计
4.1程序格式和表达式
程序格式
MASM中的语句分为指令性语句和伪指令语句
指令性语句与机器指令相对应,汇编程序将它们翻译成 目标代码。语句格式为:
标号: 指令助记符 操作数,操作数
; 注释
伪指令语句没有对应的机器指令,可完成数据定义,存 储区分配,段定义,段分配,指示程序结束等功能。
名称
加法 减法 乘法 除法 模除 左移 右移
运算结果
和 差 积 商 余数 左移后的二进制数 右移后的二进制数
例:
ARRAY DB 1,2,3,4,5
TRY DB 20
MOV AX, 30 * 5
MOV CX, (TRY – ARRAY)
DA
EQU 300
MOV CX, DA/100
逻辑运算符
定义段 段名 segment 定义类型 组合类型 ‘分类 名’
段名 ends ;指示段或者结构结束 功能:将一个逻辑段定义成一个整体 规定段所属的段寄存器 assume cs:段名, ds:段名, ss:段名,ES:段名 功能:定义4个逻辑段,指明段和段寄存器的 关系
数值返回符号Fra bibliotek名称运算结果
OFFSET 返回偏移地址
偏移地址
SEG
返回段地址
段地址
TYPE
返回元素字节数 字节数
LENGTH 返回变量单元数 单元数
SIZE
返回变量总字节数 总字节数
例:
MOV BX, OFFSET DA1 MOV AX, SEG M1
MOV DS, AX A1 DB 20H, 30H
例:
N1 DB 15H, 36H N2 DW 1122H, 3344H
LO: MOV AX, WORD PTR N1 MOV BL, BYTE PTR N2
FIRST EQU THIS BYTE TABLE DW 200 DUP(?)
L1: JMP SHORT L2 K1 EQU 0ABCDH
A1
EQU [BX+SI]
;
B1
EQU ORRSET A1 ;
C1
EQU ADD
; 加法指令赋给符号名C1
2)等号语句 =
与EQU功能相同,可以重复定义,例如:
COUNT = 100 COUNT = COUNT + 10
3 段定义语句
段定义语句 SEGMENT ENDS
ASSUME
MOV AH, HIGH K1 MOV BL, LOW K1
其他运算符
符号 () [] • <> MASK WIDTH
名称 圆括号 方括号 点运算符 尖括号 记录位图 记录宽度
运算结果 改变运算符优先级 下表或间接地址 连接结构与变量 修改变量 位图形 记录/字段位数
运算符优先级
优先级 1 2 3 4 5 6 7 8 9 10
4.2 伪指令
1 数据定义语句和存储指令 2 表达式赋值语句 3 段定义语句 4 过程定义语句 5 程序开始和结束语句 6 结构和宏定义语句 7 外部伪指令及对准伪指令
1 数据定义语句
DB
定义字节(8位)
DW
定义字(16位)
DD
定义双字(32位)
DQ
定义四字(64位)
符号 AND OR XOR NOT
名称 与运算 或运算 异或运算 非运算
运算结果 逻辑与结果 逻辑或结果 逻辑异或结果 逻辑非结果
例:
MOV AL, NOT OFFH MOV BL, 8CH AND 73H MOV AH, 8CH OR 73H MOV CH, 8CH XOR 73H
DT
定义10个字节(80位)
DUP
产生重复的字符或数字
存储段中数据存储指令
PTR BYTE WORD DWORD NEAR FAR
指示存储器指针
指示字节的长度的操作数,如同 BYTE PTR 指示字操作数的作用,如WORD PTR
指示双字长度的操作数,如DWORD PTR 定义近指针
定义远指针
格式1:变量名 助记符 操作数, 操作数…
关系运算符
符号
名称
EQ
相等
NE
不等
LT
小于
LE
小于等于
GT
大于
GE
大于等于
运算结果为真输出全 ‘1’,为假输出全 ‘0’
例:
MOV AX, 10H GT 16 ADD BL, 6 EQ 0110B MOV CX, ((PORT LT 5) AND 100) OR
((PORT GE 5) AND 200)
MOV AH, TYPE A1 MOV CX, LENGTH A1 MOV BL, SIZE A1
修改属性
符号
名称
运算结果
段寄存器名 段前缀
修改段
PTR
修改类型属性
修改后类型
THIS
指定类型/距离属性 指定后类型
HIGH LOW SHORT
分离高字节 分离低字节 短转移说明
高字节 低字节 -128~127字节间转移