汇编指令和机械码的对应表
2021-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)
********************************************************************************************************************************
汇编指令与机器码的相互转换(转载)
查看上面的网址。
机器语言我们只要重点理解一下几个概念:
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汇编语言书籍的机器语言局部,应该有解释的。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论