汇编学习笔记[1]:寄存器
来源:互联网 发布:apache jakarta是什么 编辑:程序博客网 时间:2024/05/29 21:17
前面还有一些进制转换等基础知识及数在机器中的表示,这里就不记录了。
一、8086/8088寄存器组(14个16位寄存器,8个8位寄存器)
1. 通用寄存器
包括数据寄存器,指针寄存器和谈起寄存器。均可用于传送和暂存数据,可以保存自述逻辑去处中的操作数和运算结果。
1)数据寄存器(可拆成高8位的H和低8位的L)
AX:可拆成高8位的AH和低8位的AL,又把AX和AL叫累加器。通过累加器进行计算可节省时间。
BX:又称基址寄存器。唯一可作为储存器指针使用的数据寄存器。
CX:一般字符串操作,或循环操作中用来控制循环次数。CL可用来控制移位。
DX:一般做32位乘除法时,存放被除数,或保留余数。
2)变址和指针寄存器
主要用于存放某个存储单元的地址的偏移,或某组单元起始地址的偏移。
DI,SI:主要用于字符串操作,DI是基地址,SI目的地址。
SP:保存堆栈指针的栈顶。
BP:某段开始位置地址的偏移。
2. 段寄存器
实现寻址1M字节物理地址空间。
3. 控制寄存器
1)指令指针
IP,16位,永远指向下一条指令
给出接着要执行的指令在代码段中的偏移
2)标志寄存器(8个标志)
1514131211109876543210 OFDFIFTFSFZF AF PF CFCF:进位标志,运算结果是否产生进位或者借位
ZF:零标志,运算结果是否为0,如果结果为0则ZF=1,否则ZF=0
SF:符号标志,反映运算结果的符号位,与运算结果的最高位相同,如果运算结果的最高位为1,则SF=1,否则SF=0
OF:溢出标志,反映有符号数加减运算是否引出溢出。如果运算结果>127或<-128(8位),或>32767或<-32768则溢出,若溢出OF=1,否则OF=0
PF:奇偶标志,反映运算结果中“1”的个数,如果“1”的个数为偶数,则PF=1,否则PF=0
AF:辅助进位标志,在字符操作时,如发生低半字节向高半字节进位或借位;在字操作时,如发生低字节向高字节进位或借位,则AF=1,否则AF=0
DF:方向标志,决定着串操作指令执行时有关指针寄存器调整方向。DF=1按减方式;DF=0按加方式
IF:中断允许标志,决定CPU是否响应外部可屏蔽中断请求,IF=1可响应;IF=0不可响应
TF:追踪标志,TF=1CPU进入单步方式,主要用于程序的调试。
二、存储器分段和地址的形成
1.存储单元的地址和内容
在存储器里以节节为单位存储信息。
每一个字节单元给以一个存储器的地址。
地址为0开始,顺序地每次加1
字单元的地址采用它的低地址来表示!
如(0004H)=34H,(0005H)=12H,那么(0004H)的字单元的内容为1234H。
2. 存储器地址的分段及物理地址的形成
在16位字长的机器里采用存储器地址分段的方法来提供20位地址。
段与段之间可相连,可以相离,还可以重叠。
在16进制表示的地址中,最低为0(即20位地址的低4位为0)
1M地址空间有20位物理地址=低4位为零的段首地址+偏移
如16表示的逻辑地址1234:3456的物理地址:12340+3456=15796H
3. 段地址的引用
在取指令的时候,自动引用代码段寄存器CS,再加上由IP给出的偏移,得到物理地址
当涉及到一个堆栈操作时,则自动引用堆栈寄存器SS,再加上SP所给出的偏移,得到堆栈操作所需要的物理地址。
当偏移涉及BP寄存器时,缺少引用段寄存器SS
在存取一个普通存储器操作数时,则自动选择数据寄存器DS或附加段寄存器ES,再加上偏移,得到物理地址。
在不改变段寄存器值的情况下,寻址最大范围为64K
允许段跨越前缀。
- 汇编学习笔记[1]:寄存器
- 汇编学习笔记[1]:寄存器
- 汇编学习笔记--寄存器
- 汇编学习笔记--标志寄存器
- 汇编学习笔记--寄存器(内存访问 1)
- 8086汇编学习笔记2-寄存器
- 8086汇编学习笔记7-标志寄存器
- 汇编学习笔记:寄存器(内存访问)
- 嵌入式汇编学习笔记(二)----寄存器
- 汇编学习笔记---2.1通用寄存器
- 汇编学习笔记之寄存器综述
- [汇编学习笔记][第十一章标志寄存器]
- 汇编寄存器笔记
- 汇编学习--7.9--寄存器
- 汇编之寄存器学习
- 汇编学习笔记----8086CPU的段寄存器
- 汇编学习笔记:CPU内部组成,寄存器讲解
- 什么是寄存器——汇编学习笔记(一)
- hibernate之关于映射
- java/js 右下脚浮动小窗口,慢慢上升,类似于广告窗口
- 在Visual Studio中如何生成不安全代码
- getsockopt/setsockopt 函数说明
- 在XP环境下开发ASP时候,通过IE不能直接访问网站的解决方案。
- 汇编学习笔记[1]:寄存器
- QT中PRO文件写法的详细介绍,很有用,很重要!
- VC不常用编译器参数
- symbian网站
- 【探索wireshark】 构建和配置开发环境
- Windows编程那些事----插入dll和挂接API
- 修改selinux对httpd的限制,主要是libphp5.so
- Suspended.
- 安装ubuntu10.4,爽!