4-1汇编语言语法课件

PPT
  • 阅读 40 次
  • 下载 0 次
  • 页数 54 页
  • 大小 258.001 KB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
4-1汇编语言语法课件
可在后台配置第一页与第二页中间广告代码
4-1汇编语言语法课件
可在后台配置第二页与第三页中间广告代码
4-1汇编语言语法课件
可在后台配置第三页与第四页中间广告代码
4-1汇编语言语法课件
4-1汇编语言语法课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 54
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】4-1汇编语言语法课件.ppt,共(54)页,258.001 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-44728.html

以下为本文档部分文字说明:

汇编语言语法dataSEGMENT;数据段varDB?dataENDScodeSEGMENT;代码段ASSUMECS:code,DS:datastart:MOVAX,dataMOVDS,AXMOVvar,CLMOVAH,4CHINT21H;返

回DOScodeENDSENDstart例:一、汇编语言程序格式——段结构整个源程序由段组成,段名通过伪指令进行定义每个段由若干语句组成整个源程序以END结束[名字][:]助记符[操作数,][;注释]名字项助记符项操作数项注释项dataSEGM

ENT;数据段varDB?dataENDScodeSEGMENT;代码段ASSUMECS:code,DS:datastart:MOVAX,dataMOVDS,AXMOVvar,CLMOVAH,4CHINT21H;返回DOSc

odeENDSENDstart例:一、汇编语言程序格式——语句结构[名字][:]助记符[操作数,][;注释]名字项助记符项操作数项注释项1.名字项据语句功能的不同,名字项可用来表示:段名、变量名、标号、过程名以及常量名等。当为指令性语句,该项为标号,必须加“:”当为伪指令语句时,该项为

名字,没有“:”dataSEGMENT;数据段varDB?dataENDScodeSEGMENT;代码段ASSUMECS:code,DS:datastart:MOVAX,dataMOVDS,AXMOVvar,CLMOVAH,4CHINT21H;返回DOScod

eENDSENDstart名字项用一个符号表示。对符号的规定:①由字符A~Z,a~z,0~9及特殊符号(@,$,_,.,?)等组成,最长31个字符,超出部分忽略。②不能用数字打头,以免与十六进制数相混。③不使用汇编程序中的保留字。(如指令的助记符等)④对定义的符号不区分大小写

。[名字][:]助记符[操作数,][;注释]名字项助记符项操作数项注释项[名字][:]助记符[操作数,][;注释]名字项助记符项操作数项注释项2.助记符项助记符可以是指令、伪操作中的助记符。对于指令,汇编程序将其翻译成机器语言指令。MOVAX,100→B80001

对于伪操作,汇编程序据其要求的功能进行处理。dataSEGMENT→data与一段值对应stringDB„Tsinghua‟→string与一内存地址对应3.操作数项操作数给出参与操作的数或数所在的地方。操作数多于一个时,用逗号分开。操作数可以是常数、寄存器、

存储器操作数、标号名、过程名或表达式等。[名字][:]助记符[操作数,][;注释]名字项助记符项操作数项注释项4.注释项由分号引出,用来说明语句或程序的功能。汇编程序对分号后的内容不做处理。作用:①注释程序,增强程序可读性。②可放在语句最前,暂时注

释某语句,调试程序用。例、、、;MOVAH,2;显示提示信息;MOVDL,‟A‟;INT21H、、、[名字][:]助记符[操作数,][;注释]名字项助记符项操作数项注释项常量二进制xxxxxxxxB01000101B八进制xxxO或xxxQ721O或721Q十进制xxxx或xxxxD199

1或1991D十六进制xxxxH0F1D4H字符串‘xxx‟或“xxx”„AB‟数值常量符号常量(用EQU或=定义)二、基本数据常量、变量、标号字符常量,用单引号表示。如‘1234‟A、B、C、D、E、F开头的十六进制数前面加0,与

