- 1、本文档共45页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MASM32绝好资料
MASM32绝好资料
Introduction to Assembler 2
MASM Reference 11
宏参考MACRO Reference 11
伪指令参考16
语法参考30
其它参考35
寄存器大全35
标志寄存器 Processor Flags35
80 位数据寄存器Stack of 80-bit Data Registers36
Ascii 字符表Ascii Characters37
奔腾指令优化参考Pentium Optimisation37
调用格式Calling Conventions40
命令行工具Command Line Tools 41
IntroductiontoAssembler
IntroductiontoAssembler
IInnttrroodduuccttiioonnttooAAsssseemmbblleerr
汇编概述
直线内存模式FLAT Memory Model
32 位(二进制位,bit。下同)Windows 程序使用“直线内存模式”。这样的程序实际只有一
个段,包括程序的所有代码和数据,而且只能在386 以上的INTEL 处理器上运行。早期的
16 位程序使用段和偏移来代表地址,每个段的大小不能超过64KB,而“直线内存模式”只
有偏移,它的大小是4G,即0XFFFFFFFF,这种地址表示方式使汇编程序更易于开发。
在FLAT 模式下,所有的段寄存器都自动设置成为同一个值,32 位Windows 程序中段/偏移
形式的地址在不是必须的。对于DOS 程序员来说,32 位Windows PE 格式的应用程序好象
是.COM 程序一样,使用单一的段包括了代码和数据,只操作偏移地址,而不是用段/偏移地
址。
直线内存模式时,应用程序在 4G 内存空间内所有的引用都是近程地址(NEAR code
addressing)和近程数据(NEAR data addressing)。GS 和FS 段寄存器在普通的FLAT 模式应
用程序中并不使用,一般是操作系统用于操作实例(used in instances)。
保护模式内存Protected Mode Memory
DOS 是真实地址内存模式,这样应用程序可能改写操作系统的代码,而引起系统瘫痪。例如
在编写CGA(注:早期显示模式,显示缓存地址在B800 处开始)程序时,使用B800 内存
区域,如果LOOP 循环写的不对,就可能改写高位内存中的DOS 代码或BIOS 设置,造成死
机。设计保护模式就是用来防止这样的事情发生,内存管理器控制并保护应用程序访问的地
址,阻止应用程序访问没有权限的内存区域。16 位Windows 是模拟多任务的操作系统,它
的应用程序也可能改写其它应用程序甚至是操作系统的内存。
改写了操作系统代码,应用程序调用某个系统函数时就会引起死机,最常见的就是“蓝屏”
(注:Windows95/98 常见故障)死机。如果开发的应用程序本身存在逻辑混乱,应该是一个
“黑屏”死机。
更改硬件、在多任务基础上使用硬件的时候,保护模式会更加可靠。因为汇编语言编程时允
许读写任何地址,所以要留心读写的句柄和地址。如果分配了10K 内存来读而却试图读20K
内容,就会引起页错误。也可能因为使用变量或寄存器指向的地址超出了应用程序权限范围,
而引起内存读写失败。操作系统会将页异常传递给造成出错的应用程序,如果应用程序没有
处理异常,操作系统就会关闭应用程序。这给应用程序提供一个在保护模式下,得到有读写
权限的地址范围的一种方法。
操作数Instruction Operands
操作数被用来做汇编指令助记符(mnemonic)中的参数。一条指令可能有0 到3 个操作数,
有两个操作数的逻辑或数学指令当中,位于右边的是源操作数,左边的是目的操作数。如
mov eax,1;mov 是汇编代码助记符,eax 是目的操作数,1 是源操作数。指令的操作结果是
将1 放入eax。在其它处理器的汇编语言中,操作数使用顺序不同的都会特别注明。
指令码和助记符Opcodes and Mnemonics
Intel 极兼容处理器的硬件层面,内建指令(instructions)叫opcodes(注:二进制的指令码),以
位(bit)表示,最小的处理单元是字节(BTYE)。这样的二进制的指令码程序可以用16
文档评论(0)