Win32汇编语言-表达式与操作符课件.ppt

上传人:小飞机 文档编号:1290020 上传时间:2022-11-04 格式:PPT 页数:19 大小:256.83KB
返回 下载 相关 举报
Win32汇编语言-表达式与操作符课件.ppt_第1页
第1页 / 共19页
Win32汇编语言-表达式与操作符课件.ppt_第2页
第2页 / 共19页
Win32汇编语言-表达式与操作符课件.ppt_第3页
第3页 / 共19页
Win32汇编语言-表达式与操作符课件.ppt_第4页
第4页 / 共19页
Win32汇编语言-表达式与操作符课件.ppt_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《Win32汇编语言-表达式与操作符课件.ppt》由会员分享,可在线阅读,更多相关《Win32汇编语言-表达式与操作符课件.ppt(19页珍藏版)》请在三一办公上搜索。

1、宋军计算机学院信息安全系,表达式与操作符,2022/11/4,1,宋军表达式与操作符2022/10/91,主要内容,汇编语言开发环境MASM32汇编语言程序结构汇编语言的语句格式 汇编语言程序格式MASM伪指令,2022/11/4,2,主要内容汇编语言开发环境2022/10/92,变量,类型:字节型、字与双字、多字节,结构、枚举存储:全局变量、局部变量,定义全局变量的时候类型才可以用缩写,2022/11/4,3,变量类型:字节型、字与双字、多字节,结构、枚举定义全局变量的,全局变量,全局变量的作用域是整个程序,Win32汇编的全局变量定义在 .data或 .data?段内,可以同时定义变量的类

2、型和长度,格式是:,变量名 类型 初始值1,初始值2,变量名 类型 重复数量 dup (初始值1,初始值2,),2022/11/4,4,全局变量全局变量的作用域是整个程序,Win32汇编的全局变量,全局变量的初始化,全局变量在定义中既可以指定初值,也可以只用问号预留空间在 .data?段中,只能用问号预留空间,因为 .data?不能指定初始值。实际运行的时候,未初始化的值是0。,word_Bufferdw 100 dup (1,2) ; 一组字,以0001,0002,0001,0002,的 ; 顺序在内存中重复100遍,一共是200个字。 szBuffer byte 1024 dup (?)

3、; 1 024字节的缓冲区 ; 在byte类型变量的定义中,用引号定义字符串和数值定义的方法混用 szText db Hello,world!,0dh,0ah,Hello again,0dh,0ah,0,2022/11/4,5,全局变量的初始化全局变量在定义中既可以指定初值,也可以只用问,局部变量,两个以上子程序都要用到的数据才被定义为全局变量统一放在数据段中,仅在子程序内部使用的变量则放在堆栈中 在进入子程序的时候,通过修改堆栈指针esp来预留出需要的空间,在用ret指令返回主程序之前,同样通过恢复esp丢弃这些空间 空间是临时分配的,所以无法定义含有初始化值的变量,对局部变量的初始化一般在

4、子程序中由指令完成。,2022/11/4,6,局部变量两个以上子程序都要用到的数据才被定义为全局变量统一放,局部变量的定义,local伪指令必须紧接在子程序定义的伪指令proc后、其他指令开始前 Win32汇编默认的类型是dword,如果定义dword类型的局部变量,则类型可以省略。当定义数组的时候,可以 括号括起来,不能使用定义全局变量的dup伪指令。局部变量不能和已定义的全局变量同名。在不同的子程序中可以有同名的局部变量。局部变量的起始值是随机的,是其他子程序执行后在堆栈里留下的垃圾,local 变量名1重复数量:类型,变量名2重复数量:类型,2022/11/4,7,局部变量的定义loca

