模式和源程序格式的定义语句:
.386
.model flat,stdcall
option casemap:none
.386语句是汇编语言的伪指令,在DOS中的汇编默认使用的是8086指令集,为了在DOS环境下进行保护模式编程或仅为了使用32位寄存器,就需要用这个指令来定义。
.386p 后面的p表示程序中可以使用特权指令,这样,特权指令才能编译过去。
.mmx Pentium MMX开始增加了MMX指令集,为了使用MMX指令,需要定义这个指令。
.model 这个用来定义程序工作的模式,
它的使用方法是:
.model 内存模式[,语言模式][,其他模式...

- [游客] 在调用API函数的时候,函数原型也必须预先声明,否则,编译器会不认这个函数。invoke伪指令也无法 07/16 17:30
- [bhou] invoke 伪指令,能在一句中,打入所有的参数,并能在参数使用错误的时候能够提示。 返回值对 07/16 16:36
- [bhou] 用API方式调用存放在DLL中的函数必须同样约定一个规范,用来定义函数的调用方法、参数的传递方法和参 07/16 16:23
- [bhou] Win32程序时构筑在Win32API基础上的。在API中,包括了大量的函数、结构和消息等。它不仅给 07/16 16:19
- [bhou] 注释时源程序中不可忽略的一部分,汇编源程序的注释以分号“;”开始。 当源程序的某一行过长,不利 07/16 15:54
- [bhou] 一个源程序不必非要指定入口标号,这时可以把开始地址忽略不写,这种情况发生在编写多模块程序的单个模块时 07/16 15:50
- [bhou] 堆栈段的内存属性时可读写并且时可执行的,这样靠动态修改代码的反跟踪模块可以拷贝到堆栈中去边修改边执行 07/16 15:46
- [bhou] .code段时代码段,所有的指令都必须卸载代码段中,在可执行文件中,代码段一般时放在_TEXT节区中 07/16 15:43
- [bhou] .data, .data?和.const 定义的是数据段,分别对应不同方式的数据定义,在最后生成的可 07/16 15:36
- [bhou] 选项、模式等定义,并不会在编译号的可执行程序中产生什么东西,他们只是“说明”,真正的数据和代码时定义 07/16 15:16
[2010-07-16 14:51] Win32汇编 第3章 使用MASM 笔记
阅读全文 |
评论次数(13) |
浏览次数(778) |
所属类型(罗云杉--Win32汇编)
[2010-07-14 15:13] Win32汇编 第2章 准备编程环境 笔记
第二章一开篇,怎么还是那么艰难!!!
DOS可执行文件中的内容是由源程序中所写的代码和数据定义转换而来的。唯一的例外是带覆盖部分(overlay)的exe文件
(什么叫带覆盖部分的exe文件????)
它在基本的exe文件后,附加了一些自定义的数据
(怎么加上去的?)
其中可执行部分的长度由文件头偏移0002h和0004h中的长度给出,该长度之后到文件实际长度这部分就是overlay部分。
这样,即使一个带覆盖的exe文件大小超过了640kb,在DOS下也能运行,因为操作系统只装入真正的可执行部分,然后由程序自己去读取覆盖部分的数据。
而Win32可执行文件佳作PE文...
DOS可执行文件中的内容是由源程序中所写的代码和数据定义转换而来的。唯一的例外是带覆盖部分(overlay)的exe文件
(什么叫带覆盖部分的exe文件????)
它在基本的exe文件后,附加了一些自定义的数据
(怎么加上去的?)
其中可执行部分的长度由文件头偏移0002h和0004h中的长度给出,该长度之后到文件实际长度这部分就是overlay部分。
这样,即使一个带覆盖的exe文件大小超过了640kb,在DOS下也能运行,因为操作系统只装入真正的可执行部分,然后由程序自己去读取覆盖部分的数据。
而Win32可执行文件佳作PE文...
阅读全文 |
评论次数(8) |
浏览次数(622) |
所属类型(罗云杉--Win32汇编)
[2010-07-13 15:24] Win32汇编 第一章 背景知识 笔记
windows的特色:
图形用户界面
一致的用户界面
多任务
大量的函数调用
和设备的无关性
内存管理。...
图形用户界面
一致的用户界面
多任务
大量的函数调用
和设备的无关性
内存管理。...
阅读全文 |
评论次数(19) |
浏览次数(867) |
所属类型(罗云杉--Win32汇编)
[2010-07-13 10:55] Win32汇编 前言 笔记
“其实,任何汇编语言都是和操作系统密切相关的,不管是dos汇编,win32汇编,还是linux汇编,都是基于特定的操作系统的,如果一定要绕过操作系统,那么就不会有DOS汇编和Win32汇编的区别了,但是这样的话,我们不是在学汇编,而是在自己开发操作系统。高级语言在不同的操作系统上看起来都差不多,但做为一种低级语言,不同操作系统上的汇编就是不同的世界,所以,既然windows和dos是两个完全不同的操作系统,我们就必须抛弃DOS汇编中的大部分概念从头开始学习Win32汇编。win32汇编是Windows环境下一种全新的编程语言”...
阅读全文 |
评论次数(0) |
浏览次数(585) |
所属类型(罗云杉--Win32汇编)
[2010-07-09 16:47] 第16章 直接定址表 粗略 笔记
描述了单元长度的标号,即在数据段的标号,可标识地址与单位长度。此标号为数据标号。
在后面加冒号“:”的地址标号,只能在代码段中使用,其他段,就只要给个标号就行了。
如果想要在代码段中直接用数据标号访问数据,则需要用伪指令assume将标号所在的段合一个段寄存器联系起来。否则编译器无法确定段地址。...
在后面加冒号“:”的地址标号,只能在代码段中使用,其他段,就只要给个标号就行了。
如果想要在代码段中直接用数据标号访问数据,则需要用伪指令assume将标号所在的段合一个段寄存器联系起来。否则编译器无法确定段地址。...
阅读全文 |
评论次数(0) |
浏览次数(502) |
所属类型(《汇编语言》笔记)
[2010-07-09 16:27] 第15章 外中断 粗略 笔记
PC系统中,外中断源有两种,
1、可屏蔽中断,CPU是否需要响应这种可屏蔽中断,要看标志寄存器的IF位,如果IF=1则响应。
sti 设置IF=1,
cli 设置IF=0;
2、不可屏蔽中断;必须响应的外中断,CPU在执行完当前指令后,需要立即响应,引发中断过程。
不可屏蔽中断的中断类型码固定位2,中断过程不需要取中断类型码。
几乎所有由外设引发的外中断都是可屏蔽中断,。不可评比中断是在系统中有必须处理的紧急情况发生时,用来通知CPU的中断信息。...
1、可屏蔽中断,CPU是否需要响应这种可屏蔽中断,要看标志寄存器的IF位,如果IF=1则响应。
sti 设置IF=1,
cli 设置IF=0;
2、不可屏蔽中断;必须响应的外中断,CPU在执行完当前指令后,需要立即响应,引发中断过程。
不可屏蔽中断的中断类型码固定位2,中断过程不需要取中断类型码。
几乎所有由外设引发的外中断都是可屏蔽中断,。不可评比中断是在系统中有必须处理的紧急情况发生时,用来通知CPU的中断信息。...
阅读全文 |
评论次数(0) |
浏览次数(534) |
所属类型(《汇编语言》笔记)
[2010-07-02 17:10] 第14章 端口 学习笔记
在PC系统中,CPU最多可以定位64KB个不同的端口
端口地址范围是0~65535
对端口的读写,不能用mov,push等内存读写指令,
只有in跟out两条。
in al,60h (从60H号端口读入一个字节)
执行时:
CPU通过地址线将地址信息60H发出
通过控制线发出读命令,选中端口所在的芯片,通知它将要读数据
端口将60H的数据通过数据线送入CPU
在in和out指令中,只能使用ax或者al来存放从端口读入的数据或要发送的数据。
(不是很明白,一个端口,指得是一个芯片的代号,还是芯片上的某一个内存地址的代号?)...
端口地址范围是0~65535
对端口的读写,不能用mov,push等内存读写指令,
只有in跟out两条。
in al,60h (从60H号端口读入一个字节)
执行时:
CPU通过地址线将地址信息60H发出
通过控制线发出读命令,选中端口所在的芯片,通知它将要读数据
端口将60H的数据通过数据线送入CPU
在in和out指令中,只能使用ax或者al来存放从端口读入的数据或要发送的数据。
(不是很明白,一个端口,指得是一个芯片的代号,还是芯片上的某一个内存地址的代号?)...
阅读全文 |
评论次数(1) |
浏览次数(534) |
所属类型(《汇编语言》笔记)
[2010-07-02 17:01] 第13章 试验13 编写、应用中断例程(以后再补)
RT...
阅读全文 |
评论次数(0) |
浏览次数(546) |
所属类型(汇编语言检测点自答)
[2010-07-02 16:57] 第13章 检测点13.2 自答
1)应该是不能编程改变的因为这段内存是只读的。
2)应该是可以的。dos也是一种操作系统吧?...
2)应该是可以的。dos也是一种操作系统吧?...
阅读全文 |
评论次数(1) |
浏览次数(587) |
所属类型(汇编语言检测点自答)
[2010-07-02 16:45] 第13章 int指令 学习笔记
int指令引起的中断,是另一种重要的内中断。
int n(n为中断类型码)
执行这条指令时,相当于,引发了一个n号中断的中断过程。
即调用了一段中断处理程序,跟call指令功能差不多。...
int n(n为中断类型码)
执行这条指令时,相当于,引发了一个n号中断的中断过程。
即调用了一段中断处理程序,跟call指令功能差不多。...
阅读全文 |
评论次数(2) |
浏览次数(535) |
所属类型(《汇编语言》笔记)