汇编指令和机器码的对应表

汇编指令和机器码的对应表
汇编指令和机器码的对应表

汇编指令和机器码的对应表

汇编2010-04-20 21:07:19 阅读259 评论0 字号:大中小订阅

一、汇编速查

MOV AA,BB 将BB 放到AA 里

CALL 调用子程序(相当于BASIC 的GOSUB)

RET 与RETF 返回程序(相当于BASIC 的RETURN)

CMP XX,YY 比较XX 与YY

JZ 若相等则转移

JNZ 若不相等则转移

JB 若小于则转移

JG 若大于则转移

JMP 无条件转移

J??? (各种转移指令)

LOOP 循环直到CX为0

INT XX 类似CALL 的中断涵数

PUSH 推入栈(STACK)ESP:PUSH AX

POP 出栈ESP:POP CX

XCHG 交换ESP:XCHG AX,BX

IN、OUT 与PORT有关的IN/OUT

XLAT 查表

LEA 段内偏移量。ESP:LEA AX,AREA1=MOV AX,OFFSET AREA1 LAHF、SAHF与棋标有关的寄存器AH

PUSHF、POPF将棋标入/出栈

ADD ESP ADD AX,CX (AX=AX+CX)

ADC 加入棋标C的ADD

INC ESP INC AX(AX=AX+1)

AAA 加法校正

SUB、SBB 减法

DEC ESP:DEC AX(AX=AX-1)

NEG 去补,

MUL、IMUL 乘

DIV、IDIV 除

SHR、SAR、SHL 算术、逻辑位移R=RIGHT L=LEFT

OR、XOR、AND 逻辑运算ESP :XOR AX,AX(AX=0)

直接标志转移

指令格式机器码测试条件如...则转移

JC 72 C=1 有进位

JNS 79 S=0 正号

JNC 73 C=0 无进位

JO 70 O=1 有溢出

JZ/JE 74 Z=1 零/等于

JNO 71 O=0 无溢出

JNZ/JNE 75 Z=0 不为零/不等于

JP/JPE 7A P=1 奇偶位为偶

JS 78 S=1 负号

JNP/IPO 7B P=0 奇偶位为奇

间接标志转移

指令格式机器码测试格式如...则转移

JA/JNBE(比较无符号数) 77 C或Z=0 > 高于/不低于或等于JAE/JNB(比较无符号数) 73 C=0 >= 高于或等于/不低于JB/JNAE(比较无符号数) 72 C=1 < 低于/不高于或等于JBE/JNA(比较无符号数) 76 C或Z=1 <= 低于或等于/不高于JG/JNLE(比较带符号数) 7F (S异或O)或Z=0 > 大于/不小于或等于JGE/JNL(比较带符号数) 7D S异或O=0 >= 大于或等于/不小于JL/JNGE(比较带符号数) 7C S异或O=1 < 小于/不大于或等于JLE/JNG(比较带符号数) 7E (S异或O)或Z=1 <= 小于或等于/不大于

无条件转移指令JMP

指令格式执行操作机器码说明

段内直接短转移Jmp short (IP)←(IP)+8位位移量EB 转移范围-128到+127字

段内直接近转移Jmp near (IP)←(IP)+16位位移量E9 转移到段内的任一位置段内间接转移Jmp word (IP)←(有效地址EA) FF

段间直接(远)转移Jmp far (IP)←(偏移地址)

(CS)←(段地址) EA

段间间接转移Jmp dword (IP)←(EA)

(CS)←(EA+2)

**********************************************************************************************************************

**********

https://www.360docs.net/doc/6e949705.html,/article/2/2300.shtm

汇编指令与机器码的相互转换(转载)

查看上面的网址。

机器语言我们只要重点理解一下几个概念:

1. 机器语言指令有操作码(OP)和地址码两部分组成

|_____________OP_______________|__d__|__w__|

|_____________OP_______________|__s__|__w__| MOV AX,1234H 对应的机器码为:B83412

解法:判断-> 这个是8086汇编16位汇编指令格式,并且是立即寻址方式

查表-> 打开opcodes.html文件,找到标题为"Main Instructions ",单击"M "字母,然后对应查看"MOV Reg,Imm "格式的"OpCode "项为:1011wrrr

再判断-> 由于寄存器是AX, 立即数是1234H,明显是"对字操作",所以w=1

在查看本文章上面的"表1 ",对应的查到rrr的值为000

组合结果-> w=1

rrr=000

1011wrrr=1011 1000B -> B8H

根据" 3.指令格式简介" -> B8H + |立即数(低位在前高位在后)|=B83412H

PS: "+ " 符号不为"加号"

好了,已经解完第一题了,机器码为B83412H

———————————————————————————————————————

指令4 -> MOV AX,BX 对应的机器码为:8BC3

解法:判断-> 这个是8086汇编16位汇编指令格式,并且是寄存器寻址方式

查表-> 打开opcodes.html文件,找到标题为"Main Instructions ",单击"M

"字母,然后对应查看"MOV Reg,Reg "格式的"OpCode "项为:1000101woorrrmmm 再判断-> 由于寄存器是AX, BX 明显是"对字操作",所以w=1

在查看本文章上面的"表4 ",对应查到oo=11 因为是寄存器寻址方式

在查看本文章上面的"表1 ",对应查到rrr的值为000 ,因为当两个操

作数都是寄存器,那么一般要以目的操作数为准

在查看本文章上面的"表3 ", 对应查到mmm的值为011 ,因为当两个操作数都是寄存器,那么一般

要以源操作数为准

组合结果-> w=1

oo=11

rrr=000

mmm=011

1000101woorrrmmm=1000 1011 1100 0011B -> 8BC3H

好了,已经解完第二题了,机器码为8BC3H

———————————————————————————————————————

呵呵,不错吧,很简单吧,有了80X86 OPCODES 查询表一切都是那么简单,如果还有什么问题,

大家都来这里提问!

剩下的:

指令2 -> MOV EBX,0 对应的机器码为:66BB00000000

指令3 -> MOV CL,55H 对应的机器码为: B155

大家来练练手,注意指令2 需要用到32位指令格式,请查阅相关的80x86汇编语言书籍的机器语言部

分,应该有解释的。

相关主题
相关文档
最新文档