10.1 X86指令集简介电子课件_第1页
10.1 X86指令集简介电子课件_第2页
10.1 X86指令集简介电子课件_第3页
10.1 X86指令集简介电子课件_第4页
10.1 X86指令集简介电子课件_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

X86指令集简介X86指令系统PC机(台式机,笔记本),CPU使用的都是X86指令系统X86指令集,1978年由美国Intel公司为其CPU(8086)专门开发的指令集命名:早期以80X86这样的数字格式来命名处理器Intel8086、80386以及80486等奔腾系列、赛扬系列、酷睿系列CPUCISCX86指令集属于CISC(ComplexInstructionSetComputer,复杂指令集计算机)指令集与RISC-V指令集相比,其操作码、数据类型、寻址模式、指令格式等,都更加复杂数千条指令寄存器32位的通用寄存器仅有8个EAX(Accumulator,累加寄存器,用于算术运算)ECX(Counter,计数寄存器)EDX(Data,数据寄存器)EBX(Base,基址寄存器)ESP(StackPointer,栈指针寄存器)EBP(BasePointer,基址指针寄存器)ESI(SourceIndex,源索引寄存器)EDI(DestinationIndex,目标索引寄存器)“E”代表扩展(Extended)相对于16位的寄存器扩展为32位每个通用寄存器有其独特的用途,从命名即可获知特殊寄存器EIP(InstructionPointer,指令指针寄存器,即PC)EFLAGS(标志寄存器)指令格式前缀(Prefix):1个字节操作码(Opcode):1,2或3个字节寄存器/内存寻址模式(ModR/M):1个字节缩放索引基址(SIB,ScaleIndexBase):1个字节偏移量(Displacement):1,2或4个字节立即数(Immediate):1,2或4个字节PrefixOpcodeModR/MSIBDisplacementImmediate前缀操作码寄存器/内存寻址模式缩放索引基址偏移量立即数可变长指令格式只有操作码是必需的,其他字段均为可选字段指令编码从1个字节,到十几个字节不等常用指令数据传送指令MOV,PUSH,POP,LEAVE地址传送指令LEA算术/逻辑运算指令ADD,CMP流程控制指令JMP,JLE,CALL,RETMOV指令使用最频繁的指令寄存器和寄存器之间数据传送寄存器和内存之间数据传送还允许将立即数传送至寄存器或内存中汇编格式

mov Reg/Mem,Reg/Mem/Imm2操作数指令,目标操作数在前,源操作数在后,而且两个操作数之一可以是内存中的数示例

mov eax,[esp+60] 源操作数是内存中的数寻址模式:“寄存器相对”栈指针寄存器ESP中的值+偏移量60,计算出内存地址将此内存地址中的数据加载到EAX寄存器中“[]”,表示操作数是内存中的数在中括号“[]”前加WORD/DWORD/BYTEPTR为了标识内存中的数的位数,16位/32位/8位PUSH指令将一个寄存器中的值压栈例如:

push ebp ;将EBP寄存器中的值压栈该指令可分解为:

sub esp,4 ;ESP

ESP-4mov [esp],ebp ;M[ESP]

EBPPOP指令将栈顶的数据弹出,加载到一个寄存器中例如:

pop eax ;将栈顶的值弹出,加载到EAX寄存器中该指令可分解为:

mov eax,[esp] ;EAX

M[ESP]add esp,4 ;ESP

ESP+4LEAVE指令从函数返回前的栈帧弹出作用相当于:

mov esp,ebp ;ESP

EBPpop ebp ;EBP

M[ESP],ESP

ESP+4LEA指令LoadEffectiveAddress,加载有效地址指令把一个内存地址加载到寄存器中汇编格式

LEA Reg,Mem例如:

lea eax,[esp+20] ;EAX

ESP+20注意,该指令与MOV指令的区别该指令中的中括号“[]”,代表内存地址,而不是该内存地址中的数据算术/逻辑运算指令2操作数指令第一个操作数既是目标操作数,又是源操作数第二个操作数是源操作数两个操作数之一可以是内存中的数ADD指令汇编格式如下:

add Reg/Mem,Reg/Mem/Imm可以做寄存器与寄存器,寄存器与立即数的运算,还可以与内存中的数做运算CMP指令比较目标操作数和源操作数的值,根据比较结果,对标志寄存器EFLAGS的相应位进行设置例如:

cmp edx,eax ;比较EDX和EAX中的值的大小计算“EDX-EAX”的减法结果;在不溢出的情况下,设置EFLAGS的OF(溢出标志)位为0如果结果小于零,则设置SF(符号标志)位为1如果大于零,设置SF位为0如果等于零,设置ZF(零标志)位为1注意:算术/逻辑运算指令均根据运算结果,设置EFLAGS的相应位JMP指令无条件跳转指令汇编格式:

jmpLabel将EIP的值设置为Label所标识的指令地址,即跳转至Label所标识的指令去执行条件分支指令带条件的跳转指令(JG,JGE,JL,JLE,JE,JNE等)根据EFLAGS中的标志位,设置EIP的值,完成相应的跳转汇编格式如下:

jX LabelJLE指令

例如:

jle L3JLE指令表示小于等于跳转如果EFLAGS中SF位与OF位的值不同,或者ZF位为1,就跳转至标记L3所标识的指令去执行CALL调用子例程汇编格式

c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论