Intel 汇编语言程序设计读书笔记

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 习题答案

你可能感兴趣的:(汇编语言,asm)