Kip_asm
第1章 基本概念
1.3.5 十六进制数各位求反的一个简单方法就是将对应的数字位从15中减除。
可以通过十六进制整数的最高数据位来判断其为正或为负。如果最高位≥8,则为负数,如果最高位≤7,则为正数。
第2章 IA-32处理器体系结构
2.1.4 #网络引用#程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。
开个QQ,开了一个进程;开了迅雷,开了一个进程。
在QQ的这个进程里,传输文字开一个线程、传输语音开了一个线程、弹出对话框又开了一个线程。
所以运行某个软件,相当于开了一个进程。在这个软件运行的过程里(在这个进程里),多个工作支撑的完成QQ的运行,那么这“多个工作”分别有一个线程。
所以一个进程管着多个线程。
通俗的讲:“进程是爹妈,管着众多的线程儿子”
2.2.1 保护模式:程序被赋予了独立的内存区域(称为段),处理器阻止程序访问已分配段之外的其他内存。
2.2.2 EFLAGS寄存器:当某标志等于1时就说其被置位;等于0时就说其清除(或复位)。
2.3.1 #网络引用#
逻辑地址是指由程序产生的与段相关的偏移地址部分。
线性地址,段中的偏移地址,加上相应段的基址就生成了一个线性地址.
物理地址是指出现在CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果地址。
虚拟内存是指计算机呈现出要比实际拥有的内存大得多的内存量。因此它允许程序员编制并运行比实际系统拥有的内存大得多的程序。一个很恰当的比喻是:你不需要很长的轨道就可以让一列火车从上海开到北京。你只需要足够长的铁轨(比如说3公里)就可以完成这个任务。采取的方法是把后面的铁轨立刻铺到火车的前面,只要你的操作足够快并能满足要求,列车就能象在一条完整的轨道上运行。
第3章 汇编语言基础
3.1.2上 以字母开头的十六进制常量前面必须加一个0,以防止汇编器将其解释为标识符。
3.1.9上 指令基本格式
[标号:] 指令助记符 操作数 [;注释]
标号:放在指令前,表明指令地址;放在变量前,表明变量地址。
代码标号:必须以冒号结尾。
3.2.2上 .386 该程序要求的最低CPU,Intel 386
.model flat,stdcall 为保护模式生成代码,stdcall允许调用MS-Windows函数。
3.4.2 [变量名] 伪指令 初始值 [,初始值]
如果在定义中不想初始化变量(赋予变量一个随机值),那么可以使用符号"?"作为初始值。
3.5.2 MASM用$返回当前程序语句的地址偏移值。
第4章 数据传送、寻址和算术运算
4.1.4 MOV指令对操作数的要求:
1.两个操作数的尺寸必须一致。
2.两个操作数不能同时为内存操作数。
3.目的操作数不能是CS, EIP和IP。
4.立即数不能直接送至段寄存器。
4.2.7上 #网络引用#异或XOR, 同为0,异为1.
4.3.2 对齐数据原因:CPU处理存储在偶数地址处的数据要比处理存储在奇数地址处的数据快。
4.5.1 循环的目的地址与当前地址只能在相距-128~+127字节的范围之内。机器指令的平均大小是3字节左右,因此一个循环平均最多只能包含大约42条指令。
4.6 PTR操作符允许重载变量的默认声明的尺寸。
TYPE操作符返回单个变量或数组中的单个元素的大小(按字节计算)。
LENGTHOF操作符返回数组中的元素的数目。
SIZEOF操作符返回数组初始化时占用的字节数。
第5章 过程
第6章 条件处理
第7章 整数算术指令
第8章 高级过程
第9章 字符串和数组
第10章 结构和宏
第11章 MS-Windows 程序设计
第12章 高级语言接口
第13章 16位MS-DOS程序设计
第14章 磁盘基础知识
第15章 BIOS程序设计
第16章 高级MS-DOS程序设计
第17章 浮点处理和指令编码
附录A MASM参考手册
附录B IA-32指令集
附录C BIOS和MS-DOS中断
附录D 习题答案