寄存器(简单概述)

寄存器概述

  • 8086CPU寄存器为:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。
  • 32-bitCPU寄存器为:EAX、EBX、ECX、EDX、EBP、ESI、EDI、ESP。
  • 64-bitCPU寄存器为:RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、R8、R9、R10、R11、R12、R13、R14、R15。
  • AX可以分为AH和AL,以此类推。

字在寄存器中的储存

  • 一个字可以存在一个16位寄存器中,这个字的高位字节和低位字节存入寄存器的高8位寄存器和低8位寄存器中。

MOV&ADD

格式 描述
mov 寄存器, 数据 将数据送入寄存器
mov 寄存器1, 寄存器2 将寄存器2的值送入寄存器1
add 寄存器, 数据 将数据加到寄存器中
add 寄存器1, 寄存器2 将寄存器2中的值加入寄存器1
  • 注:当相加数据溢出时,最后一个进位值不会被CPU所丢弃

物理地址

  • CPU访问内存单元时要给出内存单元的地址。所有的内存单元构成的储存空间是一个一维的线性空间。
  • 我们将这个唯一的地址称为物理地址。

一个16位CPU有以下特征

  • 运算器一次最多可以处理16位的数据。
  • 寄存器的最大宽度为16位。
  • 寄存器和运算器之间的通路是16位。

8086CPU给出物理地址的方法

  • 8086有20位地址总线,可传送20位地址,寻址能力为1M。
  • 8086内部为16位结构,它只能传送16位的地址,表现出的寻址能力却只有64K。

8086CPU计算物理地址的方法

  • CPU中的相关部件提供两个16位地址,一个称为段地址,另一个称为偏移地址。
  • 段地址和偏移地址通过内部总线送入地址加法器中。
  • 地址加法器将两个16位地址合并成一个20位的物理地址
    • 物理地址 = 段地址 * 16 + 偏移地址
    • 将段地址 * 16也就是将数据左移4位

段的概念

  • 内存并没有分段,段的划分来自于CPU,由于8086CPU用“段地址 * 16 + 偏移地址 = 物理地址”的方式给出内存单元的物理地址,使得我们可以用分段的方式管理内存。
  • CPU访问内存单元时,必须向内存提供内存单元的物理地址。
  • 8086CPU在内部用段地址和偏移地址移位相加的方法形成最终的物理地址。
  • CPU可以用不同的段地址和偏移地址形成统一物理地址

段寄存器

  • 段寄存器就是提供段地址的寄存器
  • 8086CPU有4个段寄存器:CS、DS、SS、ES
  • 当8086CPU要访问内存时,由这4个段寄存器提供内存单元的段地址。
  • CS和IP时8086CPU中最关键的寄存器,它们指示了cpu当前要读取指令的地址。
  • CS:代码段寄存器
  • IP:指令寄存器

8086CPU工作过程简要概述

  • 在8086CPU加电启动或者复位后(即CPU刚刚开始工作时)CS和IP被设置为CS=FFFFH,IP=0000H。
  • 在8086CPU启动时,CPU从内存FFFF0H单元中读取指令
  • 在任何使用,CPU将CS、IP中的内容当做指令的段地址和偏移地址,用它们合成指令的物理地址,到内存中读取指令码,执行。

JMP

格式 描述
jmp 段地址:偏移地址 用来修改段寄存器和偏移地址寄存器中的值
jmp 数据 单独修改IP的内容
jmp 寄存器 使用寄存器中的数值修改IP中的内容

寄存器英文全称以及中文翻译

  • AH&AL=AX(accumulator):累加寄存器
  • BH&BL=BX(base):基址寄存器
  • CH&CL=CX(count):计数寄存器
  • DH&DL=DX(data):数据寄存器
  • SP(Stack Pointer):堆栈指针寄存器
  • BP(Base Pointer):基址指针寄存器
  • SI(Source Index):源变址寄存器
  • DI(Destination Index):目的变址寄存器
  • IP(Instruction Pointer):指令指针寄存器
  • CS(Code Segment)代码段寄存器
  • DS(Data Segment):数据段寄存器
  • SS(Stack Segment):堆栈段寄存器
  • ES(Extra Segment):附加段寄存器
  • OF overflow flag 溢出标志 操作数超出机器能表示的范围表示溢出,溢出时为1.
  • SF sign Flag 符号标志 记录运算结果的符号,结果负时为1.
  • ZF zero flag 零标志 运算结果等于0时为1,否则为0.
  • CF carry flag 进位标志 最高有效位产生进位时为1,否则为0.
  • AF auxiliary carry flag 辅助进位标志 运算时,第3位向第4位产生进位时为1,否则为0.
  • PF parity flag 奇偶标志 运算结果操作数位为1的个数为偶数个时为1,否则为0.
  • DF direcion flag 方向标志 用于串处理.DF=1时,每次操作后使SI和DI减小.DF=0时则增大.IF interrupt flag 中断标志 IF=1时,允许CPU响应可屏蔽中断,否则关闭中断.
  • TF trap flag 陷阱标志 用于调试单步操作.

你可能感兴趣的:(汇编)