初识汇编语言(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 段地址:偏移地址     。

 

posted @ 2018-10-14 21:59  哈曼  阅读(264)  评论(0编辑  收藏  举报