【精品】PPT课件 汇编语言程序设计
合集下载
汇编语言程序设计 PPT

RET
15
二.按分支号转移
如:分支号=0,程序转移到ADDR0处;当分支号=1,
宏定义过程:
宏指令名 MACRO 形式参数
…
;定义程序段
ENDM 宏调用过程:
…
宏指令名 实际参数
…
宏指令名 实际参数
6
二.汇编控制指令(伪指令)
常用伪指令及其功能:
1. ORG—起始地址指令:指明程序和数据块起始地址 。
指令地址 机器码
源程序
ORG 2000H
2000H 78 30 MAIN:MOV R0,#30H
汇编语言程序设计
学习内容
4-1 汇编程序的约定 4-2 程序设计步骤 4-3 直线程序 4-4 分支程序 4-5 循环程序 4-6 子程序
2
4-1 汇编程序约定
汇编语言程序: 用汇编语言编写的、完成特定功能的指令序列。
汇编程序: 能将汇编语言源程序转换成机器语言目标程序的系统软件。
汇编语言程序到机器语言程序的转换过程称为汇编。
FRT: MOV A,40H MOV R3,A MOV B,#03H
;取行李重量计价单位G ;M=G×3
MUL AB
MOV R2,A
;暂存3G
MOV A,R3
;取回G
CJNE A,#05H,L1;G≤5 ?
SJMP WETC L1:JC WETC
SUBB A,#05H
;是,转至WETC ;否则M=3G+2(G-5)
2.按功能设计程序,明确各程序之间的相互关系。 1
3.用注释行说明程序,便于阅读和修改调试和修改。
10
4-2 常用程序结构: 直线程序、分支程序、循环程序、子程序
精品课件--汇编语言程序设计

宏指令语句由指令性语句和指示性语句构成,它属于用户自定义的新指令, 其主要作用是替代源程序中具有独立功能的程序段,汇编时产生对应的目标代码, 其功能由硬件(CPU)完成。
3
4.1.1 汇编语言的基本语法
1.语句的一般格式
指令性语句的一般格式为: [标识符:] 操作符 [操作数] [;注释]
伪指令语句的一般格式为: [标识符] 操作符 [操作数] [;注释]
9
④ LENGTH操作符
功能:当数据用重复数据操作符DUP定义时,汇编程序将回送外层DUP给定的 值,对于其他情况返回值总为1。
格式:LENGTH 变量名或标号
例:N1 DB 10 DUP(2,3,5 DUP(1)),6
...
MOV CX,LENGTH N1
;指令执行后,(CX)=10
⑤ SIZE操作符
ARRAY DB 12H,-6,56H COUNT EQU $-ARRAY 定义中$-ARRAY表示当前字节的偏移地址减去ARRAY首地址单元的偏移地址,汇 编后COUNT的值为3。显然,如果ARRAY定义为DW,则汇编后COUNT的值为6。
18
5.过程与宏定义伪指令
(1)过程定义伪指令
过程又称子程序,是程序的一部分,它由过程定义伪指令PROC和ENDP分别定义过 程的开始和结束,由RET指令作为其返回指令,过程定义语句的格式如下:
DAT1 DB 10H,25,? DAT2 DW 1234H DAT3 DD 1234H
16
例:用DUP重复定义并且可以嵌套: N1 DB 2 DUP(6,3 DUP(7)) 例:定义字符: STR1 DB ‘AB12’ STR2 DW ‘AB’
17
4.地址计数器 $ 功能:①当$用在指令中时,它表示本条指令第一个字节的偏移地址; ②当$用在数据定义伪指令中时,它表示的是当前字节的偏移地址。 例如指令JMP $+8 表示跳转至JMP指令的首地址+8的地址处。 又如在数据段中定义如下:
3
4.1.1 汇编语言的基本语法
1.语句的一般格式
指令性语句的一般格式为: [标识符:] 操作符 [操作数] [;注释]
伪指令语句的一般格式为: [标识符] 操作符 [操作数] [;注释]
9
④ LENGTH操作符
功能:当数据用重复数据操作符DUP定义时,汇编程序将回送外层DUP给定的 值,对于其他情况返回值总为1。
格式:LENGTH 变量名或标号
例:N1 DB 10 DUP(2,3,5 DUP(1)),6
...
MOV CX,LENGTH N1
;指令执行后,(CX)=10
⑤ SIZE操作符
ARRAY DB 12H,-6,56H COUNT EQU $-ARRAY 定义中$-ARRAY表示当前字节的偏移地址减去ARRAY首地址单元的偏移地址,汇 编后COUNT的值为3。显然,如果ARRAY定义为DW,则汇编后COUNT的值为6。
18
5.过程与宏定义伪指令
(1)过程定义伪指令
过程又称子程序,是程序的一部分,它由过程定义伪指令PROC和ENDP分别定义过 程的开始和结束,由RET指令作为其返回指令,过程定义语句的格式如下:
DAT1 DB 10H,25,? DAT2 DW 1234H DAT3 DD 1234H
16
例:用DUP重复定义并且可以嵌套: N1 DB 2 DUP(6,3 DUP(7)) 例:定义字符: STR1 DB ‘AB12’ STR2 DW ‘AB’
17
4.地址计数器 $ 功能:①当$用在指令中时,它表示本条指令第一个字节的偏移地址; ②当$用在数据定义伪指令中时,它表示的是当前字节的偏移地址。 例如指令JMP $+8 表示跳转至JMP指令的首地址+8的地址处。 又如在数据段中定义如下:
IBM-PC汇编语言程序设计5.ppt课件

