




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2019/12/1,1,宋军计算机学院信息安全系songjun,表达式与操作符,2,2019/12/1,主要内容,汇编语言开发环境MASM32汇编语言程序结构汇编语言的语句格式汇编语言程序格式MASM伪指令,3,2019/12/1,变量,类型:字节型、字与双字、多字节,结构、枚举存储:全局变量、局部变量,定义全局变量的时候类型才可以用缩写,4,2019/12/1,全局变量,全局变量的作用域是整个程序,Win32汇编的全局变量定义在.data或.data?段内,可以同时定义变量的类型和长度,格式是:,变量名类型初始值1,初始值2,变量名类型重复数量dup(初始值1,初始值2,),5,2019/12/1,全局变量的初始化,全局变量在定义中既可以指定初值,也可以只用问号预留空间在.data?段中,只能用问号预留空间,因为.data?不能指定初始值。实际运行的时候,未初始化的值是0。,word_Bufferdw100dup(1,2);一组字,以0001,0002,0001,0002,的;顺序在内存中重复100遍,一共是200个字。szBufferbyte1024dup(?);1024字节的缓冲区;在byte类型变量的定义中,用引号定义字符串和数值定义的方法混用szTextdbHello,world!,0dh,0ah,Helloagain,0dh,0ah,0,6,2019/12/1,局部变量,两个以上子程序都要用到的数据才被定义为全局变量统一放在数据段中,仅在子程序内部使用的变量则放在堆栈中在进入子程序的时候,通过修改堆栈指针esp来预留出需要的空间,在用ret指令返回主程序之前,同样通过恢复esp丢弃这些空间空间是临时分配的,所以无法定义含有初始化值的变量,对局部变量的初始化一般在子程序中由指令完成。,7,2019/12/1,局部变量的定义,local伪指令必须紧接在子程序定义的伪指令proc后、其他指令开始前Win32汇编默认的类型是dword,如果定义dword类型的局部变量,则类型可以省略。当定义数组的时候,可以括号括起来,不能使用定义全局变量的dup伪指令。局部变量不能和已定义的全局变量同名。在不同的子程序中可以有同名的局部变量。局部变量的起始值是随机的,是其他子程序执行后在堆栈里留下的垃圾,local变量名1重复数量:类型,变量名2重复数量:类型,8,2019/12/1,数值表达式,数值表达式一般是指由运算符连接的各种常数所构成的表达式汇编程序在汇编过程中计算表达式,最终得到一个数值程序运行之前,就已经计算出了表达式;所以,程序运行速度没有变慢,但增强程序的可读性MASM对除伪指令外各种汇编时处理的指令统称为操作符(Operator),9,2019/12/1,运算符,算术运算符:+-*/MOD移位运算符:SHLSHR逻辑运算符:ANDORNOTXOR关系运算符:EQNEGTLTGELE高低分离符:HIGHLOWHIGHWORDLOWWORD,10,2019/12/1,算术运算符,实现加、减、乘、除、取余的算术运movax,3*4+5;等价于movax,17MOD也称为取模,它产生除法之后的余数19mod7=5加+和减-运算符还可以用于地址表达式除加、减外,其他运算符的参数应是整数,11,2019/12/1,逻辑运算符,实现按位相与、相或、异或、求反的逻辑运算oral,03hAND45h;等价于oral,01h,47HAND0FH,NOT56H计算结果分别为:7和0A9H,12,2019/12/1,移位运算符,实现对数值的左移、右移的逻辑操作;移入低位或高位的是0格式为:数值表达式SHL/SHR移位次数moval,0101bSHL(2*2);等价于moval,01010000b,13,2019/12/1,关系运算符,用于比较和测试符号数值MASM用0FFFFH(补码-1)表示条件为真,用0000H表示条件为假,movbx,(PORTLT5)AND20)OR(PORTGE5)AND30);当PORT5时,汇编结果为movbx,20;否则,汇编结果为movbx,30,14,2019/12/1,高低分离符,取数值的高半部分或低半部分HIGH、LOW从一个字数值或符号常量中得到高、低字节movah,HIGH8765h;等价于movah,87h从MASM6.0引入的HIGHWORD、LOWWORD取一个符号常量(不能是其他常数)的高字或低字部分dd_valueequ0ffff1234h;定义一个符号常量movax,LOWWORDdd_value;等价于movax,1234h,15,2019/12/1,其它操作符,类型属性操作符:TYPE长度属性操作符:LENGTH容量属性:SIZE强制属性操作符:PTR存储单元别名操作符:THIS,16,2019/12/1,运算符与操作符的优先级,()LENGTHSIZEPTROFFSETSEGTPYETHISHIGELOW*/MODSHLSHR+-EQNEGTLTGELENOTANDORXOR,高低,17,2019/12/1,地址表达式,地址表达式是计算存储单元地址的表达式,它可由标号、变量名和由括号括起来的基址或变址寄存器组成。其计算结果表示一个存储单元的地址,而不是该存储单元的值。,B1,B1+3,W1+1,moval,B1moval,B1+3movax,W1+1,B1+3,18,2019/12/1,地址操作符,取得名字或标号的段地址和偏移地址两个属性将括起的表达式值作为存储器地址$当前偏移地址OFFSET名字/标号返回名字或标号的偏移地址:采用指定的段地址寄存器SEG名字/标号返回名字或标号的段基址,19,2019/12/1,.386.modelflat,stdcalloptioncasemap:noneincludewindows.incincludekernel32.incincludelibkernel32.lib.dataB1BYTE01h,02hDBABCDW1WORD1234h,5678h.codestart:moval,B1moval,B1+1movax,W1+1moveax,offsetW1moveax,$invokeExitProcess,NULLendstart,.text:00401000publicstart.text:00401000startprocnear.text:00401000moval,byte_403000.text:00401005moval,byte_403001.text:0040100Amovax,word_403007.text:00401010moveax,offsetunk_403006.text:00401015.text:00401015loc_401015:.text:00401015moveax,offsetloc_401015.text:0040101Apush0;uExitCode.text:0040101CcallExitProcess.text:0040101Cstartendp.data:00403000byte_403000db1.data:00403001byte_403001db2.data:0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版计算机系统安全审计与风险评估承包协议
- 二零二五年度沿街店房租赁中介服务合同
- 罗森塔尔效应
- 2025纳税会计考试题及答案
- 校园消防安全自查自评(3篇)
- 夏季校园消防安全形势(3篇)
- 泛半导体装备研发生产项目可行性研究报告
- 网课课件不显示问题
- 网课直播与课件同时进行
- 校园消防安全的朗诵(3篇)
- 2025年食堂安全培训考试题及答案
- 反诈防骗安全知识培训课件
- 砂石垫资合作协议合同范本
- 红十字应急救护创伤止血
- 2025-2026学年高二上学期开学入学教育主题班会【课件】
- 北师大版八年级数学上册第一章 勾股定理 单元测试卷(含答案)
- 护工清洁护理培训
- 出租房屋安全管理办法
- 违法建筑用电管理办法
- 2025年党建知识竞赛题库及答案(完整版)
- 寺庙安全隐患排查台账内容
评论
0/150
提交评论