H结尾的标识符区别。如寄存器名AH、BH、CH、DH变量名abcdH等例movAL,0AHmovAL,AHmovBX,0abcdH注意:3个及其以上的字符,只能用DB定义str1DW„abcd‟str2DD„abcd‟

内存单元的名字,由DB/DW/DD/DQ/DT定义BUFDB?MOVBUF,AL变量的三种属性:段值SEG偏移量OFFSET类型BYTE/WORD/...变量指令存放单元的符号地址,是转移/调用/循环指令的操作数

标号的三种属性:段值SEG偏移量OFFSET类型NEAR/FAR标号伪指令语句没有对应的机器代码,经汇编后不产生目标代码主要完成变量的定义、存储器的分配、段的定义和分配、过程的定义、程序开始和结束指示等三、伪指令语句定义变量、分配存储单元等变量名DB/DW/DD/DQ/DT操作数,…,

操作数功能:把操作数存入以变量名所指示的存储单元为首地址的存储区中操作数可以是:常数、字符串、变量、数值表达式、?、NDUP表达式等VAR1DW1234HVAR2DB12H,23H,34HVAR3DB„Thisisastring‟VAR4DW??表示未初始化的数1、数

据定义伪指令1、数据定义伪指令注意:3个及其以上的字符,只能用DB定义str1DW„abcd‟str2DD„abcd‟DB——定义字节,表示每个操作数占用一个字节DW——定义字,表示每个操作数占用2个字节DD——定义双字,表示每个操作数占用4个字节DQ——定义四个

字,表示每个操作数占用8个字节DT——定义10个字节,表示每个操作数占用10个字节(1)赋值伪指令EQU标识符EQU操作数ABCEQU2000HXYZEQU[BP+5]新标号EQU老标号AADEQUPAR_3COUNTEQUCX赋值伪指令EQU定义后的标识符不能重复定

义(2)等号伪指令“=”标识符=操作数与EQU执行过程类似允许标识符重复定义2、标识符赋值与解除伪指令(3)解除伪指令PURGEPURGE标识符1,标识符2,标识符3,……对EQU定义过的标识符进行解除,可重新定义(4)别名定义伪指令LABEL格式:别名LABEL类型属性例如BY

TE-ARRAYLABELBYTEWORD-ARRAYDW100DUP(?)MOVWORD-ARRAY,0把第一个字置0MOVBYTE-ARRAY,0把第一个字节置02、标识符赋值与解除伪指令段名SEGMENT定位类型组合类型‘分类名’段体段名ENDSSEGMENT/ENDS总是成

对使用,以指定段的名称和范围通常用DATA作为数据段的段名,CODE作为代码段的段名,STACK作为堆栈段的段名.3、段定义伪指令(1)SEGMENT/ENDS伪指令定位类型(定位方式):给出了实际段起点的类型。缺省为PARAPAGE-指定起始地址低8位是0,即值可以被25

6整除(页边界)PARA-指定起始地址低4位是0,即值可以被16整除(段边界)WORD-指定起始地址最低位是0,即值可以被2整除(字边界)BYTE-指定起始地址是任意值××××××××××××00000000PAGE××

××××××××××××××0000PARA×××××××××××××××××××0WORD××××××××××××××××××××BYTE定位类型确定各个逻辑段的组合方式。缺省时为NONE,认为该段不准备与其他同名段相连接的PUBLIC:告诉连接程序将本段与其他同名段连接起来,公用一个起

点地址,形成一个物理段COMMON:本段与同名同类别的段公用同一段起始地址,即同名同类段相重叠,段长度即为最长段的长度AT表达式:本段定位在表达式指定的段地址处STACK:表明本段是堆栈段,连接方式同PUBLIC,

连接后段起始地址在SS寄存器中MEMORY:本段在连接时定位在所有段之上,即最高地址处分类名:使用时须用单引号括起来凡分类名相同的段在连接时均按照先后顺序连接起来组合类型ASSUME段寄存器:段名,…,段寄存器:段名功能:定义当前有效的四个逻辑段,指明段与段

