《汇编语言语法》PPT课件.ppt
《《汇编语言语法》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《汇编语言语法》PPT课件.ppt(54页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、汇编语言语法dataSEGMENT;数据段数据段varDB?dataENDScodeSEGMENT;代码段代码段ASSUMECS:code,DS:datastart:MOVAX,dataMOVDS,AXMOVvar,CLMOVAH,4CHINT21H;返回返回DOScodeENDSENDstart例:例:一、汇编语言程序格式一、汇编语言程序格式段结构段结构整个源程序由段组成,段名通过伪指令进行定义整个源程序由段组成,段名通过伪指令进行定义每个段由若干语句组成每个段由若干语句组成整个源程序以整个源程序以END结束结束dataSEGMENT;数据段数据段varDB?dataENDScodeSEGM
2、ENT;代码段代码段ASSUMECS:code,DS:datastart:MOVAX,dataMOVDS,AXMOVvar,CLMOVAH,4CHINT21H;返回返回DOScodeENDSENDstart例:例:一、汇编语言程序格式一、汇编语言程序格式语句结构语句结构1.名字项名字项l据语句功能的不同,据语句功能的不同,名字项可用来表示名字项可用来表示:段段名名、变变量量名名、标标号号、过过程程名名以以及常量名及常量名等。等。当当为为指指令令性性语语句句,该该项项为为标标号号,必必须加须加“:”当当为为伪伪指指令令语语句句时时,该该项项为为名名字字,没有没有“:”dataSEGMENT;数据
3、段数据段varDB?dataENDScodeSEGMENT;代码段代码段ASSUMECS:code,DS:datastart:MOVAX,dataMOVDS,AXMOVvar,CLMOVAH,4CHINT21H;返回返回DOScodeENDSENDstartl名字项用一个符号表示。名字项用一个符号表示。对符号的规定对符号的规定:由字符由字符AZ,az,09及特殊符号(及特殊符号(,$,_,.,?),?)等组成,最长等组成,最长31个字符,超出部分忽略。个字符,超出部分忽略。不能用数字打头,以免与十六进制数相混。不能用数字打头,以免与十六进制数相混。不使用汇编程序中的保留字。不使用汇编程序中的保
4、留字。(如指令的助记符等如指令的助记符等)对定义的符号不区分大小写。对定义的符号不区分大小写。2.助记符项助记符项助记符可以是指令、伪操作中的助记符。助记符可以是指令、伪操作中的助记符。对于指令对于指令,汇编程序将其翻译成机器语言指令。,汇编程序将其翻译成机器语言指令。MOVAX,100B80001对于伪操作对于伪操作,汇编程序据其要求的功能进行处理。,汇编程序据其要求的功能进行处理。dataSEGMENTdata与一段值对应与一段值对应stringDBTsinghuastring与一内存地址对应与一内存地址对应3操作数项操作数项l操作数给出参与操作的数或数所在的地方。操作数给出参与操作的数或
5、数所在的地方。l操作数多于一个时,用逗号分开。操作数多于一个时,用逗号分开。l操作数可以是操作数可以是常数常数、寄存器、存储器操作数、寄存器、存储器操作数、标号名、过程名或标号名、过程名或表达式表达式等。等。4注释项注释项l由分号引出,用来说明语句或程序的功能。由分号引出,用来说明语句或程序的功能。汇编程序对分号后的内容不做处理。汇编程序对分号后的内容不做处理。l作用:作用:注释程序,增强程序可读性。注释程序,增强程序可读性。可放在语句最前,暂时注释某语句,调试程序用。可放在语句最前,暂时注释某语句,调试程序用。例例 、;MOVAH,2;显示提示信息显示提示信息;MOVDL,A;INT21H
6、、常量常量二进制二进制xxxxxxxxBxxxxxxxxB01000101B01000101B八进制八进制xxxOxxxO 或或xxxQxxxQ721O721O或或721Q721Q十进制十进制xxxxxxxx或或xxxxDxxxxD19911991或或1991D1991D十六进制十六进制xxxxHxxxxH0F1D4H0F1D4H字符串字符串xxxxxx或或“xxx”“xxx”ABAB数值常量数值常量符号常量(用符号常量(用EQUEQU或或=定义)定义)二、基本数据常量、变量、标号二、基本数据常量、变量、标号l字符常量,用单引号表示。字符常量,用单引号表示。如如1234lA、B、C、D、E、F
7、开头的十六进制数前面加开头的十六进制数前面加0,与与H结尾的标识符区别。结尾的标识符区别。如如寄存器名寄存器名AH、BH、CH、DH变量名变量名abcdH等等例例 movAL,0AHmovAL,AHmovBX,0abcdH注意注意:3个及其以上的字符,个及其以上的字符,只能用只能用DB定义定义str1DWabcdstr2DDabcd内存单元的名字内存单元的名字,由由DB/DW/DD/DQ/DTDB/DW/DD/DQ/DT定义定义BUF DB?BUF DB?MOV BUF,ALMOV BUF,AL变量的三种属性:变量的三种属性:段值段值 SEG SEG偏移量偏移量 OFFSET OFFSET类型
8、类型 BYTE/WORD/.BYTE/WORD/.变量变量指令存放单元的符号地址指令存放单元的符号地址,是转移是转移/调用调用/循环指令循环指令的操作数的操作数标号的三种属性:标号的三种属性:段值段值 SEG SEG偏移量偏移量 OFFSET OFFSET类型类型 NEAR/FAR NEAR/FAR标号标号伪指令语句没有对应的机器代码,经汇编后不伪指令语句没有对应的机器代码,经汇编后不产生目标代码产生目标代码主要完成变量的定义、存储器的分配、段的定主要完成变量的定义、存储器的分配、段的定义和分配、过程的定义、程序开始和结束指示等义和分配、过程的定义、程序开始和结束指示等三、伪指令语句三、伪指令
9、语句定义变量、分配存储单元等定义变量、分配存储单元等变量名变量名 DB/DW/DD/DQ/DT DB/DW/DD/DQ/DT 操作数,操作数,操作数,操作数功能:把操作数存入以变量名所指示的存储单功能:把操作数存入以变量名所指示的存储单元为首地址的存储区中元为首地址的存储区中操作数可以是:常数、字符串、变量、数值表达操作数可以是:常数、字符串、变量、数值表达式、?、式、?、N DUPN DUP表达式等表达式等VAR1DW1234HVAR2DB12H,23H,34HVAR3DBThisisastringVAR4DW?表示未初始化的数表示未初始化的数1、数据定义伪指令、数据定义伪指令1、数据定义伪
10、指令、数据定义伪指令注意注意:3个及其以上的字符,个及其以上的字符,只能用只能用DB定义定义str1DWabcdstr2DDabcdDBDB定义字节,表示每个操作数占用一个字节定义字节,表示每个操作数占用一个字节DWDW定义字,表示每个操作数占用定义字,表示每个操作数占用2 2个字节个字节DDDD定义双字,表示每个操作数占用定义双字,表示每个操作数占用4 4个字节个字节DQDQ定义四个字,表示每个操作数占用定义四个字,表示每个操作数占用8 8个字节个字节DTDT定义定义1010个字节,表示每个操作数占用个字节,表示每个操作数占用1010个字节个字节(1)赋值伪指令)赋值伪指令EQU标识符标识符
11、EQU操作数操作数ABC EQU2000HXYZ EQUBP+5新标号新标号EQU老标号老标号AADEQUPAR_3COUNTEQUCX赋值伪指令赋值伪指令EQU定义后的标识符不能重复定义定义后的标识符不能重复定义(2)等号伪指令)等号伪指令“=”标识符标识符=操作数操作数与与EQU执行过程类似执行过程类似允许标识符重复定义允许标识符重复定义2 2、标识符赋值与解除伪指令、标识符赋值与解除伪指令(3)解除伪指令)解除伪指令PURGEPURGE标识符标识符1,标识符,标识符2,标识符,标识符3,对对EQU定义过的标识符进行解除,可重新定义定义过的标识符进行解除,可重新定义(4)别名定义伪指令)别
12、名定义伪指令LABEL格式格式:别名别名LABEL类型属性类型属性例如例如BYTE-ARRAYLABELBYTEWORD-ARRAYDW100DUP(?)MOVWORD-ARRAY,0把第一个字置把第一个字置0MOVBYTE-ARRAY,0把第一个字节置把第一个字节置02 2、标识符赋值与解除伪指令、标识符赋值与解除伪指令段名段名SEGMENT定位类型定位类型组合类型组合类型分类名分类名段体段体段名段名ENDSSEGMENT/ENDS总是成对使用总是成对使用,以指定段的名以指定段的名称和范围称和范围通常用通常用DATA作为数据段的段名,作为数据段的段名,CODE作为代作为代码段的段名,码段的段
13、名,STACK作为堆栈段的段名作为堆栈段的段名.3、段定义伪指令、段定义伪指令(1)SEGMENT/ENDS伪指令伪指令定位类型(定位方式):给出了实际段起点的类型。缺定位类型(定位方式):给出了实际段起点的类型。缺省为省为PARAPAGE指定起始地址低指定起始地址低8位是位是0,即值可以被,即值可以被256整除(页边界)整除(页边界)PARA指定起始地址低指定起始地址低4位是位是0,即值可以被,即值可以被16整除(段边界)整除(段边界)WORD指定起始地址最低位是指定起始地址最低位是0,即值可以被,即值可以被2整除(字边界)整除(字边界)BYTE指定起始地址是任意值指定起始地址是任意值000
14、00000PAGE0000PARA0WORDBYTE定位类型定位类型确定各个逻辑段的组合方式。缺省时为确定各个逻辑段的组合方式。缺省时为NONE,认为该段不准备,认为该段不准备与其他同名段相连接的与其他同名段相连接的PUBLIC:告诉连接程序将本段与其他同名段连接起来,公用告诉连接程序将本段与其他同名段连接起来,公用一个起点地址,形成一个物理段一个起点地址,形成一个物理段COMMON:本段与同名同类别的段公用同一段起始地址,即同:本段与同名同类别的段公用同一段起始地址,即同名同类段相重叠,段长度即为最长段的长度名同类段相重叠,段长度即为最长段的长度AT表达式:表达式:本段定位在表达式指定的段地
15、址处本段定位在表达式指定的段地址处STACK:表明本段是堆栈段,连接方式同表明本段是堆栈段,连接方式同PUBLIC,连接后,连接后段起始地址在段起始地址在SS寄存器中寄存器中MEMORY:本段在连接时定位在所有段之上,即最高地址处本段在连接时定位在所有段之上,即最高地址处分类名分类名:使用时须用单引号括起来使用时须用单引号括起来凡分类名相同的段在连接时均按照先后顺序连接起来凡分类名相同的段在连接时均按照先后顺序连接起来组合类型组合类型ASSUME段寄存器:段名,段寄存器:段名,段寄存器:段名,段寄存器:段名功能:定义当前有效的四个逻辑段,指明段与段寄存功能:定义当前有效的四个逻辑段,指明段与段
16、寄存器的关系;器的关系;ASSUME语句通常作为代码段的第一条语句,一般语句通常作为代码段的第一条语句,一般数据段和代码段是必须的数据段和代码段是必须的(2)段分配伪指令段分配伪指令ASSUMEq代码段寄存器代码段寄存器CS的值由系统在初始化时自动设置的值由系统在初始化时自动设置q其他段寄存器的初始化一般在程序开始,将段基址装入其他段寄存器的初始化一般在程序开始,将段基址装入例例:ASSUMECS:CSEG,DS:DSEGASSUME是伪指令,段寄存器实际地址值的装入必是伪指令,段寄存器实际地址值的装入必须通过指令语句须通过指令语句CSEGSEGMENTASSUMECS:CSEG,DS:DSE
17、GMOVAX,DSEGMOVDS,AXCSEGENDS4、过程定义伪指令、过程定义伪指令格式:过程名格式:过程名 PROC PROC 属性属性(NEAR(NEAR 或或FAR)FAR)RET RET 过程名过程名 ENDP ENDP调用格式为:调用格式为:CALL CALL 过程名过程名PROC,ENDP,NEAR,FAR功能:定义一个主程序可以用功能:定义一个主程序可以用CALL调用的过程调用的过程5、程序开始与结束伪指令、程序开始与结束伪指令格式:格式:NAME NAME 程序名程序名 TITLE TITLE 文本名文本名(1)目标模块命名)目标模块命名NAME、TITLE功能:为源程序目
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言语法 汇编语言 语法 PPT 课件
限制150内