汇编语言第二部分总结
寄存器:
- 数据寄存器 ax bx cx dx 其中bx也可以作为地址偏移寄存器
- 地址寄存器 段地址寄存器 偏移地址寄存器
- 标志位寄存器(组成原理里面说过)
ax bx cx dx 被称为通用寄存器
四个寄存器都可以分割为两个八位寄存器
这样实现的目的:
便于一直,且CPU最处理单元为8bit,充分利用资源
翻译时自动补全位数,保证寄存器和数据间的位数一致性。解释器通过检测寄存器的位数来判断数据补全到几位
mov 移动指令
add 运算指令, 计算溢出时会将溢出位存放的一个地方(目前未知)
寄存器之间相互独立:al溢出不会存放到ah中
段地址寄存器 : 偏移地址寄存器 组合规则
ds sp 段地址 * 16 + 偏移地址 = 物理地址
es bp 原因:20位物理地址线 和 16位CPU 处理的不合理设计
ss si
cs di
ip
bx
CPU 如何区分 指令和数据 :
8086 CPU 在任意时刻,将CS,IP所指向的内容当作指令
指令有长度,每一次都会在完成读取存放到指令缓存器中后, cs:ip 会指向cs:ip+指令长度(十六进制)
修改cs,ip:
jmp
call
call 将 改变的IP保存了起来 执行跳转
那么保存到哪了呢?
保存在内存中
数据存在哪,内存存在哪?
程序员如何操作寄存器访问内存中的数据 和 指令?
存储器访问内存(下一章内容)
思维导图:
大道五十,天衍四九,人遁其一!