5、l 变量名1重复数量,数值表达式,数值表达式一般是指由运算符连接的各种常数所构成的表达式汇编程序在汇编过程中计算表达式,最终得到一个数值程序运行之前,就已经计算出了表达式;所以,程序运行速度没有变慢,但增强程序的可读性MASM对除伪指令外各种汇编时处理的指令统称为操作符(Operator),2022/11/4,8,数值表达式数值表达式一般是指由运算符连接的各种常数所构成的表,运算符,算术运算符:+ - * / MOD 移位运算符:SHL SHR逻辑运算符:AND OR NOT XOR 关系运算符:EQ NE GT LT GE LE高低分离符:HIGH LOW HIGHWORD LOWWORD,

6、2022/11/4,9,运算符算术运算符:+ - * / M,算术运算符,实现加、减、乘、除、取余的算术运mov ax,3*4+5;等价于 mov ax,17MOD也称为取模,它产生除法之后的余数19 mod 7 = 5加 + 和减 - 运算符还可以用于地址表达式除加、减外,其他运算符的参数应是整数,2022/11/4,10,算术运算符实现加、减、乘、除、取余的算术运mov ax,3,逻辑运算符,实现按位相与、相或、异或、求反的逻辑运算 or al,03h AND 45h ;等价于 or al,01h,47H AND 0FH,NOT 56H计算结果分别为:7和0A9H,2022/11/4,11

7、,逻辑运算符实现按位相与、相或、异或、求反的逻辑运算47H A,移位运算符,实现对数值的左移、右移的逻辑操作;移入低位或高位的是0格式为:数值表达式 SHL/SHR 移位次数mov al, 0101b SHL (2*2);等价于 mov al,01010000b,2022/11/4,12,移位运算符实现对数值的左移、右移的逻辑操作;移入低位或高位的,关系运算符,用于比较和测试符号数值MASM用0FFFFH(补码 -1)表示条件为真,用0000H表示条件为假,mov bx,(PORT LT 5) AND 20) OR (PORT GE 5)AND 30);当PORT5时,汇编结果为mov bx,

8、20;否则,汇编结果为mov bx,30,2022/11/4,13,关系运算符用于比较和测试符号数值mov bx,(PORT,高低分离符,取数值的高半部分或低半部分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,2022/11/4,14,高低分离符取数值的高半部分或低半部分2022

9、/10/914,其它操作符,类型属性操作符:TYPE长度属性操作符:LENGTH容量属性:SIZE强制属性操作符:PTR存储单元别名操作符:THIS,2022/11/4,15,其它操作符类型属性操作符:TYPE2022/10/915,运算符与操作符的优先级,() LENGTH SIZEPTR OFFSET SEG TPYE THIS HIGE LOW* / MOD SHL SHR+ -EQ NE GT LT GE LENOTANDOR XOR,高低,2022/11/4,16,运算符与操作符的优先级() LE,地址表达式,地址表达式是计算存储单元地址的表达式,它可由标号、变量名和由括号括起来的基

10、址或变址寄存器组成。其计算结果表示一个存储单元的地址,而不是该存储单元的值。,B1,B1+3,W1+1,mov al, B1mov al, B1+3mov ax, W1+1,B1+3,2022/11/4,17,地址表达式地址表达式是计算存储单元地址的表达式,它可由标号、,地址操作符,取得名字或标号的段地址和偏移地址两个属性 将括起的表达式值作为存储器地址$当前偏移地址OFFSET 名字/标号 返回名字或标号的偏移地址 : 采用指定的段地址寄存器 SEG 名字/标号 返回名字或标号的段基址,2022/11/4,18,地址操作符取得名字或标号的段地址和偏移地址两个属性2022/,.386.mode

11、l flat, stdcalloption casemap:noneinclude windows.incinclude kernel32.incincludelib kernel32.lib.dataB1BYTE01h, 02hDBABCDW1 WORD1234h, 5678h.codestart:mov al, B1mov al, B1+1mov ax, W1+1mov eax, offset W1mov eax, $invoke ExitProcess, NULLend start,.text:00401000 public start.text:00401000 start proc

12、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:00

13、40101C 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,2022/11/4,19,.386.text:00401000,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号