32位汇编绪论.ppt

21世纪高等院校规划教材 * 是保护模式下的一种工作方式,也称为V8086模式,或者简称为V86模式。在此模式下,处理器类似于8086。寻址的地址空间是1M字节;段寄存器的内容作为段值解释;20位存储单元地址由段地址乘以16加偏移地址构成。可以运行DOS及以其为平台的软件。但V86模式毕竟是虚拟8086的一种方式,所以不完全等同于8086。当标志寄存器中的VM位为1时,处理器就处于V86模式。 一、 通用寄存器 32位通用寄存器有8个,分别是EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP,其中它们的低16位分别与8086、80286的寄存器AX、BX、CX、DX、SI、DI、BP、SP相同,可以独立使用。AX、BX、CX、DX也可分成两个8位寄存器:AH、AL、BH、BL、CH、CL、DH、DL。 第5节 32位CPU指令系统 (2)循环移位指令 ROL和ROR:实际移位的位数将根据被移位的操作数的长度取8、 16或32位的模; RCL和RCR:实际移位位数先取指令中规定的移位位数的低5位,再根据被移位的操作数的长度取9、17或32位的模。 例11-3 编程实现将AX寄存器的每一位依次重复一次,并将所得的32位数保存在EAX寄存器中。   MOV CX,16 MOV BX,AX NEXT:SHR AX,1 RCR EDX,1 SHR BX,1 RCR EDX,1 LOOP NEXT MOV EAX,EDX 第5节 32位CPU指令系统 3.双精度移位指令 SHLD-双精度左移指令 SHRD-双精度右移指令 其一般格式为: SHLD/SHRD? DEST, SRC, N  这两条指令都是具有三个操作数的指令,其中第一操作数DEST只能是一个16位/32位的寄存器或存储单元;第二操作数SRC的长度必须与第一操作数DEST的长度一致,并且只能是16位/32位通用寄存器;第三操作数N是移动的位数,它可以是CL或者是一个8位的立即数。 第5节 32位CPU指令系统 第5节 32位CPU指令系统 说明: (1)如果只移一位,当进位标志和最后的符号位不一致时溢出标志OF被置为1,否则为0。 (2)双精度移位指令的实际移位的位数取指令中规定的移位位数N的32位的低5位, 所以移位位数的变化范围是0至31。如果移位的位数是0,那么双精度移位指令就相当于空操作指令NOP。 第5节 32位CPU指令系统 双精度移位的例子: 第5节 32位CPU指令系统 四、控制转移指令 1.转移指令 (1)无条件转移指令 无条件转移指令在不同模式下不同,在实模式下,无条件转移指令JMP的功能几乎没有提高,段内偏移仍不能超过64K,不需要使用32位的段内偏移。例如: JMP EDX 该指令有效,但在实模式下EDX不能超过64K 在保护模式下,段内无条件转移指令的转移方法未变,但段间无条件转移指令的执行细节较复杂。 (2)条件转移指令 功能同前面介绍的类同,只是允许用多字节来表示转移目的地偏移与当前偏移之间的差,所以转移范围可超出 -128 ~ +127,编程时可不必考虑条件转移的范围。 第5节 32位CPU指令系统 举例:比较EBX:EAX与EDX:ECX中的两个64位带符号数,根据比较结果分别转移到GT(大于)、LS(小于)和EL(相等)处。 CMP EBX,EDX JG GT JL LS CMP EAX,ECX JL LS JE EL GT:… LS:… EL:… 第5节 32位CPU指令系统 2.循环控制指令 第5节 32位CPU指令系统 3.过程调用和返回指令 过程调用和返回指令在386中有对前面介绍指令的扩展形式,扩展的调用指令的转移目的地址偏移采用32位表示。对于扩展的段间调用指令,转移目的地址采用48位全指针形式表示,而且在把返回地址的CS压入堆栈时扩展成高16位为0的双字,这样会压入堆栈2个双字;扩展的过程返回指令要从堆栈弹出双字作为返回地址的偏移。如果是扩展的段间返回指令,执行时要从堆栈弹出包含48位返回地址全指针的2个双字。 第5节 32位CPU指令系统

文档评论(0)

1亿VIP精品文档

相关文档