第二章 寄存器
典型的CPU由运算器、控制器、寄存器等器件组成,对汇编而言,CPU中的主要部件是寄存器。对于8086CPU,有14个寄存器,分别是AX、BX、CX、DX、SI、DI、SP、IP、CS、SS、DS、ES、PSW。
1、通用寄存器
8086CPU的所有寄存器通常都是16位的,存放两个字节,其中AX、BX、CX、DX存放一般性数据,叫做通用寄存器。分别都可被拆为两个8位独立使用的寄存器,AX:AH和AL;BX:BH和BL等。AH等存放高八位,AL等存放低八位;

2、字在寄存器中的存储
16进制的一位相当于2进制的4位,二进制的0100111000100000转为16进制就是4(0100)E(1110),2(0010),0(0000),其0100 1110(4E)寄存在AH中,0010 0000(20H)寄存在AL中,以末尾用H来代表16进制,B代表2进制。
3.几条汇编指令
汇编指令不区分大小写,当汇编数据溢出的时候,会自动把高位砍掉,AL的数据是C5H,add al 93H就是158H,但是8位的空间只能放2个16进制的数据,所以会变成58H。指令的操作对象的位数应当是一样的,move ax,bl 就是错的。
几种指令:move ax,18 :将18送入AX中;add ax,8:AX=AX+8; add ax,bx:AX=AX+BX;
4、8086CPU给出物理地址方法
8086CPU有20条地址总线,但是其CPU本身是16位结构,在内部只能一次性传出16位地址达不到2的20次方。所以在内部采用两个16位地址合成一个20位的物理地址。
物理地址=段地址*16(相当将段地址左移一位)+偏移地址;本质含义是:CPU在访问内存的时候,用一个基础地址(段地址*16)和一个相对基础地址的偏移地址相加,即“基础地址+偏移地址=物理地址”;
5、段的概念和段寄存器
内存不会分段,段的划分来自CPU,CPU采用物理地址=基础地址+偏移地址,来给出内存单元的物理地址,我们可以采用假想的分段的方式来管理内存。段地址在段寄存器中释放,8086CPU有4个寄存器:CS、DS、SS、ES。
6、CS和IP
CS和IP是最重要的两个寄存器,段地址放在寄存器CS中,偏移地址放在寄存器IP中。8086CPU工作流程:1 、cs:ip指向读取指令到指令缓冲区 2 、ip+指令长度,跳到下个指令 3 、执行缓冲区的指令,在跳到步骤1指令和内容在内存中无区别,但是用CS:IP指向的内存单元就是指令。
修改CS、IP的指令:mov指令不能设置CS,IP的值。所以j用jmp指令,jmp段地址:偏移地址,例如jmp 2AE3:3 执行后,cs=2AE3H,IP=0003H,CPU从2AE33H处读取指令。jmp相当于mov IP,ax。

浙公网安备 33010602011771号