第二章的学习告一段落,这一章也算是开始正式接触一些汇编的基本指令,主要还是汇编中对寄存器的应用,对此也略有心得,大体如下:
一、通用寄存器
寄存器AX,BX,CX,DX,通常用于存放一般性数据,称为通用寄存器。每个寄存器均为16位。
这些寄存器均可拆分成两个8位寄存器单独使用,例如:AX可拆为AH和AL;
二、汇编指令:mov,add
在mov 和 add 指令中, 两个操作对象的位数应一致!
并且当运算时超出寄存器表示的位数时会自动舍去;
三、内存单元的物理地址
8086内部的寄存器都是16位的,而外部地址总线宽度为20位,所以在8086内部用两个16位地址通过计算合成得到一个20位的物理地址。即 段地址x16+偏移地址=物理地址;
其中:1. 段地址:偏移地址 又称 逻辑地址;
2. 段地址x16构成短的起始物理地址;
四、CS和IP
CS:代码段段寄存器,用于存放代码段的段地址;
IP:指令指针寄存器,用于存放CPU将要读取的指令在代码段中的偏移地址;
CS:IP 对应的物理地址存放的是CPU将要读取的指令。
在8086CPU加电启动或复位后,CS=FFFFH,IP=0000H,所以CPU从内存FFFF0H处读取第一条指令;
五、修改CS和IP的指令jmp
1.同时修改CS、IP的内容: jmp 段地址:偏移地址;
用指令中给出的段地址修改CS,偏移地址修改IP;
2.只修改IP的内容: jmp 某一合法寄存器
用指令中寄存器的值修改IP;
此外:在读取命令之后的会立刻修改IP,若命令为jmp 则会再次修改IP!
并且 据观察,当读取的是mov,add等指令时,IP会增3;但当所读指令为jmp+ 某一寄存器时 IP会增5;
额...... 这一章的内容感觉上应该大差不差了。先到这里吧 ,下次继续。。。。
原文:http://www.cnblogs.com/scq2333/p/7653577.html