原来,天底下还有这么好的汇编教材,我当时上学的时候咋就没有呢。。。。否则我的汇编水平肯定比现在高不少。。用来一天的时间把这本书看了个遍。。。。记下让我“哦”的地方吧。。。将来也许有用 。。。
1. 汇编语言的组成:
a. 指令: 有对应的机器码。
b. 伪指令: 没有对应的机器码,编译器执行,计算机不执行。。
2. 指令和数据是应用层的概念,在内存中都是01组成的二进制信息,没有什么区别,计算机认为方式cs:ip指向的都是指令,其他都是数据,就是这样区别指令和数据的,计算机真笨。。。
3. 总线的概念: 劳资学了这么长时间才真正明白了什么是总线。。。。。。
就是主板上的一条条的导线。。。。cpu通过引脚连接到总线上。。。然后向各个板块芯片发送指令。。
总线分为: 地址总线, 数据总线,控制总线。。。
在cpu内部也有总线,是内部总线。。在内部各个处理单元之间传递数据使用。。
通常说的32为的cpu ,64为的cpu ,都是说的cpu内部总线的宽度, 也就是在cpu内部各个处理单元之间一次可以传递的数据的位数。。。
cpu操作内存的过程如下:
cpu--------------地址总线: 3号地址--------------------------------》内存
cpu---------------控制总线: 读--------------------------------------》内存
cpu《---------------数据总线: 【3】= 0x23 ---------------------- 内存
4. 内存地址空间
在一台计算机上有许多的存储器 。。
主存: ram
Bios: rom
显存: ram
cpu在操作他们的时候都是当做内存来看待,并不进行区分。。。把他们总的看成一个逻辑存储器。。这个逻辑存储器就是我们说的内存地址空间。。。如下图示
-----------------
| |
| |
| 主存储器 |
| |
-----------------
| |
| 显存 |
----------------
| |
| 显卡bios |
----------------
| |
| 网卡bios |
----------------
| |
| 声卡bios |
-----------------
每一个物理存储器在内存地址空间中占有一段地址空间。。。
5. 16位的cpu的特性体现;
大家都知道8086是16位的cpu,那体现在什么方面呢??
1. 寄存器是16位的
2.寄存器和运算器之间的内部总线宽度是16位的
3. cpu一次最多可以处理16位数据。。。
7. 物理地址:
物理地址 = 段地址* 16 + 偏移地址。。
为什么这样做呢? 因为cpu内部是16位的,而数据总线的宽度是20位的,cpu要进行组合后才能提供物理地址。。。
上述计算过程是通过地址加法器来完成的。。。
8. 段的概念:
通过7 让我们感觉好像进行了内存分段似的, 其实内存没有分段。。。
段的划分来自cpu。。段最大是 64k。。
9
在cpu刚加电或复位后,cs:F000 ; ip: FFFFH 所以cpu 从 FFFF0 开始执行。。。。
10 指令的高级语言解释:
mov ax 3 ; ax = 3;
lea ax offset b ; ax = &b;
add ax bx ; ax += bx;
写的比较乱。。。。明天继续写第二篇。。。。。