寄存器

来源:互联网 发布:逆袭网络剧第2集土豆 编辑:程序博客网 时间:2024/05/13 04:24
寄存器
对于汇编程序员来说,cpu中的主要部件是寄存器,寄存器是cpu中程序员可以用指令读写的部件,程序员可以通过改变各种寄存器内容实现cpu控制。
不同的cpu,寄存器的个数,结构是不相同的,8086cup有14个寄存器。AX,BX,CX,DX,SI,DI,SP,BP,CS,SS,DS,ES,PSW
8086cup所有寄存器都是16位,可以存放2个字节。AX,BX.CX,DX这4个寄存器通常存放一般性的数据,被称为通用寄存器。
8086cpu的上一代的寄存器是16位,为保证兼容,使原来基于上代cpu编写的程序稍微修改的可以运行在8086上,8086cpu的AX,BX,CX,DX这4个寄存器都可以分为二个独立使用的8位寄存器使用。
AX分为 AH和AL;
AB分为 BH和BL;
AC分为 CH和CL;
AD分为 DH和DL;
对于兼容性考虑,8086cpu可以一次性处理二种尺寸的数据
字节:byte8个bit,可以存在8位寄存器
子,一个字二个字节组成,这二个字节分别这个字的高位字节和地位字节。
几条汇编指令
mov ax,18 将18送入ax寄存器  ax=18
mov ah,78 将78送入ah寄存器  ah=78
add ax,8  将ax数字增加8     ax=ax+8
mov ax,bx 将bx寄存器的值存入ax寄存器中 ax=bx
add ax,bx 将bx寄存器值添加到ax寄存器中 ax=ax+bx 
实例:
命令           执行后AX中的数据        执行后BX中的数据
mov ax,4E20H   4E20H                   0000H
add ax,1406H   6226H                   0000H
mov bx,2000H   6226H                   2000H
add ax,bx      8226H                   2000H
mov bx,ax      8226H                   8226H
add ax,bx      ?                       8226H
计算:
  8226H
+ ----
  8226H
=1044CH
应为AX为16位寄存器放不下20位所以高位1不能再AX保存,AX数据为044CH。
实例:
命令           执行后AX中的数据        执行后BX中的数据
mov ax,001AH   001AH                   0000H
mov bx,0026H   001AH                   0026H
add al,bl      0040H(1A+26)            0026H
add ah,bl      2640H(00+26)            0026H
add bh,al      2640H                   4026H(00+40)
add ah,0H      0040H                   4026H
add al,85H     00C5H(85H+40H)          4026H
add al,93H     ?(C5H+93H)              4026H
计算~,158H但是AL为8位寄存器,所以高位1丢失AX数据为0085H
物理地址
我们知道,cup访问内存单元,要给出内存单元地址,所有内存单元构成的储存空间是一个一维的线性空间,每一个内存内存单元在这空间都有唯一的地址,我们将这唯一的地址称为物理地址。
  cup通过地址总线送入寄存器,必须是一个内存单元物理地址,在cpu向地址总线发出地址之前,必须内部先形成这物理地址,不同的cpu有不同的形成方式,8086cup如何形成内存单元物理地址的?




0 0
原创粉丝点击