一、通用寄存器:AX、BX、CX和DX。(均为16位,可存放2个字节)。都可以分为两个独立的8位寄存器。(eg:AH和AL,其中AL为低8位,AH为高8位。)
二、字在寄存器中的存储
1字节(byte)=8bit,1个字=2字节=高位字节+地位字节,分别对应存在高位寄存器和低位寄存器中。
三、汇编指令
注意:在写一条汇编指令或一个寄存器名称时不用区分大小写。
引入:mov和add
溢出问题:AH和AL是两个不相关到的寄存器,当操作AL中有进位时,AL不会向AH进位。
(eg: mov ax,00C5H
add al,93H
执行前al中的数据为C5H,相加后得到158H,但是al是8位寄存器,只能放两位16进制的数据,所以最高位的1丢失。ax中的数据为:0058H。这里的丢失指的是进位值不能在8位寄存器中保存,但是并不是CPU真的丢弃这个进位值。)
进行数据的传送或运输时,两个操作对象的位数需要相同。
(eg:错误指令:mov al,20000 8位寄存器最大可以存放的值为255的数据)
四、物理地址
所有的内存单元构成的存储空间是一个一维的线性空间,每个内存空间在这个空间中都有的惟一的地址,成为物理地址。
五、16位结构的CPU
结构特性:
1、运算器一次最多可以处理16位的数据。
2、寄存器的最大宽度为16位。
3、寄存器和运算器之间的通路为16位。
六、8086CPU给出物理地址的方法
读写内存步骤:
1、CPU中的相关部件提供两个16位的地址,一个称为段地址,另一个称为偏移地址。
2、段地址和偏移地址通过内部总线送入一个称为地址加法器的部件。
3、地址加法器将两个16位地址合成为一个20位的物理地址。
(物理地址=段地址*16+偏移地址)
4、地址加法器将通过内部总线将20位物理地址送入输入输出控制电路。
5、输入输出控制电路将20位物理地址送上地址总线。
6、20位物理地址被地址总线传送到存储器。
七、“段地址*16+偏移地址=物理地址”的本质含义
类比“基础地址+偏移地址=物理地址”
八、段的概念
段地址*16必然是16的倍数,所以一个段的起始地址也一定是16的倍数;偏移地址为16位,16位地址的寻址能力为64KB,所以一个段的长度最大为64KB
同一个物理地址可以被CPU用不同的段地址和偏移地址形成。
给定段地址的情况下,仅用偏移地址来寻址,最多可以寻64KB个内存单元。
九、段寄存器
8086CPU有四个段寄存器:CS、DS、SS和ES。
十、CS和IP
CS为代码段寄存器,IP为指令指针寄存器,任意时刻CPU将CS:IP指向的内容当作指令执行。
工作过程:
1、从CS:IP指向的内存单位读取指令,读取的指令进入指令缓冲器;
2、IP=IP+所读取的指令的长度,从而指向下一条指令;
3、执行指令。转到步骤1,重复改过程。
CS或IP值变化后,执行控制器执行上一条指令???
十一、修改CS、IP的指令
jmp指令:运用形式:jmp 段地址:偏移地址(CS:IP)
jmp 某一合法寄存器 jmp ax,=mov IP ,ax(仅仅修改IP的值)
十二、引入概念代码段。(略)
本章主讲了寄存器的功能,以及数据在其中的存放。引入了mov,add和jmp的作用和使用方法、物理地址,段地址和偏移地址的关系和8086CPU工作的本质过程。注意计算的细节,以及代码段中jmp改变CS与IP的值的时间。
原文地址:https://www.cnblogs.com/Yangruzhang/p/9729463.html