本人比较懒,可能懒得对前面的文章进行整理,也不怎么喜欢写很多,呵呵。今天往后的系列可能会更懒一些,基本翻译Jones[1].and.Bartlett.Publishers.Introduction.to.80x86.Assembly.Language.and.Computer.Architecture的内容,因为我觉得这些内容比较基础,同时自己也是一个复习。
第1章 数据在计算机中的表示方法
单字节 ASCII 码微软系列
双字节 UNICODE 双字节 一般使用时在头文件中会存在 #define UNICODE 或 #define _UNICODE(检查这两个是否存在就可以判定是否是UNICODE)
还有一些不常见得,也是通过检查某个define来判定
至于一些2,8,10,16进制的运算方法这里就不说了,随便一本教材就有。
第2章 计算机系统的各个部分
8086/8088的cpu能执行200以上不同的指令。80386和后面的系列更是用各种扩展的指令集。cpu的内部存储器--寄存器,超过外部RAM的速度很多,同时存储还有cach(高速缓存)。registers > cash > ram
这里说一下,按照我看过的资料,cpu为了提高速度,采取了多条管道并行执行n条指令段的技术,同时会预先判断下面最可能执行的片段,将其装入cash.
然后 EAX,EBX,ECX,EDX
AL,AH,AX等等就不用说了,L-low,H-high,E-extend
EBX,ECX,EDX同理
附加寄存器ESI,EDI,ESP,EBP
SI source index(源地址索引寄存器) di destination index (目的地址索引寄存器)
常用来做字符串地址内容copy的寄存器
ESP 系统堆寄存器,一般不会被外部程序所改变.EBP 为堆指针,用来选择需要的位置.
16位段寄存器 CS, DS, ES, FS, GS, and SS.如果看过exe文件结构和汇编源代码,这个比较容易理解.
EFLAG 标志位寄存器 常用的位有
Bit Mnemonic Usage
0 CF carry flag
2 PF parity flag
6 ZF zero flag
7 SF sign flag
10 DF direction flag
11 OF overflow flag
第1章 数据在计算机中的表示方法
单字节 ASCII 码微软系列
双字节 UNICODE 双字节 一般使用时在头文件中会存在 #define UNICODE 或 #define _UNICODE(检查这两个是否存在就可以判定是否是UNICODE)
还有一些不常见得,也是通过检查某个define来判定
至于一些2,8,10,16进制的运算方法这里就不说了,随便一本教材就有。
第2章 计算机系统的各个部分
8086/8088的cpu能执行200以上不同的指令。80386和后面的系列更是用各种扩展的指令集。cpu的内部存储器--寄存器,超过外部RAM的速度很多,同时存储还有cach(高速缓存)。registers > cash > ram
这里说一下,按照我看过的资料,cpu为了提高速度,采取了多条管道并行执行n条指令段的技术,同时会预先判断下面最可能执行的片段,将其装入cash.
然后 EAX,EBX,ECX,EDX
AL,AH,AX等等就不用说了,L-low,H-high,E-extend
EBX,ECX,EDX同理
附加寄存器ESI,EDI,ESP,EBP
SI source index(源地址索引寄存器) di destination index (目的地址索引寄存器)
常用来做字符串地址内容copy的寄存器
ESP 系统堆寄存器,一般不会被外部程序所改变.EBP 为堆指针,用来选择需要的位置.
16位段寄存器 CS, DS, ES, FS, GS, and SS.如果看过exe文件结构和汇编源代码,这个比较容易理解.
EFLAG 标志位寄存器 常用的位有
Bit Mnemonic Usage
0 CF carry flag
2 PF parity flag
6 ZF zero flag
7 SF sign flag
10 DF direction flag
11 OF overflow flag