;buff数组下标 ;是不是$ ;是,结束读 ;取串地址
;取串中字符 ;指向下一字符 ;是不是$ ;是,zf=1,转移 ;与’0’比较 ;<‘0’,不计数 ;与’9’比较 ;>’9’,不计数 ;计数
23
练习5.11:测试一字符串是否存在数字,若存在,置CL第5 位置1,否则置0
data segment string db 'abcqdefghijklmnopqrs'
;不是,zf=0退出 ;置标志flag=1
;al是空格? ;是,zf=1,退出
;不是,保存 ;数组索引加1
20 a b c d e f 20
flag= 0 1
jz exit成立
19
5.1.3 多重循环程序设计 基本方法与单重循环相同,但要注意: 1、分别考虑各重循环的控制条件及其程序实现,相互之间
again: mov al, string[si] cmp al,30h jb goon cmp al,39h ja goon or cl,20h jmp exit
main proc far
assume cs:prognam
start:
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
lea bx,buff ;取缓冲地址
input: mov ah,01 ;从键盘读串
int 21H
;存入al中
mov [bx],al ;保存字符
JMP exit less: AL<0处理
JMP exit great:
AL>0处理 exit: 、、、
……
8
子程结构形式
1.多处调用完成同一功能的子程:
Chapter 6 汇编语言程序设计hPPT课件

LD extern_1-10, B
LAB1: .set 2
LD 10-extern_1, B
intern_2 .word 3
LD extern_1/10, B
LD #LAB1+((5+4)*3), A
LD intern_1+extern_1, B
LD #LAB1+3+(4*7), A
27.11.2020
十六进制 浮点数
字符常数 字符串
27.11.2020
举例
10011000B,01111010b(最多16位) 226q,1001Q,0124(多达6位) 略
0DH,123H,0X89,0x0D(多达4位) 1.786e9(浮点数仅在C语言使用)
‘a’,’b’… “example”
湖南理工学院 胡文静 博士
湖南理工学院 胡文静 博士
9
堆栈操作
◆ 堆栈设置: size .set stack .usect
STM
120
;在RAM区开辟堆栈
“STACK”, size ;区,共120单元;
#stack+size, SP ;将堆栈空间的高地址送堆
;栈指针SP
◆ 堆栈区大小的确定
① 先开辟较大的堆栈区,用已知数填充;
.word 1
.word 2
label2 .word 3
X
.set 50h
goodsym1 .set 100h+X
goodsym2 .set $
goodsym3 .set label1
goodsym4 .set label2-label1
无效定义的表达式举例:
.global Y
汇编语言程序设计(ppt 152页)

.STACK 64
;-------------------------------------------
.DATA
VALUE1
DW 2050
VALUE2
DW 500
SUM
DW 2 DUP(?)
PRODUCT
DW 2 DUP(?)
;-------------------------------------------
EXTRN
SUBPROG1: FAR
EXTRN
SUBPROG2: FAR
PUBLIC VALUE1,VALUE2,SUM,PRODUCT
;declare data here to be shared
.MODEL SMALL
;-------------------------------------------
myfile.crf Other obj files
LINKER PROGRAM
myfile.map myfile.exe
5.3 模块化的程序设计
(从功能分析——战略上看)
主模块
模块1
模块2
模块N
库存更新
输入销售 记录
部分库存 更新
输出结果
打印总库 存
打印各部 门库存
打印订货 清单
;one file will contain the main module:
般技巧。 3. 掌握子程序与堆栈技术。 4. 了解宏汇编和宏指令的应用。
Байду номын сангаас
5.1 程序设计概述
客观世界的 对象和操作
客观世界的算法
问题空间
客观世界的对象
人们对结果的解释
程序员对问题的表达