
第4章程序格式.ppt
43页1,本章主要内容: 1.汇编语言中的伪操作 2.汇编语言程序的格式 3.汇编语言程序的上机过程2,4.1 汇编程序功能 1.汇编语言程序与汇编程序的区别: (1)汇编语言程序:汇编语言编写的源程序 (2)汇编程序:对上述源程序进行翻译的程序 2.汇编程序的主要功能: (1)检查源程序2)测出语法错误 (3)产生目标程序及列表文件 (4)展开宏指令3,3.上机步骤 (1)建立ASM源文件 (2)用MASM将ASM文件汇编成OBJ文件 (3)用LINK将OBJ文件连接成EXE文件 (4)在DOS提示符下执行EXE文件或用DEBUG调试4,4.2 伪操作 一、数据定义及存储器分配伪操作 1.格式: Variable Mnemonic Operand,,Operand ;Comments 即: 变量名 数据定义伪操作 操作数,操作数 ;注释 X DB 1,2,3 变量名:即符号地址,用来记住某一存储单元的偏 移地址 (不是必需的),5, 数据定义伪操作 DB 定义字节,其后的每一个操作数占一个字节 DW 定义字,其后的每一个操作数占一个字 DD 定义双字 DF定义三个字 DQ 定义四个字 DT 定义五个字 操作数:常数或结果是常数的一个表达式。
6,2.执行的操作: 将助记符(DB等)后的操作数存入指定的存储单元中 3.相关操作数和伪操作 (1)操作数 ? 预留存储空间,不存入数据 (2)Repeat_count DUP(Operand,,Operand) 复制某个(或某些)操作数 3 DUP(6,7)6,7,6,7,6,7,,空格,7,4.举例 (1) DATA1 DW 100,100H (2) MESSAGE DB HELLO (3)DATA2 DB 0,?,?,?,0 (4)DATA3 DW 2 DUP(3),8,(5)DW,DD的特殊用途: 用来存变量或标号的偏移地址或整个地址(段、偏移) PAR1 DB 3 P1 DW PAR1 P2 DD PAR1,9,5 .变量的属性(三种) (1)段属性:变量所在段的段地址 (2)偏移属性:从段起始位置到定义变量的位置之间 的距离,以字节为单位 MOV AX,XMOV AX,2000 X的偏移属性是2000H, 其段属性应通过指令预先存放到DS中10,(3)类型属性:定义该变量时第一个数据项所保留的字节数 相应伪操作 类型属性 DB1 DW2 DD4 DF6 DQ8 DT10,11,6. 改变操作数的类型属性的方法 (1) PTR属性操作符 格式: 类型 PTR 变量表达式 类型: BYTE、WORD、DWORD WORD PTR X+1 BYTE PTR Y,12,(2)LABEL伪操作 格式:标号名LABEL 属性 两个不同的变量指向同一存储空间,但类型不同。
X LABEL BYTE Y DW 1234H,BYTE、WORD、DWORD,13,二、表达式赋值伪操作EQU、= 1. EQU 格式:表达式名 EQU 表达式 用途:用一个名字来代替多次出现的同一表达式 B EQU BP+8 MOV AX,B MOV AX,BP+8,14,2. = 用法:与EQU用法类似 B=BP+8 3. 区别 EQU中表达式名不允许重复定义,而=可以 EMP EQU 6 EMP=6 EMP EQU EMP+1 EMP=EMP+1,,15,三、段定义伪操作 1. 段名 SEGMENT 段名 ENDS 2. ASSUME 段寄存器1:段名1,段寄存器2:段名2,16,四、程序的开始和结束伪操作 1.开始伪操作 (一般不用) (1)NAME 模块名 (2)TITLE 名字 指定列表文件的标题 2.结束伪操作 格式:END 标号 作用:表示源程序结束, 其中标号指示程序开始执行的起始地址17,,18,五、地址计数器$ 汇编程序将源程序翻译成目标程序时,每遇到一个新段,就为该段分配一个初值为0的地址计数器,用$表示,然后再对该段中的语句进行汇编,在申请空间或产生目标代码的语句时,$按该语句的目标代码的长度增值。
19,data segment x dw 35H,33H y db 20H array dw 8,$+4,$+4 data ends,0DH,00H,0BH,00H,08H,20H,00H,33H,00H,35H,,00H,,,$=0,20,六、对准伪操作 1. EVEN:使下一个字节地址成为偶数 data segment X db 1,2,3 EVEN Y dw 4,5,6 data ends,21,2. ORG 格式:ORG 常数表达式 作用:使下一字节的地址为常数表达式的值 data segment org 10h x1 dw 425ah org 20h x2 dw 0c596h data ends,22,七、基数控制伪操作 .RADIX 表达式 用途:对默认的基数进行修改 .RADIX 16 MOV AX,0FF,23,4.3 汇编语言程序格式 语句格式:(指令/伪指令) 名字 操作项 操作数 ;注释 一、名字的定义及使用 1.名字的定义 字母:AZ,az 数字:09 专用字符: ?,,,_,$,24,注意: 数字不可放在第一个位置; 用到时必须放在第一个位置; 名字只有前31个字符有效。
25,2. 标号:在代码段中定义,后面跟冒号: 标号具有三种属性: 段属性:是标号所在段的段地址 偏移属性:从段起始地址到定义标号的位置的距离 类型属性:指该示该标号是在本段内引用还是在 其它段中引用,段内为NEAR,段外为FAR26,3.变量的属性 变量也具有三种属性: 段属性:变量所在段的段地址 偏移属性:从段起始地址到定义变量的位置的距离 类型属性:1,2,4,6,8,10,27,二、操作项: 是指令、伪操作或宏指令的助记符 MOV、ADD、MUL、DB等 三、操作数: 可以是常数,寄存器,标号,变量或表达式28,表达式中的相关运算符: 1.算术操作符:+,-,*,/和MOD MOV DX,BLOCK+(6-1)*2 2.逻辑操作符:AND,OR,XOR,NOT MOV AX,3 AND FEH 3.关系操作符:EQ,NE,LT,GT,LE,GE MOV AX, 75 EQ 75 即:(AX)0FFFFH 用0FFFFH表示真,用0000H表示假,29,4.数值回送操作符(5种) (1)TYPE 格式:TYPE 变量或标号 用途:回送该变量类型:DB为1,DW为2等 回送标号类型,NEAR为-1,FAR为-2 MOV AX,TYPE X,30,(2)LENGTH 格式:LENGTH 变量 用途:对于使用DUP操作符的变量, 回送分配给该变量的单元数, 其它情况回送1。
31,X DW 100 DUP(0) Y DD 1,2,3 MOV CX,LENGTH X MOV CX,LENGTH Y,,MOV CX,100,MOV CX,1,32,(3)SIZE 格式: SIZE 变量 用途:回送分配给该变量的字节数, 但此值是LENGTH和TYPE的值的乘积 MOV CX,SIZE X MOV CX,SIZE Y,MOV CX,100*2,MOV CX,1*4,33,(4)OFFSET 格式:OFFSET 变量或标号 用途:回送变量或标号的偏移地址 MOV BX,OFFSET VALUE 等价于 LEA BX,VALUE,34,(5)SEG 格式: SEG 变量或标号 用途:回送变量或标号的段地址 MOV AX,SEG X AX得到变量X所在段的段地址35,四、汇编语言程序的结构 data segment 数据段开始 定义变量 data ends code segment 代码段开始 assume ds:data,cs:code 指定段与相应寄存器的关系 main proc far 定义一个主程序, 一定用FAR属性 start:,36,push ds xor ax,ax push ax 保存段地址和偏移地址,以备返回 mov ax,data mov ds,ax 重新布置数据段地址。
ret main endp 主程序结束 code ends代码段结束 end start整个程序结束,37,4.4 汇编语言程序的上机过程 一、建立ASM文件 在编辑环境(EDIT,写字板)中输入汇编语言程序, 文件名的后缀是ASM38,二、利用MASM产生OBJ,LST和CRF文件,39,(1)OBJ文件:二进制目标文件 (2)LST文件:列表文件 该文件同时列出源程序和机器语言程序清单 一般不用 (3)CRF文件:此文件用来产生交叉引用表REF文件 REF文件列出了用户定义的符号及其所在行列号 一般不用40,三、用LINK产生EXE文件,41,(1)EXE文件:可执行文件 (2)MAP文件,连接映象文件 给出每个段在存储器中的分配情况 一般不用 (3)LIB文件:程序中用到的库文件 一般不用42,四、COM文件 COM文件不允许分段,长度小于64K 入口点必须在100H43,本章总结: 1. 掌握常用的伪操作 2. 熟练掌握汇编语言程序的格式 3. 逐步熟悉上机过程。
