assembly 寄存器(工作原理)
assembly 寄存器(工作原理)
1.0 寄存器概述
- 8086CPU有14个寄存器AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW
- 8086CPU的所有寄存器都是16位的,可以存放2个字节
- 8086CPU的上一代的寄存器都是8位的
- 为了兼容性,AX,BX,CX,DX这四个寄存器都是可以分为2个独立的8位寄存器使用的
- AX 可以分为AH,AL H=high L=low
1.1 字在寄存器中的存储 word
- 一个字可以存在一个16位的寄存器中,这个字的高位字节和地位字节自然就存放在寄存器的高八位和第八位寄存器中

1.2 几条汇编指令
- mov ax, 18 将18送入ax寄存器中
- mov ah, 18 将18送入ah寄存器中
- add ax, 8 将ax中的数值加上8
- mov ax, bx 将bx寄存器中的值送入ax寄存器中
- add ax, bx 将ax寄存器中的值加上bx寄存器中的值,结果存储到ax中
1.3 物理地址
- CPU访问内存时要给出内存单元的地址,所有内存单元构成的存储空间是一个一维的线性空间
- 我们将这个唯一的地址,称为物理地址
- CPU由3部分组成 运算器,控制器,寄存器

1.3.1 8086CPU给出物理地址的方法
-
8086有20位地址总线,可传送20位地址 寻址能力也就是2的20次方
-
2^20=1,048,576Byte 1,048,576/1024=1024KB = 1MB
-
8086CPU内部16位结构,它只能传送16位的地址
-
86CPU采用一种内部用两个16位地址合成的方法形成一个20位的物理地址
-
地址加法器合成物理地址的方法: 物理地址=段地址*16+偏移地址
-

-
地址加法器互作原理
-

-
CPU访问内存时必须提供内存时,必须向内存提供内存单元的物理地址
-
8086CPU内部用段地址和偏移地址相加的方法形成最终的物理地址
-
CPU可以通过不同的段地址和偏移地址形成一个物理地址
1.4 段寄存器
- 段寄存器就是提供地址的 8086CPU有四个寄存器 CS,DS,SS,ES
- 当8086CPU要访问内存单元时由这四个段寄存器提供内存单元的地址
1.5 CS :IP
- CS 为代码段寄存器 IP为指令指针寄存器
- 从CS:IP指向内存单元读取指令,读取指令进入指令缓冲器
- IP=IP+所读取指令的长度,从而指向下一条指令
- 循环
- 修改CS:IP的指令 同时修改 jmp 段地址:偏移地址 jmp 2AE3:2
- 修改IP的指令 只修改IP jmp 某一合法寄存器 jmp AX 将寄存器的值给IP**
- CPU只认被CS:IP指向的内存单元的内容为指令
1.6 Debug 常用指令
DEBUG下最常用的调试指令为六个
(1)R :查看更改cpu寄存器内容
(2)D:查看内存中内容
(3)E:改写内存中内容
(4)U:将内存中机器指令翻译成汇编指令
(5)T:执行一条机器指令
(6)A:以汇编格式在内存中写入一条指令

浙公网安备 33010602011771号