第二章 寄存器 总结
一 什么是寄存器
寄存器是cpu的主要部件,程序员通过改变各种寄存器中的内容来实现对cpu的控制。
二 通用寄存器
1,8086cpu中,寄存器AX,BX,CX,DX通常存放一般性数据,称通用寄存器,每个寄存器均为16位,可以存放两个字节。
2,寄存器拆分,AX可分为AH,AL,BX可分为BH,BL,CX可分为CH,CL,DX可分为DH,DL;
三 字在寄存器中的存储
字节(Byte)和字(Word).一个字节由8给bit组成,一个字由两个字节组成,可存于一个16位寄存器中,字的高八位存于通用寄存器的高八位寄存器,字的低八位可存于通用寄存器的低八位寄存器。
四 几条汇编指令
举例
mov ax,18 ;将18送入寄存器AX AX=18
mov ah,78 ;将78送入寄存器AH AH=78
add ax,8 ;将寄存器AX中的数值加上8 AX=AX+8
mov ax,bx ;将寄存器BX中的数据送入寄存器AX AX=BX
add ax,bx ;将AX和BX中的数值相加,结果存在AX中 AX=AX+BX
写一条汇编指令或一个寄存器的名称时不区分大小写 如bx和BX含义相同。
五 物理地址
8086在内部用2个16位地址通过计算合成得到20位的物理计算地址。
由cpu中的地址加法器实现:
地址加法器:物理地址=段地址*16+偏移地址
六 CS和IP
1 CS和IP是8086CPU中最为关键的寄存器,它们指示了CPU当前要读取指令的地址。CS为代码段寄存器,IP为指令指针寄存器。
2 CS:IP对应的物理地址存放的是cpu将要读取的指令,(CS)*16+IP=指令的物理地址。
3 在CPU中,程序员能够用指令读写的部件只有寄存器,程序员可以通过改变寄存器中的内容实现对CPU的控制。CPU从何处执行指令是由CS和IP中的内容决定的,程序员可以通过改变CS,IP中的内容来控制CPU执行目标指令。
但是,mov指令不能用于改变CS IP的值 我们可以使用jmp指令来修改CS IP的指令
若同时修改 CS IP的内容 可以用 jmp 段地址:偏移地址 的指令完成。
jmp 2AE3:3 执行后 CS=2AE3,IP=0003H CPU将从2AE33H处读取指令。
如果只是想改变IP中的内容,可以用形如:“jmp 某一合法寄存器”的指令来完成。
jmp ax,相当于mov IP ax。
4.所以,要让CPU执行我们放在代码段中的指令,必须要将CS和IP指向第一条指令的首地址。