8微型计算机技术程序设计第10讲20150201
第4章汇编语言程序设计 本章要点 汇编语言源程序结构 伪指令 系统功能调用 汇编语言程序设计技术 4.1 汇编语言源程序 4.1.1 汇编语言源程序 汇编语言源程序 用助记符编写的程序。 4.1.1 汇编语言源程序结构 汇编语言源程序按分段结构编写,一般由两个 或三个逻辑段组成: 数据段——存放程序中所需数据和运行结果。 代码段——存放所编程序的代码指令。 堆栈段——执行数据的压栈和弹出操作。 4.1.1 汇编语言源程序结构 DATA SEGMENT DATA ENDS STACK SEGMENTPARA ’STACK’ STACK ENDS CODE SEGMENT CODE ENDS 4.1.2 汇编语言的语句与格式 汇编语言的语句有两种: 指令性语句——由指令助记符构成的语句。 指令性语句由CPU执行,每一条语句都有机器 指令与其对应。 指令性语句只能出现在代码段。 例如: MOVAX, 1234H PUSHAX 4.1.2 汇编语言的语句与格式 指示性语句——由伪指令构成的语句。 名字后面没有冒号。 反映伪指令位置(逻辑地址)和属性; 它指示汇编程序应如何对源程序汇编,指示程 序的开始和结束、如何定义变量等。 4.2 伪指令及其应用 4.2.1 数据定义伪指令 DB:定义字节变量 其后的每个操作数占一个存储单元。 格式: [变量名] DB 数据1,数据2,… 4.2.1 数据定义伪指令 可以存放0~255之间的无符号数; 可以存放-128~+127之间的有符号数; 还可以是字符串,存对应字符的ASCII码。 4.2.1 数据定义伪指令 例如: X1 DB 2, -3 STR DB ’AB’ 4.2.1 数据定义伪指令 DW:定义字变量 其后的每个操作数占两个字节单元。 格式: [变量名] DW 数据1,数据2,… 4.2.1 数据定义伪指令 可以存放0~65535之间的无符号数; 也可以存放-32768~+32767之间的有符号数; 还可以是两个字符。 数据的存放规律是:低字节数据存低地址单元, 高字节数据存高地址单元。 4.2.1 数据定义伪指令 例如: BUF DW 2, -3, 0F800H 4.2.1 数据定义伪指令 DD:定义双字变量 其后的每个操作数占4个字节单元。 格式: [变量名] DD 数据1,数据2,… 4.2.1 数据定义伪指令 例如:BH1 DD 100, 4.2.1 数据定义伪指令 注意:3个及以上的字符,只能用DB定义。 4.2.1 数据定义伪指令 还有两个数据定义伪指令,自己学习。 4.2.1 数据定义伪指令 若仅保留单元,用?表示。 X DB 0A5H Y DW ? 4.2.1 数据定义伪指令 若要重复存放数据,用n DUP()表示,n为重 复的次数。 4.2.1 数据定义伪指令 例如: X DB 100 DUP(0) 从变量X开始,重复放100个字节的0。 4.2.1 数据定义伪指令 例如: BUF DB 200 DUP(1, ?, 2) 初始化字节单元,对1,?和2重复200次。 4.2.1 数据定义伪指令 例如: 数据定义如下: X1 DB 0A5H, 23 Y1 DW 34H BUF DW 10, -1 STR DB ’AB’ VAR DD Z1 DB 2 DUP(?,12) 请画出其存储器分配图。 4.2.2 符号定义伪指令 标识符 EQU 表达式 EQU伪指令给符号定义一个值。 在程序中,凡是出现该符号的地方,汇编时均 用其值代替。 符号定义伪指令不占用存储空间,仅给符号赋 值。 4.2.2 符号定义伪指令 例如: COUNT EQU 100 MOV AX, COUNT MOV BX, COUNT MOV CX, COUNT 4.2.2 符号定义伪指令 需要注意的是,一个符号一经 伪指令赋值 后,在整个程序中,不允许再对同一