文档库 最新最全的文档下载
当前位置:文档库 › 汇编学习精要分析1-2章

汇编学习精要分析1-2章

汇编代码 发展至今 由一下 组成:
汇编指令:机器码助记符 ,有对应的机器码
伪指令:没有对应的机器码,由编译器执行,计算机并不执行。
其他符号:+、-、*、%等,有编译器识别,没有对应机器码。
存贮器:
存储器 被划分成 若干个 单元 ,每个单元从 0据爱是编号。
计算机 的最小信息是 BIT 也就是一个二进制位。
1byte=8bit 1个字=2BYTE

CPU想要进行数据读写 必须和 外部芯片 进行3类信息交互: 1.存储单元的地址.2.器件的选择。3.读或写的数据。
CPU通过总线(导线的集合)来 完成 数据 读写 总线 从逻辑上分为三类:1.地址总线 2. 控制总线 3. 数据总线。
数据的 读: 通过 地址线 传递 地址 通过 控制线 发出 读命令 通过数据线 读取 数据
数据的写 : 通过地址线 传递 写入的 地址 通过控制线 法术 写的命令 通过 数据线 传送写入数据
地址总线: 地址总线 是用来 指定 存储器 单元的。。地址总线上能 传送多少个不同信息 ,CPU就能 对多少个 储存单元进行寻址。
一个CPU有N个地址线 就说 N是 CPU 的地址总线宽度 这样的CPU可以寻址2的N次方的 内存单元(一个内存单元=1BYTE)。
寻址能力= 2^N byte
数据总线:CPU与 内存 或者其他 器件 之间的数据传送是通过 数据总线来进行的。数据总线的宽度决定了CPU和外界的数据传送速度。如
8跟数据总线可以一次传送一个8位2进制数据。
一次传送数据的 大小 = 数据总线/8 字节
控制总线 CPU对外部器件的控制是通过控制总线来进行的 。控制总线是一些不同的控制线的集合 。 有多少控制总线就 意味着 CPU对外部器件的多少种控制。所以控制总线的宽度 决定了CPU对外部器件的控制能力
第二章 寄存器
一个典型的CPU 由运算器、控制器、寄存器等组成,这些器件靠内部总线相连。
对于汇编程序员来说 寄存器是 CPU内部重要资源。可以对寄存器进行读写,程序员通过改变寄存器中的内容来实现对CPU的控制。
不同的CPU寄存器的个数、结构是不相同的。8086CPU有14个16位寄存器,一个16位寄存器可以存放16位数据 :
AX BX CX DX 四个寄存器通常用来存放一般性的数据,称作通用寄存器。
8086的上一代CPU中的寄存器店都是 8位的 为保证兼容 8086的AX可分为 AH(HIGH 高位)+AL(low低位) ;BX=BH+BL;CX=CH+CL;DX=DH+DL

字在寄存器中的存储:
字节 :BYTE 1BYTE=8bit 可以存在8位寄存器中
字: WORD 一个字由两字节组成,正两个字节分别称为 高位字节和低位字节,一个字可以存在 一个16位寄存器里。高位字节存在 高8位寄存器。16进制一位 需要 2进制的 4位 每 8位2进制位 能 存放 16进制 的2位 8为寄存器 最

