资源描述:
《8086和89386寄存器的区别》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、8086的通用寄存器有AX,BX,CX,DX,SI,DI,BP,SP80386的通用寄存器则在相应的寄存上把字长又增加了16位即变成相应的EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESPAX为16位,EAX就为32位,但在80386中也可以访问AX即EAX的低16位其他的同理80386还增加了其他的寄存器,一时是说不完的,你慢慢去学吧AX称为累加器(Accumulator),是CPU中使用最多、功能最强的寄存器。用累加器进行的操作可能需要更少时间。BX称为基地址寄存器(BaseRegister),CX称为计数寄存器(
2、CountRegister),DX称为数据寄存器(DataRegister)。赞同0
3、评论检举
4、2009-5-2821:05文刀舍予
5、七级寄存器的不同主要体现在指令上比如8086里的mul和div指令,就是乘法和除法,哪个寄存器是干什么的都是定义好的还有loop指令,是根据CX来判断是否循环的最重要的就是有的寄存器可以用来寻址而有的不能比如ax不能用于寻址,就是说这样的指令是错误的:movbx,[ax]而bx可以用于寻址,这条指令就是正确的:movax,[bx]这些说的只是在8086里面,32位的CPU的eax,ebx,ecx,e
6、dx都能用于寻址(这四个我试验了,其他的没试验)在8086里面,16位通用寄存器为ax,bx,cx,dx,在80386里,寄存器为32位,对应8086,即为eax,ebx,ecx,edxdwordptrfs:[0]表示fs*16+0处的一个双字另外,divebx即(edx,eax)/ebx这里显然应为movedx,0,或者直接用CDQ对cdx进行扩展,CDQ双字扩展.(把EAX中的字的符号扩展到EDX中去)整个代码的意思就是:先将00501a32入栈,再将fs*16+0处的一个双字入栈,再做除法(edx,eax)/ebx附:关于寄
7、存器:计算机寄存器分类简介:32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI)2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP)1个标志寄存器(EFlags)1、数据寄存器数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。对低16位数据的存取,不会影响高16位的数据。这些低16位寄存器分别命名为
8、:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。寄存器EAX通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。可用于乘、除、输入/输出等操作,使用频率很高;寄存器EBX称为基地址寄存器(BaseRegister)。它可作为存储器指针来使用;寄存器ECX称为计数寄
9、存器(CountRegister)。在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数;寄存器EDX称为数据寄存器(DataRegister)。在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址,在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果,而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。2、变址寄存器3
10、2位CPU有2个32位通用寄存器ESI和EDI。其低16位对应先前CPU中的SI和DI,对低16位数据的存取,不影响高16位的数据。寄存器ESI、EDI、SI和DI称为变址寄存器(IndexRegister),它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。变址寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能。3、指针寄存器其
11、低16位对应先前CPU中的BP和SP,对低16位数据的存取,不影响高16位的数据。32位CPU有2个32位通用寄存器EBP和ESP。它们主要用于访问堆栈内的存储单元,并且规定:EBP为基指针(BasePointer)寄存器,用它可直接存取堆栈中的数