汇编语言程序设计第二章小结

喜你入骨 提交于 2020-01-02 06:17:19

一、通用寄存器: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的值的时间。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!