大可存放 值为255 的 十进制数据
进制 表示 D:10进制 H:16进制 B:2进制
汇编指令和 寄存器 名称 不区分大小写
在数据传送时应注意指令的两个 操作对象的 位数 应当一致。。MOV AX,18H 也是正确的
MOV 目的操作数=源操作数 源操作数不变 ADD 目的操作数=目的操作数+源操作数 源操作数不变
物理地址 CPU 访问内存单元 要给出内存单元的 地址 将所有内存单元构成的储存空间 组成一个一维线性空间。每个单元都有唯一的物理地址。物理地址 由 地址总线送入存储器。
16位CPU 具有以下 几方面特性:
运算器 一次最多可处理16位数据
寄存器的最大宽度为16位
寄存器和运算器之间的通路为16位
16位CPU即 在CPU内部可以一次性传输、处理、暂时储存信息的最大长度为16位
8086 CPU 给出物理地址的方法:
8086CPU有20位 地址总线 可以传送 20位地址。但是 从内部结构看 他 只能送出 16位地址 表现出的 寻址能力只有 64K
8086 CPU 采用一种在内部两个16位地址合成的方法来形成一个20位的物理地址 即 物理地址=段地址*16+偏移地址
段地址和偏移地址通过内部总线送入一个 地址加法器
地址加法器 将两个16位地址合成一个20位地址
地址加法器通过内部总线 将20位物理地址送入 输入输出 控制电路
输入输出 控制电路将20位物理地址送上地址总线
20位物理地址被地址总线传送到存储器。
段地址*16更为常用的说法是左移4位。(左移4个2进制位)
移位: 一个数据的二进制形式 左移1位相当于数据乘以2 ;一个数据的二进制形式左移N位相当于 数据乘以2的N次方。
推广: 一个数据16进制 左移一位 数据乘以 16 ;一个数据十进制形式 左移一位 数据乘以10.一个X进制数据左移一位,相当于乘以X
段地址*16+偏移地址=物理地址 的 本质 含义:
8086CPU 用给内存分段的 方法来管理内存 :例如 地址10000h-100ffh 的内存单元组成一个段 ,该段的起始地址为10000h,段地址为1000H ,大小为100H;
以后在编程时可以根据需要 ,将若干的地址连续的内存单元看做一个短,用段地址 *16 定位段起始地址 ,用偏移地址定位额段中的 内存单元。有两点需要注意:段地址*16必然是 16的 倍数 ,所以 一个段的 起始地址也一定是 16的 倍数:便宜地址为 16位 ,16位的寻址能力为64KB ,所以一个段的 最大长度为 64KB。
CPU可以用不同的段地址和偏移地址形成同一个 物理地址。
段寄存器
8080CPU 有4个段寄存器 CS DS SS ES
CS 和 IP :
CS 和 IP 是8086CPU中两个最关键的寄存器,它们指示了CPU当前 要读取指令的地址.CS为代码段寄存器,IP为指令指针寄存器。
在8086PC机中 任意时刻 设 CS中的

内容为M,IP中的内容为N,8086CPU将从内存M*16+N 单元开始,读取一条指令并执行。
8086 CPU 的工作过程 :
1.从CS:IP 指向内存单元读取指令,读取的指令进入指令缓冲器;
2.ip=ip+所读取指令的长度,从而指向下一条指令;
3.执行指令。转到步骤1.重复这个过程
8086cpu加电启动或者复位后 CS和IP被设置为CS=F000H.IP=FFFFH,即在8086刚启动时,CPU内存FFFF0H单元中读取指令执行FFFF0H单元中的指令是8086PC开机后执行的第一条指令。
程序员可以通过改变CS、IP的内容来控制CPU执行的目标指令。
MOV不能用于设置CS,8086CPU为CS、IP提供了另外的指令来改变它们的值。这些指令通称为转移指令。
最简单的转移指令:JMP指令: 若想同时修改CS、IP的内容。可以用指令JMP 段地址:偏移地址
若想值修改IP的内容可以用指令 JMP 某一合法寄存器 例如 JMP ax 将AX 值 传递给IP
代码段:
可以将长度为N(N=<64kb)的一组代码,存在一组地址连续、起始地址为16的倍数的内存单元中。我们可以任务这段内存是用来存放代码的,从而定义一个代码段。
如何使得代码段中的指令被执行呢 ? 将一段内存当作代码段,仅仅是我们在编程时的一种安排,CPU并不会由于这种安排就自动执行.cpu只认被CS:IP指向的内存单元中的内容为指令。所以要让CPU执行我们放在代码段中的指令,必须要将CS:IP指向所定义的代码段中的第一条指令的首地址。
DEBUG:
DEBUG是 调试工具 用它可以 擦好看CPU各种寄存器中的内容内存的情况和在机器码级跟踪程序运行。
DEBUG R命令 查看改变 CPU 寄存器内容
DEBUG D命令 查看内存中的内容
DEBUG E命令 改写内存中的内容
DEBUG U命令将内存中的机器指令翻译成汇编指令
DEBUG T命令执行一条机器指令
DEBUG A命令以汇编指令的格式在内存中写入一条机器指令































相关文档
相关文档 最新文档