寄存器的关系;ASSUME语句通常作为代码段的第一条语句,一般数据段和代码段是必须的(2)段分配伪指令ASSUME代码段寄存器CS的值由系统在初始化时自动设置其他段寄存器的初始化一般在程序开始,

将段基址装入例:ASSUMECS:CSEG,DS:DSEGASSUME是伪指令,段寄存器实际地址值的装入必须通过指令语句CSEGSEGMENTASSUMECS:CSEG,DS:DSEGMOVAX,DSEGMOVDS,AX…CSEGENDS4、过程定义伪指令格式:过程名PROC属性(NEAR或F

AR)……RET过程名ENDP调用格式为:CALL过程名PROC,ENDP,NEAR,FAR功能:定义一个主程序可以用CALL调用的过程5、程序开始与结束伪指令格式:NAME程序名TITLE文本名(1)目标模块命名NAME、TITLE功能:

为源程序目标模块赋一个程序名格式:ORG表达式作用:给出该定位指令下一条指令的起始偏移地址。即把下一条语句定义的内存数据或是程序从表达式的起点(偏移地址)开始连续存放,直至遇到新的ORG指令。表达式的值

为无符号数ORG2000H…(IP=2400H)ORG2464H…在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)访问外部标识符的伪指令E

XTRN,PUBLIC(2)对准伪指令EVEN格式:EVEN功能:使下一条语句的地址调整为偶地址(3)条件编译伪指令(MASM提供)格式:IF;如果条件成立…[ELSE];[否则]…ENDIF;结束条件汇编语句data1SEGMENT;数据段1,(可据需要设定,也可无

)……;变量定义data1ENDSdata2SEGMENT;数据段2(可据需要设定,也可无)……data2ENDScodeSEGMENT;程序段ASSUMECS:code,DS:data1,ES:data2start:MOVAX,data1;程序主体部分M

OVDS,AX、、、、、、MOVAH,4CH;返回DOSINT21HcodeENDSENDstart完整汇编语言程序框架:DATASEGMENTMESSAGEDB"Helloworld!“,0DH,0A

HDB"Thisismyfirstasmprogram.$"DATAENDSSSEGSEGMENTSTACKDB100DUP(?)SSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DATA,SS:SSEGSTART:MOVAX,DATAMOVDS,

AXMOVDX,OFFSETMESSAGEMOVAH,9INT21HMOVAH,4CHINT21HCSEGENDSENDSTART完整的段定义由操作数和运算符组成的序列操作数可以是寄存器、常量(数值常量、符号常量)、存储器操作数(标号、变量)运

算符包括:算术运算符、逻辑运算符、关系运算符、数值返回运算符和属性运算符四、表达式由常量、标号、变量和一些操作符构成。汇编程序对表达式进行运算后,得到一个确定的数值,再把这个数值汇编到指令中。据表达式所表示的内容

分:数字表达式、地址表达式。表达式是指令或伪操作的操作数;表达式中的操作符由汇编程序完成。例MOVAX,12-4;MOVAX,8;数字表达式LEABX,[SI+4];地址表达式表达式(1)算术运算符+、-、*

、/、MOD、SHL、SHR(2)逻辑运算符AND、OR、NOT、XOR(3)关系运算符EQ、NE、LT、GT、LE、GEANDAX,((NLT5)AND30)OR((NGE5)AND20)当N<5时,指令为ANDAX,30当N>=5时,指令为ANDAX,20运算符SEG变量/标号——返回段基

址OFFSET变量/标号——返回偏移量TYPE变量/标号——返回类型变量返回类型:1字节、2字、4双字标号返回类型:-1NEAR、-2FARLENGTH变量——返回数据项总数(针对DUP表达式)SIZE变量——返回字节总数(4)分析运算符(数值返回运算符)

