汇编语言程序设计_8

上传人:bin****86 文档编号:57087403 上传时间:2018-10-18 格式:PPT 页数:20 大小:219KB
返回 下载 相关 举报
汇编语言程序设计_8_第1页
第1页 / 共20页
汇编语言程序设计_8_第2页
第2页 / 共20页
汇编语言程序设计_8_第3页
第3页 / 共20页
汇编语言程序设计_8_第4页
第4页 / 共20页
汇编语言程序设计_8_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《汇编语言程序设计_8》由会员分享,可在线阅读,更多相关《汇编语言程序设计_8(20页珍藏版)》请在金锄头文库上搜索。

1、汇编语言程序设计 Assembly Language Programming,高级编程专题(7) 32位汇编指令和Win32汇编程序设计,32位CPU工作模式,实模式 8088/8086的自然模式 80286-Pentium系列复位后工作于实模式,直到OS引导后,切换到保护模式(通过CR0的PE位)。 保护模式 支持多任务,虚拟存储和大寻址空间 80286-Pentium系列主要工作模式 虚拟8086模式 运行8086程序,保护模式-分页技术,32位寄存器,32位寄存器 通用寄存器:EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP 段寄存器: CS,DS,SS,ES,FS,GS

2、其它: EIP,EFLAGS,AX,EAX,EAX = 12345678H,AX = 5678H,AH = 56H AL = 78H,4个系统寄存器:GDTR、LDTR、IDTR、TR 5个模式控制寄存器:CR0、CR1、CR2、CR3、CR4 CR0用作控制处理器的模式和状态。PE标志使处理器进入保护模式。PG标志设置处理器是否将使用分页机制。 CR1被保留。 CR2寄存器用来存储发生页错误的线性地址。 CR3寄存器在分页机制里物理地址的解析过程中扮演着重要的角色,这个寄存器存放着页目录的基地址。 CR4寄存器在一些高级机制中使用,例如,设置PAE标志可以使另外四根地址线被使用,这样,地址线

3、将达到36根。 这两类寄存器使内存管理更加便利。,32位汇编寻址方式,寻址方式改变 地址寄存器:任一32位寄存器 比例寻址方式: index*n(n=1,2,4,8) 其它一样 MOV EAX,ECX MOV DWORD PTR EBP,1 MOV 4ESIEAX,1,32位汇编指令,相同指令 MOV EAX, 1;XCHG EAX, EBX 改变指令:偏移地址为32位 LEA EBX,BUFFER CALL/RET (CS双字) INT/IRET (CS双字) LOOP ECX PUSH SP :8086 先入栈再PUSH;286后入栈,32位汇编指令(续),新加指令 -数据传送- PUSH

4、A/POPA; 8个16位Register PUSHAD/POPAD; 8个32位Register PUSHFD/POPFD CWD/CWDE(AXEAX),CDQ(EAX(EDX,EAX); MOVSX MOVSX AX, AL MOVSX EAX,AX MOVZX; MOVZX AX, AL MOVZX EAX,AX,-算术- IMUL AX,BX,3; IMUL AX,BX; -移位- SHLD/SHRD; BT(BIT TEST) BTS(BIT TEST AND SET) BTR(BIT TEST AND RESET) BTC(BIT TEST AND COMPLEMENT) BT

5、EAX,0 -串操作- MOVSD/LODSD/STOSD/CMPSD/SCASD,32位伪指令,处理器伪操作 选择哪一个处理器 .8086 .286 .386 .386p .586 数据定义伪指令 DQ DF DT :4字,6字,8字,32位编程,累加两个8字节数d1 dq 1111111111111111hd2 dq 2222222222222222h d3 dq ?MOV EAX, DWORD PTR D1ADD EAX, DWORD PTR D2MOV EDX, DWORD PTR D1+4ADC EDX, DWORD PTR D2+4MOV DWORD PTR D3, EAXMOV

6、DWORD PTR D3+4,EDX,Win32汇编,Win32与32位汇编程序设计的差别 32位汇编:在32位CPU上进行的汇编 Win32:用汇编编写Windows平台下的程序 Why win32 Win32 汇编是Windows 环境下一种全新的编程语言Win32 汇编可以当做一种功能强大的开发语言使用,使用它完全可以开发出大型的软件来。 使用 Win32汇编语言是了解操作系统运行细节的最佳方式 在 Windows 环境下进行加密解密、逆向工程,还有病毒、木马等有害代码的分析和防治工作时,Win32 汇编是惟一的选择,Win32 ASM VS DOS ASM,工作方式。Dos工作在实模式

7、下,可以管理系统的所有资源;而Windows在保护模式下执行,所有应用程序都工作在3级中(Ring3),无法直接访问IO端口,无法访问其他程序运行的内存,连向程序自己的代码段写入数据都是非法的。只有对Ring0的程序来说,系统才是全开放的。 内存管理。Windows使用了处理器的分页机制;WIN32 只有一种内存模式,即 FLAT 模式,意思是“平坦“的内存模式,所有的 WIN32 的应用程序运行在一个连续、平坦、巨大的 4GB 的空间中;无须和段寄存器打交道。,Win32 ASM VS DOS ASM(II),Win32下没有“段”(SEGMENT)的概念,但可以把程序分成不同的“分段”,

8、一个“分段”的开始即是上一个“分段“的结束。分段并不是象在 Dos 下一样,为不同的段分别指出不同的段寄存器,因为 Windows 下只有一个 4GB 的段,Windows 程序中的分段表现在当程序装载时,赋予不同的分段不同的属性,比如说当程序加载时,对于 Ring3 程序来说,.code 段是不可写的,而 .data 段是可写的。 WIN32中只有两种性质的“分段“:DATA和CODE。 程序结构。Windows程序也有很大的不同,它是“基于消息”的。,一个简单例子,MessageBox函数申明 int MessageBox ( HWND hWnd, / handle of owner wi

9、ndow LPCTSTR lpText, / address of text in message box LPCTSTR lpCaption, / address of title of message box UINT uType / style of message box ); ExitProcess 是一个标准的 Win32 API,对应 Dos汇编中的mov ah,4ch int 21h,也就是程序退出 invoke为调用宏指令,addr取地址,.386 option casemap :none ; case sensitive .model flat, stdcallinclud

10、e masm32includewindows.inc include masm32includekernel32.inc include masm32includeuser32.incincludelib masm32libuser32.lib includelib masm32libkernel32.lib,.dataszCaption db Win32汇编例子,0szText db Win32汇编,Simple and powerful!,0 .code start:.if 0 push MB_OKpush offset szCaptionpush offset szTextpush NU

11、LLcall MessageBox.else invoke MessageBox, NULL, addr szText, addr szCaption,MB_OK.endifinvoke ExitProcess,NULL end start,Assemble & link,MASM v8(ml 6.14, link 5.12) rc file can be generated by VC+ 6.0 ml /coff /c *.ASM *.obj rc *.rc *.res link /SUBSYSTEM:WINDOWS *.obj *.res *.exe,更多例子,C+ VS ASM MASM V8 EXAMPLES BOOK & Tutor OTHER EXAMPLES,More,http:/ 罗云彬的编程乐园 http:/ AoGo汇编小站 http:/ 80x86汇编小站 http:/ MASM32官方站点 http:/ WinASM Community Message board Windows环境下32位汇编语言程序设计,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号