4.汇编语言语法与其程序格式课件.ppt
文本预览下载声明
第三章汇编语言程序格式;概述1; 4.1.2 汇编语言的程序格式
使用汇编语言编写程序时必须遵循的语法规则。
完整的汇编语言源程序由段组成:若干个代码段、数据段、附加段或堆栈段;独立运行的程序必须包含一个代码段,并指出程序的启动语句;所有的执行语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内;堆栈段不是必须的,但最好设置堆栈段。
编写汇编语言源程序通常应遵循所谓“标准格式”,本书介绍标准格式的两种表示形式,一种符合MASM 5.0及更新版本的语法规则,称为“简化段定义格式”;另一种符合早期版本的语法规则,称为“完整段定义格式”(5.0及以后的版本也支持)。;4.1 汇编语言语句格式 ;;;;; 4.2 参数、变量和标号伪指令
4.2.1 数值型参数
常数、数值表达式、运算符及运算符
的优先级
4.2.2 变量定义伪指令
4.2.3 变量和标号的属性
变量和标号的三种属性、属性操作符;3.2.1 数值型参数;数值型参数;数值型参数;数值型参数;数值型参数; 3.2.2 变量定义伪指令
为变量申请固定长度的存储空间,并将相应存储单
元初始化。
一般格式:
变量名为用户自定义的标识符,表示初值表首个
数据的偏移地址,称为符号地址。如省略变量名,
汇编程序只为初值表分配空间,无符号地址。
伪指令助记符:指DB、DW等。
初值表是由逗号分割开的参数,可以是常数、表
达式、问号、DUP等。问号(?)表示初值不确定,
即不赋初值;DUP为重复分配操作符,格式为:
重复次数 DUP(被重复数据列表);变量定义伪指令(2);变量定义伪指令(3);变量定义伪指令(4);变量定义伪指令(5);变量定义伪指令(6);变量定义伪指令(7);变量定义伪指令(8)(end);3.2.3 变量和标号的属性(1);变量和标号的属性(2);地址操作符(1);类型操作符(1); 4.3.2 简化段定义格式
简化段定义标准格式:
.model small
.stack
.data
.code
.startup
.exit 0
end;存储模式;TINY 模式;SMALL 模式;;预定义符号;程序开始;数据段、堆栈段调整示意图;程序结束; 4.3.1 完整段定义格式
1.段定义伪指令
段名 SEGMENT [定位] [组合] [段字] [‘类别’]
………
段名 ENDS
⑴定位属性:指定逻辑段的起始地址
BYTE:为下一个可用的字节地址(xxxx xxxxB)
WORD:为下一个可用的偶数地址(xxxx xxx0B)
DWORD:下一个可被4整除的地址(xxxx xx00B)
PARA:下一个可被16整除的地址(xxxx 0000B)
PAGE:下一个可被256整除的地址(0000 0000B) ;完整段定义格式;段字属性、类别属性;指定段寄存器;段组伪指令;段顺序伪指令 ; 例 4.7:
按要求写出适当的段定义:数据段起始于字边界,连接时同名逻辑段连接成一个物理段,类别名为‘data’;堆栈设置在数据段内,起始地址为DS:100处,大小为200个字,sp指向栈顶;堆栈区后面为100个字的数组array;代码段cseg将100个字压入自设的堆栈。
dseg segment word public ‘data’
org 100h
dw 200 dup(?)
topsp equ this word
array dw 100 dup(5868h)
dseg ends;cseg segment ‘code’
assume cs:cseg,ds:dseg,ss:dseg
start: mov ax,dseg
mov ds,ax
mov ss,ax
mov sp,offset topsp
………
mov ah,4ch
int 21 h
cseg ends
end start;例.6 在程序中使用段组合
stackseg segment stack
db 256 dup(?)
stackseg ends
data1 segment word public const
const1 dw 100
data1 ends
data2 segment word public vars
var1 dw ?
data2 ends
datagroup group data1,data2 ;进行段组合
codeseg segment para public co
显示全部