YYDW6DUP(?)则:LENGTHYY=6SIZEYY=12TYPEYY=2SEG取符号地址的段地址OFFSET取符号地址的偏移地址例MOVAX,SEGYYMOVBX,OFFSETYYDATASEGMENTXXDB'Hello!‟DATAENDSEXTRASE

GMENTYYDW6dup(?)EXTRAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:EXTRASTART:CLDMOVAX,SEGYYMOVES,AXMOVDI,OFFSETYYMOVCX,6…….CODEENDSENDSTART注意:SEG、

OFFSET只能对变量或标号(符号地址)操作MOVAX,SEG[BX]MOVBX,OFFSET[SI](5)合成运算符(属性运算符)(1)段操作符格式:段前缀:变量或地址表达式用来表示某个变量或地址被修改

到哪个段寄存器提供的段基址中MOVAX,ES:[SI](2)PTR定义符号名为新类型格式:类型PTR表达式MOVWORDPTR[1000],0MOVWORDPTR[1000],0可以重新定义已定义过的变量或是标号若已定义DATA3为字变量,可以有MOVBYTE

PTRDATA3,AL(3)THIS与PTR类似,为某个符号名建立新类型,常与EQU联用格式:THIS类型XYZEQUTHISBYTE相当于BYTEPTRXYZLABCEQUTHISBYTELABDDW4321H,2255HMOVA

L,LABC;AL=21HMOVAX,LABD;AX=4321H(4)SHORT格式:SHORT标号功能:用来指出转移类指令中目的地址的属性(5)HIGH、LOW格式:HIGH标号或变量LOW标号或变量功能:对一个数或地址,HIGH从

中分离出高位字节,LOW从中分离出低位字节指令语句又叫可执行语句,每一条指令语句对应CPU的一种特定操作,在汇编时将产生一个可供机器执行的机器目标代码指令语句中必须包含一个指令助记符和充分的寻址信息五

、指令语句[名字][:]助记符[操作数,][;注释]名字项助记符项操作数项注释项dataSEGMENT;数据段varDB?dataENDScodeSEGMENT;代码段ASSUMECS:code,DS:datastart:MOV

AX,dataMOVDS,AXMOVvar,CLMOVAH,4CHINT21H;返回DOScodeENDSENDstart例:指令语句结构宏指令是源程序中具有独立功能的一段程序代码只需定义一次,可重复调用六、宏指令语句宏指令定义语句宏指令名MAC

RO宏体ENDMPUSHREGMACROPUSHAXPUSHBXPUSHCXPUSHDXENDM(1)宏定义宏指令名MACRO参数1,参数2,…,参数n宏体ENDMLOADWMACROPR,VARMOVPR,VARMOVAX,[PR]ENDMLOADWSI,W

VAR*****************MOVSI,WVARMOVAX,[SI]带参数的宏指令宏指令名参数列表(2)宏调用LOADWMACROPR,VARMOVPR,VARMOVAX,[PR]ENDMLOADWSI,W

VAR*****************MOVSI,WVARMOVAX,[SI](3)宏展开宏展开是用宏定义时设计的宏体去代替相应的宏指令名,并且用实际参数一一取代形式参数宏展开由汇编软件MASM进行(4)宏嵌套宏嵌套是指宏定义中使用宏调用或宏定义中包括宏定义使用宏时,可能会导致变量、标号

重定义的问题,使用LOCAL伪指令可以解决这一问题。在宏展开时将用??0000,??0001,……,来依次代替各标号格式:LOCAL变量/标号列表SOMEMACROMACROLOCALL1,L2……L1:…….L2:…….ENDM(5)宏定义中的标号•宏指令调用比子程序调用快•子程序调用由微处理

器完成,用CALL实现宏指令调用在汇编过程中由汇编程序完成•子程序调用可以减小目标程序的大小,节约内存空间;宏指令调用不能•宏指令比子程序灵活宏指令与子程序的区别

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?