2.1 通用寄存器
8086CPU所有寄存器都是16位的, 可以放两个字节AX, BX, CX, DX四个寄存器用来存放一般数据, 被称为通用寄存器
8086上一代寄存器是8位的,为了保证兼容, 四个寄存器可以分为两个独立使用的8位寄存器
2.2 字在寄存器中的存储
可以看做是一个字20000,也可以看做是两个字节,分别为78和32
关于数制
2.3 几条汇编指令
溢出例子
结果为1044C, 但是16位寄存器无法保留这么多数据, ax中的数据为044C
异常
把16位数据放入8位寄存器
2.4 物理地址
每个内存单元, 都有唯一物理地址, 不同cpu有不同的物理地址分配方式
2.5 16位CPU结构
8086是16位机
一次性只能处理, 传输, 暂时存储16位的数据和地址
- 一次性最多处理16位的数据
- 寄存器最大宽度是16位
-
2.6 8086CPU给出物理地址的方法
8086有20位地址总线,cpu是16位, 需要通过两个16位合成20位物理地址
地址加法器采用物理地址=段地址X16+偏移地址
2.7 段地址X16+偏移地址=物理地址的本质
2.8 段的概念
并不是内存被分为段, 而是CPU对内存的一种划分方式,通过段地址左移4位,配合偏移量来实现20根地址线的寻址
2.9 段寄存器
为访问内存提供段地址和偏移地址
8086有四个段寄存器 CS DS ES SS2.10 CS和IP
CS为段寄存器, IP为指令指针寄存器
取指令, IP=IP+指令长度,执行指令
重复这个过程
2.11 修改CS, IP的指令
通用寄存器中用mov设置寄存器的值, 也叫传送指令, 但是不能操作CS,IP的值
junp 段地址:偏移地址
- jump 合法寄存器
2.12 代码段
下面长度为10字节的指令存放于123B~123BA的一组内存中, 就可以认为是一个代码段
cpu不会自己安排代码执行, 需要通过CS:IP指向的内存单元执行指令
2.13 bug的命令
- r->显示寄存器
- r:寄存器->修改寄存器的内容
- d->查看内存
- d:段地址:偏移地址->查看某位置
- d:段地址:偏移地址 第二个偏移地址->查看区间数据
- e 段地址:偏移地址 数据 数据 数据-> 写内存