32位汇编语言——表达式与操作符

上传人:痛*** 文档编号:243881317 上传时间:2024-10-01 格式:PPT 页数:19 大小:446.50KB
返回 下载 相关 举报
32位汇编语言——表达式与操作符_第1页
第1页 / 共19页
32位汇编语言——表达式与操作符_第2页
第2页 / 共19页
32位汇编语言——表达式与操作符_第3页
第3页 / 共19页
点击查看更多>>
资源描述
计算机学院信息安全系,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,宋军,计算机学院信息安全系,表达式与操作符,2024/10/1,1,主要内容,汇编语言开发环境,MASM32,汇编语言程序结构,汇编语言的语句格式,汇编语言程序格式,MASM,伪指令,2024/10/1,2,变量,类型:字节型、字与双字、多字节,结构、枚举,存储:全局变量、局部变量,定义全局变量的时候类型才可以用缩写,2024/10/1,3,全局变量,全局变量的作用域是整个程序,,Win32,汇编的全局变量定义在,.data,或,.data?,段内,可以同时定义变量的类型和长度,格式是:,变量名 类型 初始值,1,初始值,2,,,变量名 类型 重复数量,dup,(初始值,1,初始值,2,,,),2024/10/1,4,全局变量的初始化,全局变量在定义中既可以指定初值,也可以只用问号预留空间,在,.data?,段中,只能用问号预留空间,因为,.data?,不能指定初始值。,实际运行的时候,未初始化的值是,0,。,word_Buffer,dw,100 dup(1,2),;,一组字,以,0001,,,0002,,,0001,,,0002,,,的,;,顺序在内存中重复,100,遍,一共是,200,个字。,szBuffer,byte 1024 dup(?),;1 024,字节的缓冲区,;,在,byte,类型变量的定义中,用引号定义字符串和数值定义的方法混用,szText,db Hello,world!,0dh,0ah,Hello again,0dh,0ah,0,2024/10/1,5,局部变量,两个以上子程序都要用到的数据才被定义为全局变量统一放在数据段中,仅在子程序内部使用的变量则放在堆栈中,在进入子程序的时候,通过修改堆栈指针,esp,来预留出需要的空间,在用,ret,指令返回主程序之前,同样通过恢复,esp,丢弃这些空间,空间是临时分配的,所以无法定义含有初始化值的变量,对局部变量的初始化一般在子程序中由指令完成。,2024/10/1,6,局部变量的定义,local,伪指令必须紧接在子程序定义的伪指令,proc,后、其他指令开始前,Win32,汇编默认的类型是,dword,,如果定义,dword,类型的局部变量,则类型可以省略。,当定义数组的时候,可以,括号括起来,不能使用定义全局变量的,dup,伪指令。,局部变量不能和已定义的全局变量同名。,在不同的子程序中可以有同名的局部变量。,局部变量的起始值是随机的,是其他子程序执行后在堆栈里留下的垃圾,local,变量名,1,重复数量,:,类型,变量名,2,重复数量,:,类型,2024/10/1,7,数值表达式,数值表达式一般是指由运算符连接的各种常数所构成的表达式,汇编程序在汇编过程中计算表达式,最终得到一个数值,程序运行之前,就已经计算出了表达式;所以,程序运行速度没有变慢,但增强程序的可读性,MASM,对除伪指令外各种汇编时处理的指令统称为操作符(,Operator,),2024/10/1,8,运算符,算术运算符:,+-*/MOD,移位运算符:,SHL SHR,逻辑运算符:,AND OR NOT XOR,关系运算符:,EQ NE GT LT GE LE,高低分离符:,HIGH LOW HIGHWORD LOWWORD,2024/10/1,9,算术运算符,实现加、减、乘、除、取余的算术运,mov,ax,3*4+5;,等价于,mov,ax,17,MOD,也称为取模,它产生除法之后的余数,19 mod 7=5,加,+,和减,-,运算符还可以用于地址表达式,除加、减外,其他运算符的参数应是整数,2024/10/1,10,逻辑运算符,实现按位相与、相或、异或、求反的逻辑运算,or al,03h AND 45h,;,等价于,or al,01h,47H AND 0FH,,,NOT 56H,计算结果分别为:,7,和,0A9H,2024/10/1,11,移位运算符,实现对数值的左移、右移的逻辑操作;移入低位或高位的是,0,格式为:,数值表达式,SHL/SHR,移位次数,mov,al,0101b SHL(2*2),;,等价于,mov,al,01010000b,2024/10/1,12,关系运算符,用于比较和测试符号数值,MASM,用,0FFFFH,(补码,-1,)表示条件为真,用,0000H,表示条件为假,mov,bx,(PORT,LT 5)AND 20)OR(PORT GE 5)AND 30),;,当,PORT5,时,汇编结果为,mov,bx,20,;,否则,汇编结果为,mov,bx,30,2024/10/1,13,高低分离符,取数值的高半部分或低半部分,HIGH,、,LOW,从一个字数值或符号常量中得到高、低字节,mov,ah,HIGH,8765h;,等价于,mov,ah,87h,从,MASM 6.0,引入的,HIGHWORD,、,LOWWORD,取一个符号常量(不能是其他常数)的高字或低字部分,dd_value,equ,0ffff1234h,;,定义一个符号常量,mov,ax,LOWWORD,dd_value,;,等价于,mov,ax,1234h,2024/10/1,14,其它操作符,类型属性操作符:,TYPE,长度属性操作符:,LENGTH,容量属性:,SIZE,强制属性操作符:,PTR,存储单元别名操作符:,THIS,2024/10/1,15,运算符与操作符的优先级,()LENGTH SIZE,PTR OFFSET SEG TPYE THIS HIGE LOW,*/MOD SHL SHR,+-,EQ NE GT LT GE LE,NOT,AND,OR XOR,高,低,2024/10/1,16,地址表达式,地址表达式是计算存储单元地址的表达式,它可由,标号、变量名和由括号括起来的基址或变址寄存器,组成。其计算结果表示一个存储单元的地址,而不是该存储单元的值。,B1,DB,10H,11H,12H,DB,ABCD,W1,DW,1234H,5678H,10,11,12,A,B,C,D,34,12,78,56,B1,B1+3,W1+1,mov,al,B1,mov,al,B1+3,mov,ax,W1+1,B1+3,2024/10/1,17,地址操作符,取得名字或标号的段地址和偏移地址两个属性,将括起的表达式值作为存储器地址,$,当前偏移地址,OFFSET,名字,/,标号,返回名字或标号的偏移地址,:,采用指定的段地址寄存器,SEG,名字,/,标号,返回名字或标号的段基址,2024/10/1,18,.386,.model flat,stdcall,option,casemap:none,include,windows.inc,include kernel32.inc,includelib,kernel32.lib,.data,B1BYTE01h,02h,DBABCD,W1 WORD1234h,5678h,.code,start:,mov,al,B1,mov,al,B1+1,mov,ax,W1+1,mov,eax,offset W1,mov,eax,$,invoke,ExitProcess,NULL,end start,.text:00401000 public start,.text:00401000 start proc near,.text:00401000,mov,al,byte_403000,.text:00401005,mov,al,byte_403001,.text:0040100A,mov,ax,word_403007,.text:00401010,mov,eax,offset unk_403006,.text:00401015,.text:00401015 loc_401015:,.text:00401015,mov,eax,offset loc_401015,.text:0040101A push 0 ;,uExitCode,.text:0040101C call,ExitProcess,.text:0040101C start,endp,.data:00403000 byte_403000 db 1,.data:00403001 byte_403001 db 2,.data:00403002 db 41h;A,.data:00403003 db 42h;B,.data:00403004 db 43h;C,.data:00403005 db 44h;D,.data:00403006 unk_403006 db 34h,.data:00403007 word_403007,dw,7812h,.data:00403009 db 56h,2024/10/1,19,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!