您的位置:首页 > 其它

寄存器

2016-05-28 16:16 155 查看
1,初识寄存器

不同的cpu寄存器结构和个数不相同

例如:8086CPU寄存器有14个寄存器:AX,BX,CX,DX,SI,DI,SP,DP,IP,CS,DS,SS,ES,PSW,

AX,BX,CX,DX,通用寄存器,

每个寄存器有16个字节,

一个寄存器可以分成两个寄存器,每个寄存器8位

AX:AH,AL

BX:BH,BL

CX:CH,CL

DX:DH,DL

8086CPU为16位CPU

运算器一次可以处理16位数据,

寄存器的最大宽度为16位

寄存器与运算器之间的通路为16位

16位只能寻址64kb

所以8086使用地址加法器

地址加法器计算方法 物理地址=断地址*16 + 偏移地址

例如:

地址段1H可以寻址的范围是1H*16+0 -- 1H*16+2^16-1

段寄存器(提供段地址)

CS,DS,SS,ES

IP为指令寄存器

CS内容为M,IP为N, 8086CPU 将从内存M*16+N 单元开始 读取第一条指令

修改CS,IP的内容用jmp指令 语法:jmp 段地址:偏移地址 eg:jmp 2AE3:3 执行过后 CS=2AE3H, IP=0003H 从2AE33H处读取指令

如果只想修改IP的内容 则可以用 语法:jmp 一个合法寄存器 eg:jmp ax, 执行前:ax = 1000H, CS=2000H,IP=0003H

                                     执行后:ax = 1000H, CS=2000H,IP=1000H

DS寄存器 --存放CPU访问的内存段

当CPU访问内存时,需要把内存的地址放入DS寄存器 

eg:mov bx,1000H //将要访问的内存放入一个寄存器(不能直接放入段地址寄存器,注意前面可以用r 修改,那是debug的内容,并不代表汇编代码可以这样写)

   mov ds,bx //bx寄存器里面的地址段 赋给ds

   mov al,[0] //读取ds内的内存的内容到al寄存器,[0]表示地址偏移量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: