寄存器
来源:互联网 发布:网贷数据交易平台 编辑:程序博客网 时间:2024/06/06 06:53
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]表示地址偏移量
- 寄存器
- 寄存器
- 寄存器
- 寄存器
- 寄存器
- 寄存器
- 寄存器
- 寄存器
- 寄存器
- 寄存器
- 寄存器
- 寄存器
- 寄存器
- 寄存器
- 寄存器
- 寄存器
- 寄存器
- 寄存器
- contentProvider和contentResolver
- 智能指针
- 用两个栈实现一个队列
- 拖动条SeekBar
- 用两个队列实现一个栈
- 寄存器
- spring管理hibernat的事务
- 10. Regular Expression Matching【H】【87】【vip】【再来一遍】
- JAVA模式设计-策略模式
- MyEclipse下jsp连接mysql数据库实现用户登录
- 屏幕亮度显示的控制
- 多线程(三) synchronized关键字
- Activity之间使用intent传递大量数据带来问题总结
- 哈希学习