汇编语言笔记3
汇编语言笔记3
字在寄存器中的存储
8086CPU可以一次性处理一下两种尺寸的数据:
- 字节,byte,一个字节有8个bit组成,存放在8位寄存器中
- 字,word,一个字由两个字节组成,一个字可以存在16位寄存器中,高位字节和低位字节自然存在高8位寄存器和低8位寄存器中
物理地址
每一个内存单元在存储空间中都有一个唯一的地址,我们把这个地址称为物理地址
CPU是通过地址总线将一个内存单元的物理地址送入存储器的,在发出之前,必须先形成。
8086是16位结构的CPU:
- 运算器一次最多可以处理16位的数据
- 寄存器最大宽度为16位
- 寄存器和运算器之间的通路为16位
8086有20位地址总线,寻址能力达到1mb(2^20B=1MB),8086CPU采用在内部用两个16位地址合成的方法给出20位地址
给出物理地址的方法
物理地址=段地址 X 16+偏移地址
- 段地址*16,即段地址向左偏移4位(2^4,相对于二进制)(16进制表示则是偏移两位)
- 相加后给出了内存单元的物理地址
偏移地址也是16位,则一个段长度最大为64kb,(2^16 B=64KB)分段仅仅是一个虚拟的概念。
段寄存器
CPU需要段地址和偏移地址来形成物理地址。8086CPU有四个段寄存器:CS,DS,SS,ES,先学习CS
CS和IP
CS和IP指示了CPU读取指令的地址,CS为代码段寄存器,IP为指令指针寄存器
可以理解为,在任意时刻,CPU将CS:IP指向的内容作为指令执行,取到指令后,IP会自动增加,指向下一条指令
修改CS和IP:不用mov用jmp
为什么不用mov?8086没有提供该功能
- jmp 段地址:偏移地址 cs=段地址,ip=偏移地址
- jmp 某一合法寄存器 :仅修改IP的值,例:jmp ax 执行后IP=ax
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 星辰微光的博客!





