汇编语言程序设计PPT课件
合集下载
第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
?
第3章-汇编程序设计PPT课件

A<=5?
Y
N
(A-5)*2+R2 R2
R2 (41H)
结束
;存运费 M
-
18
3.4.2 多分支程序(散转程序)
有一类分支程序,它根据不同的输入条件或不同的运算 结果,转向不同的处理程序,称转程序的设计
这类程序通常利用JMP @A+DPTR间接转移指令实现转移。 有如下两种设计方法: 1. 查转移地址表:
GH+2 56 78
GH+4 00 08
8
4.保留字节 标号:DS (数值表达式)
作用: 指示在程序存储器中保留以标号为起始地址的若干字 节单元,其单元个数由数值表达式指定。
例如 L1:DS 32 ; 从L1地址开始保留32个存储单元。
5. 等值指令 标号 EQU(数值表达式)
表示EQU两边的量等值,用于为标号或标识符赋值。
例如: X1
EQU 2000H
X2
EQU 0FH
…
MAIN:
MOV DPTR,#X1 ; DPTR=2000H
ADD A,#X2 ; A=A+0FH
-
9
6. 位定义 标号 BIT [位地址] 作用: 同EQU指令,不过定义的是位操作地址。 例如 AIC BIT P1.1。
7. 汇编结束 END 作用: 指示源程序段结束。
MOV DPL,A
MOV DPH,B
;DPTR为表中地址
CLR A
;A=0
JMP @A+DPTR ;转移
TAB:DW PR0,PR1,PR2,…..,PRn ;转移地址表
END
-
TAB 01 10
TAB+2 02 20 ..
汇编语言程序设计经典课件模版(PPT65张)

