文档介绍:第3章汇编语言程序设计
主要内容:
汇编语言源程序的结构
汇编语言语句格式
伪指令
功能调用
汇编语言程序设计
1
汇编语言概述
1、机器语言——二进制数形式的指令和数据。
B0 64 是什么意思?这就是机器语言。既不直观,又不易理解和记忆.
2、汇编语言---- MOV AL,64H ;很容易记忆理解,这就是助记符。
助记符——用便于记忆的英语单词表示的指令操作码。它反映了指令的功能和主要特征,便于人们理解和记忆。
指令除了操作码以外,还有一个操作数问题。
操作数可能放在存储器中,这就涉及操作数的地址。程序中遇到转移指令或调用指令,也需要知道转移地址,若采用具体地址就很不方便,一旦有错,改动也很麻烦。于是人们采用标号或符号来代替地址。
2
LP1: mov ax,VAR
…
loop LP1
汇编语言——指令助记符,符号地址,标号,伪指令等语言元素的集合以及这些元素使用的规则。
用汇编语言编写的程序叫汇编语言源程序。
汇编源程序需翻译成机器语言,变成可执行文件,机器才能执行,这个翻译过程叫汇编。——高级语言中称该过程为“解释”或“编译”。执行翻译的程序称为“汇编程序”。
源程序的编译程序
汇编程序
汇编语言源程序
机器语言目标程序
3
汇编语言程序设计与执行过程
汇编(编译)
调试最终程序
小汇编:ASM 宏汇编:MASM
3、高级语言:通用性强。例:MATLAB、C、Pascal
4
汇编语言源程序的格式
汇编语言源程序通常由一个或几个程序模块组成,每个模块一般由三个逻辑段组成:
数据段——存放数据、变量 DATA SEGMENT
DATA EDNS
堆栈段——堆栈区域 STACK SEGMENT
STACK ENDS
代码段——存放程序指令 CODE SEGMENT
CODE EDNS
分段结构
5
一个基本的汇编语言程序框架如下:
stack SEGMENT PARA ‘stack‘
DB 100 DUP(‘stack’)
stack ENDS
data SEGMENT
<数据、变量在此定义>
data ENDS
code SEGMENT
ASSUME CS:code, DS:data, ES:data
start: MOV AX, data
MOV DS, AX
MOV ES, AX
<此处加入你自己的程序段>
MOV AH, 4CH
INT 21H
code ENDS
END start
堆栈段
数据段
代码段
6
例:将两个五字节的16进制数相加
DATA SEGMENT ;定义数据段
DATA1 DB 0F8H,60H,0ACH,74H,3BH ;变量一,字节
DATA2 DB 0C1H,36H,93H,0D5H,20H ;变量二,字节
DATA ENDS ;数据段结束
CODE SEGMENT ;定义代码段
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX ;初始化DS
MOV CX,5 ;置循环次数送CX
MOV SI,0 ;(SI)=0
CLC ;(CF)=0
7
LOOPER: MOV AL,DATA2[SI] ;取一个字节加数
ADC DATA1[SI],AL ;与被加数相加,带进位加法
INC SI ;SI加1
DEC CX ;CX减1
JNZ LOOPER ;若(CX)不等于0,转LOOPER
MOV AH,4CH
INT 21H ;返回DOS
CODE ENDS ;代码段结束
END START ;源程序结束
注:MOV AH,4CH
INT 21H ;DOS功能调用,结束正在运行的程序,返回DOS
8
汇编语言语句的类型和组成
汇编语言的语句有两种:
指令性语句——由8086指令助记符构成的语句
指令性语句的格式为:
标号: 指令助记符目的操作数,源操作数;注释
注:各部分之间至少要用一个空格作为分隔符。
指令性语句由CPU执行,每一条指令性语句都有一条机器码指令与其对应指令性语句汇编时生成机器码;
例:LOOPER: MOV AL,DATA[SI]
9
汇编语言的语句有两种:
指示性语句——由伪指令构成的语句
指示性语句的格式为:
名字伪指令操作数1,操作数2,…,操作数n ;注释
注:各部分之间至少要用一个空格作为分隔符。
指示性语句由汇编程序执行。它指出汇编程序应如何对源程序进行汇编,如何定义变量、分配存储单元以及指示程序开始和结束等。指