汇编语言(1)基础理论

汇编语言 王爽 2003版

第一章 基础知识
1.汇编语言是直接在硬件之上工作的编程语言,首先要了解硬件体系结构,才能有效的应用汇编语言对其编程。
2.机器语言:是机器指令的集合,机器指令就是一台机器可以正确执行的命令。电子计算机的机器指令是一列二进制数字,计算机将之转换成一列高低电平,以使计算机的电子器件受到驱动,进行运算。
3.编译器: 把汇编指令转换为机器指令的翻译程序。
4.汇编语言有三类指令:
汇编指令:机器码的助记符。(核心)
伪指令:没有对应机器码,由编译器执行,计算机并不执行。
其他符号:如 + - * / 等,由编译器识别,没有对应机器码。
5.CPU是微处理器,每一种微处理器,由于硬件设计和内部结构不同,就需要用不同的电平脉冲来控制,所以每一种微处理器都有自己的机器指令集,也就是机器语言。
6.CPU 是计算机的核心部件,控制整个计算机的运行并进行运算。要让CPU工作,必须向它提供指令和数据。指令和数据在存储器中存放。
7.在内存或磁盘中,指令和数据都是二进制。CPU在工作的时候,把有的信息看作指令,有的信息看作数据。
8.1KB = 1024B 1MB = 1024KB 1GB = 1024MB 1TB = 1024GB
9.总线:计算机中专门连接CPU和其他芯片的导线。
10.CPU通过地址总线来制定存储器单元。地址总线上能传送多少个不同的信息,CPU就可以对多少个存储单元进行寻址。
11.一个CPU有N根地址线,则这个CPU的地址总线宽度是N,最多可以寻找2的N次方个内存单元。
12.数据总线的宽度决定了CPU和外界的数据传输速度。8根数据总线一次能传送一个8位2进制数(即一个字节)。
13.控制总线是一些不同控制线的集合。有多少根控制总线,就以为着CPU提供了对外部器件的多少种控制。
14.内存地址空间:所有的物理存储器被看作一个由若干存储单元组成的逻辑存储器,这个逻辑存储器就是内存地址空间。每个物理存储器在这个逻辑存储器中占有一个地址段,即一段地址空间。

第二章 寄存器
15.在CPU中,
(1)运算器进行信息处理寄
(2)寄存器进行信息存储
(3)控制器控制各种器件进行工作
(4)内部总线连接各种器件
16.不同的CPU,寄存器的个数、结构是不同的。 8086CPU有14个寄存器:AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW。8086CPU的寄存器都是16位的。
17.AX,BX,CX,DX四个寄存器通常用来存放一般性的数据,称为通用寄存器。
18.一个8位寄存器所能存储的数据的最大值是 2^8 -1.
19.十六进制的数据后面加H,二进制数据后边加B,十进制后边什么也不加。
20.8086CPU是16位结构,就是说在8086内部,能够一次性处理、传输、暂时存储的信息的最大长度是16位的。内存单元的地址早送上地址总线之前,必须在CPU中处理、传输、暂时存放。
21.地址加法器采用 物理地址 = 段地址 16 + 偏移地址的方法用段地址和偏移地址合成物理地址。
22.一个数据的二进制形式左移N位,相当于该数据乘以2的N次方。
23.段地址
16 + 偏移地址的本质含义:CPU在访问内存时,用一个基础地址(地址段16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。
24.CPU可以用不同的段地址和偏移地址形成同一个物理地址。
25.段地址:根据需要,将地址连续、起始地址为16的倍数的一组内存单元定义为1个段。
26.CS和IP是8086CPU中两个最关键的寄存器,他们指示了CPU当前要读取指令的地址。CS为代码段寄存器,IP为指令指针寄存器。
27.在8086PC机中,任意时刻,设CS中的内容M,IP中的内容N,8086CPU将从内存 为M
16+N单元开始,读取一条指令并执行。

28.在CPU中,程序员能够用指令读写的部件只有寄存器。
29.用mov指令(传送指令)可以更改大部分变寄存器的值,除了CS和IP(8086没有提供功能)。
30.能够改变CS和IP的指令被称为转移指令,可以用 “jmp 段地址:偏移地址”完成。
31.如果只改变CS:IP中的一个 可以 用“jmp 某一合法寄存器”完成。

第三章寄存器(内存访问)
32.字型数据用两个单元存放。高8位存放高位字节,低8位存放低位字节。
33.字单元:即存放一个字型数据(16位)的的内存单元,由两个地址连续的内存单元组成
34.8086CPU中有一个DS寄存器,通常用来存放要访问数据的段地址。
35.mov al,[0] 其中[]表示一个内存单元,0表示内存单元的偏移地址。指令执行时,8086CPU自动取ds中额数据为内存单元的段地址。(反过来mov [0],al 完成al到内存的数据传输)。
36.CPU提供栈机制,8086CPU提供入栈和出栈指令,最基本是PUSH(入)和POP(出),段寄存器SS(段地址)和寄存器SP(偏移地址),当栈满时候使用push指令入栈,或栈空的时候使用pop指令出栈,会发生栈顶超界问题。
37.push和 pop指令格式:
push 寄存器(段寄存器,内存单元):将一个寄存器中的数据入栈。
pop 寄存器(段寄存器,内存单元) :用一个寄存器接收出栈的数据。
指令执行时,CPU要知道内存单元的地址,可以在push,pop指令中只给出内存单元的偏移地址,段地址在指令执行时,CPU从ds中获得。
38.设置栈的段地址,不能直接向段寄存器ss送入数据,所以要用ax中转。

猜你喜欢

转载自www.cnblogs.com/chengyunshen/p/9262152.html