DA4 DB 5 DUP(0) ; 重复5个0存入DA4开始的存储单元中
2 表达式赋值语句
1)赋值语句 EQU
格式: 符号名 EQU 表达式 ;一个符号名只能定义一次
例:
COUNT EQU 100
; 常数赋给符号名COUNT
DATA EQU COUNT+2
; 表达式赋给符号名DATA
A1
运算结果 改变运算符优先级 下表或间接地址 连接结构与变量 修改变量 位图形 记录/字段位数
运算符优先级
优先级 1 2 3 4 5 6 7 8 9 10
运算符 ( ) , [ ] , < > , • , 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
段名 ends ;指示段或者结构结束 功能:将一个逻辑段定义成一个整体 规定段所属的段寄存器 assume cs:段名, ds:段名, ss:段名,ES:段名 功能:定义4个逻辑段,指明段和段寄存器的 关系
3 段定义语句
定义类型是对该段起始位置的定义。参数有:
PARA,BYTE,WORD,PAGE
格式2:变量名 助记符 n DUP(操作数,操作数….)
N必须是正整数,表示括号内操作数的重复次数
例如:
DA1 DB 10H, 23H ; 变量DA1装入10H , 23H
DA2 DW ‘OK’
; 字符串‘OK’的ASCII码装入DA2开始的存 储单元中
四章汇编语言程序设计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;定义代码段
第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)。
返回本章首页
2021/3/9
授课:XXX
12
2021/3/9
该
数
式 如 左 图 所 示 。
据 段 在 主 存 中 的 存
储
形
授课:XXX
13
【例3.28】阅读下列程序,指出此程序所完成的功能以 及在显示器上显示的内容。
DATA SEGMENT
NUM DB 01000101B
COM文件没有重定位信息,因此比EXE文件的体积小的 多。DOS装载COM文件时,也生成PSP,然后从偏移地址 1 0 0 H 开 始 依 次 存 放 用 户 程 序 。 DOS 自 动 赋 值 使 CS=DS=ES=SS=PSP 段 基 址 , FS=GS=0, 并 使 IP=100H, SP=FFFEH。
第6章 汇编语言程序设计
6.1汇编源程序的编程格式
汇编源程序有两种编程格式:一种格式只能生成扩展名为 EXE的可执行文件,称为EXE文件的编程格式;另一种格 式可以生成扩展名为COM的可执行文件,称为COM文件 的编程格式。
6.1.1 EXE文件的编程格式 EXE文件的编程格式允许源程序使用多个逻辑段,在实模式
2021/3/9
授课:XXX
7
3.打印输出(5号调用)
格式:MOV DL,待打印字符的ASCII码
MOV AH,5
INT 21H
功能:将DL寄存器中的字符送打印机打印。
4.结束调用(4CH号调用)
格式:MOV AH,4CH
INT 21H
功能:终止当前程序并返回调用程序。
2021/3/9
CODE ENDS
END BEGIN
授课:XXX
返回本节
11
综合举例
【例3.27】已知一数据段中的数据为:
DATA SEGMENT
A DW M
BUF
DB ‘AB’,0DH,0AH
C EQU 500H
B DW 0FFAAH
D DD BUF
M DB 2DUP(1) ,2DUP(2,’B’)
DATA ENDS 请画出该数据段数据存储的形式。
2021/3/9
授课:XXX
3
6.1.4 程序段前缀
6.1.5返回DOS的其他方法
对于COM文件有三种方法:
(1)直接执行INT20H;
(2)调用INT21H的0号功能。
(3)执行RET指令
对于EXE文件:
(1)调用INT 21H的4CH功能
(2)执行INT 20H,首先把执行过程包含在一个远过程中;
STACK ENDS
CODE SEGMENT ASSUME DS:DATA,CS:CODE,SS: STACK
2021/3/9
授课:XXX
10
2021/3/9
BEGIN: MOV AX ,DATA MOV DS,AX LEA DX,STR MOV AH ,9 INT 21H MOV AH,4CH INT 21H
下,每个逻辑段的目标块不超过64KB,适合于编写大型 程序。
2021/3/9
授课:XXX
开始
1
6.1.2 COM 文件的编程格式
COM文件的编程格式必须必须符合以下规定:
(1)源程序只允许使用一个逻辑段,即代码段,不允许 设置堆栈段;
(2)程序使用的数据,可以集中设置在代码段的开始或 末尾;
(3)在代码段偏移地址(有效地址)为100H的单元,必须 是程序的启动指令;
2021/3/9
授课:XXX
6
1.单字符输入(1号调用) 格式:MOV AH,1
INT 21H 功能:从键盘输入字符的ASCII码送入寄存器 AL中,并送显示器显示。
2.单字符显示(2号调用) 格式:MOV DL,待显示字符的ASCII码 MOV AH,2
INT 21H 功能:将DL寄存器中的字符送显示器显示,如 果DL中 为〈CTRL〉+〈BREAK〉 的ASCII 码, 则退出。
(4)代码段目标小于64KB。
2021/3/9
授课:XXX
2
6.1.3EXE文件和COM文件的内存映像
EXE文件包括两部分:一部分为装入模块,另一部分 为“重定位信息”。调入后生成PSP(程序段前缀)
DOS自动给DS,ES,FS和GS赋值,使DS=ES=存放PSP的 段基址,FS=GS=0,并使CS:IP=用户程序的启动地址, SS:SP指向用户堆栈段的栈顶,在这以后,DOS才把控制 权交给用户程序。
其次在给DS赋值前,用3条指令把PSP首单元的物理地址 压入栈顶,即:PUSH DS MOV AX,0 PUSH AX,最后程 序在需要返回DOS的地方执行一条RET指令。
6.1.6 源2程021/序3/9 堆栈段的设置
授课:XXX
4
6.2 DOS系统功能调用
对8086系列机来说,MS-DOS操作系统是最主 要的操作系统。MS-DOS操作系统除了具有较为
授课:XXX
8
5.显示字符串(9号调用)
格式:LEA
DX,待显示字符串首偏移地址
MOV AH,9
INT 21H
功能:将当前数据区中以‘$’结尾的字符串送显示 器显示。
6.字符串输入(10号调用)
格式:LEA
DX,缓冲区首偏移地址
MOV
AH,10
INT 21H
功能:从键盘上输入一字符串到用户定义的输入缓冲 区中,并送显示器显示。
2021/3/9
授课:XXX
9
【例3.25】若要在屏幕上显示字符串“Example of string display!”,则程序如下:
DATA SEGMENT STRDB 0DH,0AH,‘Example of string display!$’
DATA ENDS
STACK SEGMENT STACK DB 100 DUP(0)
④ 相应中断子程序运行完毕,可按规定取得出
口参数。
返回本节
2021/3/9
授课:XXX
5
6.2 常用的DOS系统功能调用
1.单字符输入(1号调用) 2.单字符显示(2号调用) 3.打印输出(5号调用) 4.结束调用(4CH号调用) 5.显示字符串(9号调用) 6.字符串输入(10号调用)
完整的文件管理功能之外,同时还为各种应用程
序、外围设备等提供软件接口。它由三部分组成: IO.SYS、MSDOS.SYS以及。
DOS系统功能调用的方法一般可分为以下几步:
① 设置所要调用功能的入口参数。
② 在AH寄存器中存入所要调用功能的功能号。
③ INT 21H指令自动转入中断子程序入口。