《汇编语言语法》PPT课件.ppt_第1页
《汇编语言语法》PPT课件.ppt_第2页
《汇编语言语法》PPT课件.ppt_第3页
《汇编语言语法》PPT课件.ppt_第4页
《汇编语言语法》PPT课件.ppt_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

汇编语言语法,一、汇编语言程序格式段结构,整个源程序由段组成,段名通过伪指令进行定义 每个段由若干语句组成 整个源程序以END结束,一、汇编语言程序格式语句结构,1. 名字项 据语句功能的不同, 名字项可用来表示: 段名、变量名、标号、过程名以及常量名等。 当为指令性语句,该项为标号,必须加“ :” 当为伪指令语句时,该项为名字,没有“ :”,data SEGMENT ; 数据段 var DB ? data ENDS code SEGMENT ;代码段 ASSUME CS:code,DS:data start: MOV AX, data MOV DS , AX MOV var, CL MOV AH , 4CH INT 21H ;返回DOS code ENDS END start,名字项用一个符号表示。 对符号的规定: 由字符AZ ,az ,09及特殊符号(,$,_,.,?) 等组成,最长31个字符,超出部分忽略。 不能用数字打头,以免与十六进制数相混。 不使用汇编程序中的保留字。 (如指令的助记符等) 对定义的符号不区分大小写。,2. 助记符项 助记符可以是指令、伪操作中的助记符。,对于指令,汇编程序将其翻译成机器语言指令。 MOV AX, 100 B8 00 01,对于伪操作,汇编程序据其要求的功能进行处理。 data SEGMENT data与一段值对应 string DB Tsinghua string与一内存地址对应,3操作数项 操作数给出参与操作的数或数所在的地方。 操作数多于一个时,用逗号分开。 操作数可以是常数、寄存器、存储器操作数、 标号名、过程名或表达式等。,4注释项 由分号引出,用来说明语句或程序的功能。 汇编程序对分号后的内容不做处理。 作用: 注释程序,增强程序可读性。 可放在语句最前,暂时注释某语句,调试程序用。 例 、 ; MOV AH, 2 ;显示提示信息 ; MOV DL, A ; INT 21H 、,常量,二进制 xxxxxxxxB 01000101B 八进制 xxxO 或xxxQ 721O或721Q 十进制 xxxx或xxxxD 1991或1991D 十六进制 xxxxH 0F1D4H 字符串 xxx或“xxx” AB,数值常量 符号常量(用EQU或=定义),二、基本数据常量、变量、标号,内存单元的名字,由DB/DW/DD/DQ/DT定义 BUF DB ? MOV BUF,AL 变量的三种属性: 段值 SEG 偏移量 OFFSET 类型 BYTE/WORD/.,变量,指令存放单元的符号地址,是转移/调用/循环指令的操作数 标号的三种属性: 段值 SEG 偏移量 OFFSET 类型 NEAR/FAR,标号,伪指令语句没有对应的机器代码,经汇编后不产生目标代码 主要完成变量的定义、存储器的分配、段的定义和分配、过程的定义、程序开始和结束指示等,三、伪指令语句,定义变量、分配存储单元等 变量名 DB/DW/DD/DQ/DT 操作数,操作数 功能:把操作数存入以变量名所指示的存储单元为首地址的存储区中,操作数可以是:常数、字符串、变量、数值表达式、?、N DUP表达式等,VAR1 DW 1234H VAR2 DB 12H, 23H, 34H VAR3 DB This is a string VAR4 DW ?,?表示未初始化的数,1、数据定义伪指令,1、数据定义伪指令,DB定义字节,表示每个操作数占用一个字节 DW定义字,表示每个操作数占用2个字节 DD定义双字,表示每个操作数占用4个字节 DQ定义四个字,表示每个操作数占用8个字节 DT定义10个字节,表示每个操作数占用10个字节,(1)赋值伪指令EQU 标识符 EQU 操作数 ABC EQU 2000H XYZ EQU BP+5 新标号 EQU 老标号 AAD EQU PAR_3 COUNT EQU CX 赋值伪指令EQU定义后的标识符不能重复定义 (2)等号伪指令“=” 标识符 = 操作数 与EQU执行过程类似 允许标识符重复定义,2、标识符赋值与解除伪指令,(3)解除伪指令PURGE PURGE 标识符1,标识符2,标识符3, 对EQU定义过的标识符进行解除,可重新定义 (4)别名定义伪指令LABEL 格式: 别名 LABEL 类型属性 例如 BYTE-ARRAY LABEL BYTE WORD-ARRAY DW 100 DUP(?) MOV WORD-ARRAY, 0 把第一个字置0 MOV BYTE-ARRAY, 0 把第一个字节置0,2、标识符赋值与解除伪指令,段名 SEGMENT 定位类型 组合类型 分类名 段体 段名 ENDS,SEGMENT/ENDS总是成对使用,以指定段的名称和范围 通常用DATA作为数据段的段名,CODE作为代码段的段名,STACK作为堆栈段的段名.,3、段定义伪指令,(1)SEGMENT/ENDS伪指令,定位类型(定位方式):给出了实际段起点的类型。缺省为PARA PAGE指定起始地址低8位是0,即值可以被256整除(页边界) PARA指定起始地址低4位是0,即值可以被16整除(段边界) WORD指定起始地址最低位是0,即值可以被2整除(字边界) BYTE指定起始地址是任意值 0 0 0 0 0 0 0 0 PAGE 0 0 0 0 PARA 0 WORD BYTE,定位类型,确定各个逻辑段的组合方式。缺省时为NONE,认为该段不准备与其他同名段相连接的 PUBLIC: 告诉连接程序将本段与其他同名段连接起来,公用 一个起点地址,形成一个物理段 COMMON:本段与同名同类别的段公用同一段起始地址,即同 名同类段相重叠,段长度即为最长段的长度 AT表达式: 本段定位在表达式指定的段地址处 STACK: 表明本段是堆栈段,连接方式同PUBLIC,连接后 段起始地址在SS寄存器中 MEMORY: 本段在连接时定位在所有段之上,即最高地址处 分类名: 使用时须用单引号括起来 凡分类名相同的段在连接时均按照先后顺序连接起来,组合类型,ASSUME 段寄存器:段名,段寄存器:段名,功能:定义当前有效的四个逻辑段,指明段与段寄存器的关系; ASSUME语句通常作为代码段的第一条语句,一般数据段和代码段是必须的,(2)段分配伪指令ASSUME,代码段寄存器CS的值由系统在初始化时自动设置 其他段寄存器的初始化一般在程序开始,将段基址装入,例: ASSUME CS:CSEG, DS:DSEG ASSUME是伪指令,段寄存器实际地址值的装入必须通过指令语句 CSEG SEGMENT ASSUME CS: CSEG, DS:DSEG MOV AX, DSEG MOV DS, AX CSEG ENDS,4、过程定义伪指令,格式:过程名 PROC 属性(NEAR 或FAR) RET 过程名 ENDP 调用格式为: CALL 过程名,PROC, ENDP, NEAR, FAR 功能:定义一个主程序可以用CALL调用的过程,5、程序开始与结束伪指令,格式: NAME 程序名 TITLE 文本名,(1)目标模块命名NAME、TITLE 功能:为源程序目标模块赋一个 程序名,格式: ORG 表达式 作用:给出该定位指令下一条指令的起始偏移地址。即把下一条语句定义的内存数据或是程序从表达式的起点(偏移地址)开始连续存放,直至遇到新的ORG指令。表达式的值为无符号数 ORG 2000H (IP=2400H) ORG 2464H 在2400H和2464H间空出100个字节的存储空间,(2)定位伪指令ORG,(3)程序结束指令END,格式: END 标号 说明源文件结束,并给出执行程序的入口地址(标号),6、方式定义伪指令,功能:确定汇编程序的操作方式 .8086 默认操作方式 .386 运行于386方式下,可使用32位寄存器,7、结构定义伪指令,(1)结构定义 格式: 结构名 STRUC 数据定义语句 结构名 ENDS 结构定义不真正为结构分配存储空间,他是在汇编时进行结构说明的 (2)结构存储单元分配及赋值 格式: 结构变量名 结构名 (3)结构引用 格式: 结构变量名. 字段名,8、分组伪指令GROUP,格式: 组名 GROUP 段1,段2, 功能:将各个逻辑段放在同一个64K的物理段内,并给它取个新的名字,即组名,9、其他伪指令,公用符号伪指令 格式: PUBLIC 标识符 指出可被其他模块引用的符号名,可以是变量名、标号、过程名或符号常量 引用符号伪指令 格式:EXTRN 标识符:类型 指出所要访问的其他模块定义的标识符。若标识符为标号,类型为NEAR/FAR;若标识符为变量,则类型为BYTE/WORD/DWORD,(1)访问外部标识符的伪指令EXTRN, PUBLIC,(2)对准伪指令EVEN,格式:EVEN 功能:使下一条语句的地址调整为偶地址,(3)条件编译伪指令(MASM提供),格式: IF ;如果条件成立 ELSE ;否则 ENDIF ;结束条件汇编语句,data1 SEGMENT ;数据段1, (可据需要设定,也可无) ;变量定义 data1 ENDS data2 SEGMENT ;数据段2 (可据需要设定,也可无) data2 ENDS code SEGMENT ;程序段 ASSUME CS: code, DS:data1, ES:data2 start: MOV AX, data1 ;程序主体部分 MOV DS, AX 、 、 MOV AH, 4CH ;返回DOS INT 21H code ENDS END start,完整汇编语言程序框架:,DATA SEGMENT MESSAGE DB “Hello world!“,0DH,0AH DB “This is my first asm program.$“ DATA ENDS SSEG SEGMENT STACK DB 100 DUP(?) SSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DATA,SS:SSEG START: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MESSAGE MOV AH,9 INT 21H MOV AH,4CH INT 21H CSEG ENDS END START,完整的段定义,由操作数和运算符组成的序列 操作数可以是寄存器、常量(数值常量、符号常量)、存储器操作数(标号、变量) 运算符包括:算术运算符、逻辑运算符、关系运算符、数值返回运算符和属性运算符,四、表达式,由常量、标号、变量和一些操作符构成。 汇编程序对表达式进行运算后,得到一个确定的数值, 再把这个数值汇编到指令中。 据表达式所表示的内容分:数字表达式、地址表达式。 表达式是指令或伪操作的操作数; 表达式中的操作符由汇编程序完成。 例 MOV AX, 12 - 4 ;MOV AX, 8 ;数字表达式 LEA BX, SI + 4 ;地址表达式,表达式,(1)算术运算符 +、-、*、/、MOD、SHL、SHR (2)逻辑运算符 AND、OR、NOT、XOR (3)关系运算符 EQ、NE、LT、GT、LE、GE,AND AX, ( (N LT 5) AND 30) OR ( ( N GE 5) AND 20),当N=5时,指令为AND AX, 20,运算符,SEG 变量/标号返回段基址 OFFSET 变量/标号返回偏移量 TYPE 变量/标号返回类型 变量返回类型:1 字节、2 字、4双字 标号返回类型:-1 NEAR、-2 FAR LENGTH 变量返回数据项总数(针对DUP表达式) SIZE 变量返回字节总数,(4)分析运算符(数值返回运算符),YY DW 6 DUP (?) 则: LENGTH YY=6 SIZE YY=12 TYPE YY=2,SEG 取符号地址的段地址 OFFSET 取符号地址的偏移地址 例 MOV AX , SEG YY MOV BX , OFFSET YY,DATA SEGMENT XX DB Hello! DATA ENDS EXTRA SEGMENT YY DW 6 dup (?) EXTRA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, ES:EXTRA START: CLD MOV AX , SEG YY MOV ES , AX MOV DI , OFFSET YY MOV CX , 6 . CODE ENDS END START,(5)合成运算符(属性运算符),(1)段操作符 格式:段前缀:变量或地址表达式 用来表示某个变量或地址被修改到哪个段寄存器提供的段基址中 MOV AX,ES:SI,(2)PTR 定义符号名为新类型 格式:类型 PTR 表达式 MOV WORD PTR 1000, 0 MOV WORD PTR 1000, 0 可以重新定义已定义过的变量或是标号 若已 定义DATA3为字变量,可以有 MOV BYTE PTR DATA3,AL,(3)THIS 与PTR类似,为某个符号名建立新类型,常与EQU联用 格式:THIS 类型 XYZ EQU THIS BYTE 相当于 BYTE PTR XYZ LABC EQU THIS BYTE LABD DW 4321H,2255H MOV AL,LABC ;AL=21H MOV AX,LABD ;AX=4321H,(4)SHORT 格式:SHORT 标号 功能:用来指出转移类指令中目的地址的属性 (5)HIGH、LOW 格式:HIGH 标号或变量 LOW 标号或变量 功能:对一个数或地址,HIGH从中分离出高位字节,LOW从中分离出低位字节,指令语句又叫可执行语句,每一条指令语句对应CPU的一种特定操作,在汇编时将产生一个可供机器执行的机器目标代码 指令语句中必须包含一个指令助记符和充分的寻址信息,五、指令语句,指令语句结构,宏指令是源程序中具有独立功能的一段程序代码 只需定义一次,可重复调用,六、宏指令语句,宏指令

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论