汇编语言程序设计第四章.ppt

汇编语言程序设计第四章.ppt

ID:51974559

大小:314.86 KB

页数:40页

时间:2020-03-26

汇编语言程序设计第四章.ppt_第1页
汇编语言程序设计第四章.ppt_第2页
汇编语言程序设计第四章.ppt_第3页
汇编语言程序设计第四章.ppt_第4页
汇编语言程序设计第四章.ppt_第5页
资源描述:

《汇编语言程序设计第四章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第四章高级汇编语言的语法4.1.1汇编语言语句格式1、机器指令的形式[标号][指令前缀]助记符[操作数][;注释]例如:EXEC:REPMOVSDEST,SOURCE;(OPS)OPD构成汇编语言程序的语句主要包括两类:指令与伪指令。它们之间的区别:指令是程序运行期间由CPU执行的,汇编后由对应的机器代码所取代。伪指令是不可执行的。它只是源程序汇编期间由汇编器处理的命令,用来指示汇编器为数据分配内存空间,或者为汇编器提供源程序结束或段定义等。2、伪指令语句的形式[名字]伪操作命令[参数,…参数][;注释]伪操作命令包括:符

2、号定义:EQU,=,LABEL;数据定义:DB,DW,DQ,DT,RECORD,ORG,SEGMENT,ASSUME,ORG模块定义:EXTERN,PUBLIC,NAME,END过程定义:PROC,ENDP4.1.2数值表达式数值表达式是常量或运算符与常量的组合。表达式的值是在汇编阶段已经确定或得到的值。(1)整常量MOVEAX,0FA5CH(2)字符串常量MOVAX,’Aa’;AX=4161H(3)符号常量COUNT=60*60MOVECX,COUNT;COUNT=3600ECX算法运算符共7种:+,-,*,/,MOD,

3、SHR,SHL对于语句:MOVAL,2可用下列语句替换:VALEQU5MOVAL,VALSHL1;VAL=5=00000101B逻辑右移1位为:00000010B=2注意:移位运算符只对常量移位。而移位指令SHR,SHL只出现在指令码中,对寄存器或内存操作数进行移位操作。实例:VAL=5SHRAL,VALSHL1;若VAL=5,等价于语句SHRAL,10逻辑运算符4种:AND,OR,XOR,NOT,分别对常量按位进行逻辑与,或,异或和非的运算。运算的结果也是一个已知的常量。注意与指令AND,OR,XOR,NOT的区别。上述指

4、令放在操作码中,而操作符放在操作数中。例:PORTEQU29H;ANDDX,PORTAND0F0H;DX∧表达式的值(20H)→DX关系运算符共6种:EQ(相等),NE(不等),LT(小于),GT(大于),LE(小于等于),GE(大于等于)对两个常量进行运算,结果是两特殊的常量值。如果关系成立(为真),结果为-1,即0FFFFH,如果关系不成立(为假),结果为0。例:PORTEQU3MOVBX,((PORTLT5)AND18)OR((PORTGE5)AND69)语句被汇编成:MOVBX,184.1.3标号变量与地址表达式标号

5、:在代码段定义的指令的地址。三个属性值:段地址,EA,类型(FAR,NEAR)。变量:是内存中一个数据区的名字,作为指令的存储器操作数引用。三个属性值:段地址,EA,类型。类型由:DB,DW,DD,DQ,DT定义。如:countdw5地址表达式地址表达式形成的结果是存储器的地址,用来表标指令中的标号或变量操作数,有3个属性:段地址,EA和类型。而数值表达式的结果只有大小没有属性。地址表达式可由变量、标号、常量、寄存器及一些运算符组成。例1:ARRAYDDD2,0,0,2,6,1,8,9,4,40MOVEAX,ARRAYD+3

6、6MOVESI,36SUBESI,4ADDEAX,ARRAYD[ESI]例2ARRAYWDW1,2,3,4DW5,6,7,8DW9,10,11,12…MOVAX,ARRAYW[BX][SI]等价于:MOVAX,[ARRAYW+BX+SI]或者MOVAX,ARRAYW[BX+SI]4.1.4特殊运算符1、属性替换运算符用来取代一个操作数的属性。(1)强制类型运算符PTR如:MOVbyteptr[BX],5JMPFARPTRNEXTLAB[BX](2)段取代运算符:如:MOVDX,ES:[BX+DI]2.属性分离运算符功能:只是

7、分离变量或标号的属性值,而不取代有关的属性。SEG:取段地址。OFFSET:取偏移地址。如:ARRAYWDW20DUP(0)……start:movax,segARRAYWmovds,axmovbx,offsetARRAYWOFFSET与LEA指令的使用区别OFFSET是伪指令,在汇编阶段进行计算。所以OFFSET后面的地址表达式不能带寄存器,因为汇编阶段还不能计算出寄存器的值。如:MOVDX,OFFSETARRAYW[BX+SI];错误LEADX,ARRAYW[BX+SI]TYPE运算符功能:取TYPE后面变量或标号的类型值

8、。类型是字节、字、双字,则返回:1,2,4例如:MOVCL,TYPEARRAYW;ARRAYW为字类型,则返回2。3、返回数值运算符(1)LENGTH取变量数据项个数。如果变量采用DUP定义,则LENGTH取DUP前面的重复系数。如果有多个DUP嵌套,仍取每一个DUP前面的系数.否则LEN

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。