初识汇编语言(2)
一,寄存器
1.8086CPU有14个寄存器,其中AX,BX,CX,DX(用来储存数据),CS,IP(用来储存将要执行命令地址),SI,DI,SP,BP(被称为基址和变址寄存器,后面会学到),SS,DS,ES(段寄存器),PSW。
2.其中AX,BX,CX,DX(每个16位的寄存器)都可以分为两个8位的寄存器,例如,AX分为AH,AL两个;存放16位数字时,AH存放高8位,AL存放低8位,AH,AL也可以分别作为储存8位二进制的寄存器。
3,简单的几条命令,move ax,18;
move ax,bx;
add ax,18;
add ax,bx;
其中move,add的两个操作对象都必须位数一致,不能用一下指令:move al,100H(H代表这个数字为16进制);move al,ax; moce ax,al;而且当这4个寄存器在发现需要进位时,例如:
move ax,ffffH;
move bx,1111H;
add ax,bx;此时AX中的值为:1110H,进的一位被溢出舍弃了;
4*CS,IP作用
(1)当CPU的地址总线与内部处理数据不一样时(地址总线>CPU一次性处理的数据的能力),例,8086CPU为16位,但它的地址总线却有20位,这时就需要用两个16位数据来标记20位的物理地址。其中CS作为一个段落,将20位物理地址分成两部分,在使用地址加法器:CS(段地址)X16+IP(偏移地址)=物理地址,例:访问1526CH,CS=1526H,IP=000CH.注意一个段的起始位置必须是16位的倍数。
(2).CPU将CS,IP指向的内容当成指令执行。并且每次在执行完成后,IP将自动会加上指令的长度(字节为单位),再在地址加法器中,使用CS(段地址)X16+IP(偏移地址)=物理地址,依次执行这就完成了指令的连续执行。
5 jmp指令改变CS,IP的值
jmp 段地址:偏移地址 。