1.机器语言指令有操作码(OP)和地址码两部分组成
|_____________OP_______________|__d__|__w__| 财软联盟 fs119.net
|_____________OP_______________|__s__|__w__|<--此格式用于立即寻址方式
财管家 园 fs119.net
在多数操作码中,常使用某些位来指示某些信息:
如图上结构里的:w=1时对字来操作
w=0时对字节来操作 财管家.园.fs119.net
d值在双操作数指令中才有效
当d=1时有且只有一个寄存器用于目的操作数
d=0时有且只有一个寄存器用于源操作数
财管家园 fs119.net
s=1时立即数为8位,但要求扩展成16位数
s=0时当指令作字节操作/有16位立即数 财软 联盟 fs119.net
由于汇编的指令格式很多,这里我只作一些基本情况介绍,必要时读者可以下载/查阅80x86汇编小站http://www.x86asm.com提供的OPCODES手册来查阅。
2.寻址方式的机器语言表示: 财 管家园 fs119.net
|mod|reg|r/m|
|_____|_____|_____|_____|_____|_____|_____|
财 管家园 fs119.net
reg表示寄存器方式,在不包括立即数的双操作数指令的情况下,规定必须有一个操作数在寄存器中,该寄存器由reg字段指定,并与操作码字节中的w位相组合确定的寄存器
mod字段与r/m(register/memory)字段结合在一起确定另一个操作数的寻址方式现在你们下载了80x86汇编小站(http://www.x86asm.com)提供的OPCODES手册了吗?
下载好了,请解压后打开里面的:opcodes.html文件,然后熟悉里面的表格:
现在熟悉简单的:
______________________________________________________________________________
表1<PS:部分资料>rrr:W=0:W=1:reg32
财管家 园 fs119.net
000:AL:AX:EAX 财管 家园 fs119.net
001:CL:CX:ECX 财软联,盟,fs119.net
010:DL:DX:EDX
财管,家园,fs119.net
011:BL:BX:EBX 财软联盟.fs119.net
100:AH:SP:ESP 财软 联盟 fs119.net
101:CH:BP:EBP
110:DH:SI:ESI 财管 家园 fs119.net
111:BH:DI:EDI
______________________________________________________________________________
表2<PS:部分资料>rrr:IndexRegister
000:EAX
财管家,园,fs119.net
001:ECX 财软联盟,fs119.net
010:EDX
011:EBX
财软.联盟.fs119.net
100:NoIndex
财软联.盟.fs119.net
101:EBP 财管.家园.fs119.net
110:ESI 财管家 园 fs119.net
111:EDI
______________________________________________________________________________
表3<PS:部分资料>mmm:Function11
w=1
000:DS:[BXSI] 财管家.园.fs119.net
001:DS:[BXDI]
财.管家园.fs119.net
010:SS:[BPSI] 财 管家园 fs119.net
011:SS:[BPDI]BX 财.管家园.fs119.net
100:DS:[SI]
财管家.园.fs119.net
101:DS:[DI] 财,管家园,fs119.net
110:SS:[BP]
111:DS:[BX]
______________________________________________________________________________
表4<PS:部分资料>
oo:Function
财管家.园.fs119.net
00:Ifmmm=110,thenadisplacementfollowstheoperation;otherwise,nodisplacementisused 财软联盟 fs119.net
01:An8-bitsigneddisplacementfollowstheopcode
10:A16-bitsigneddisplacementfollowstheopcode 财管家 园 fs119.net
11:mmmspecifiesaregister,insteadofanaddressingmode
______________________________________________________________________________
上面的表,你都看明白了吗?现在我就教你们如何利用这样的表格来把汇编指令翻译机器码 财管家园,fs119.net
财软,联盟,fs119.net
财软联 盟 fs119.net
财,软联盟,fs119.net
3.指令格式简介 财 管家园 fs119.net
8086所用的16位指令格式:
财软联盟,fs119.net
_____________________________________
|操作码||mod-reg-r/m||位移量||立即数|
1~2字节0~1字节0~2字节0~2字节
财管.家园.fs119.net
OK!以上就是基本知识,下面我们来实践吧: 财管家 园 fs119.net
———————————————————————————————————————
问题: 财管家 园 fs119.net
MOVAX,1234H对应的机器码为:B83412 财管家,园,fs119.net
MOVEBX,0对应的机器码为:66BB00000000
MOVCL,55H对应的机器码为:B155
MOVAX,BX对应的机器码为:8BC3
财软联盟.fs119.net
我在问一下,机器码的数据格式是什么?好像是机器指令操作数(高位存放在地址高位,低位存放在地址低位),但是前面MOVAX,怎么就变成了B8,弄不明白,请指教。
PS:上面的题目是一个网友问的,现在我来实践一遍给你们看。
———————————————————————————————————————
指令1->MOVAX,1234H对应的机器码为:B83412
解法:判断->这个是8086汇编16位汇编指令格式,并且是立即寻址方式
查表->打开opcodes.html文件,找到标题为“MainInstructions”,单击“M”字母,然后对应查看“MOVReg,Imm”格式的“OpCode”项为:1011wrrr
再判断->由于寄存器是AX,立即数是1234H,明显是“对字操作”,所以w=1
在查看本文章上面的“表1”,对应的查到rrr的值为000
组合结果->w=1
rrr=000
1011wrrr=10111000B->B8H
根据“3.指令格式简介”->B8H|立即数(低位在前高位在后)|=B83412H
PS:""符号不为“加号”
财.管家园.fs119.net
好了,已经解完第一题了,机器码为B83412H
财软联.盟.fs119.net
——————————————————————————————————————— 财管.家园.fs119.net
指令4->MOVAX,BX对应的机器码为:8BC3 财管家园.fs119.net
解法:判断->这个是8086汇编16位汇编指令格式,并且是寄存器寻址方式
查表->打开opcodes.html文件,找到标题为“MainInstructions”,单击“M 财管家园.fs119.net
”字母,然后对应查看“MOVReg,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=1000101111000011B->8BC3H
财软,联盟,fs119.net
好了,已经解完第二题了,机器码为8BC3H
——————————————————————————————————————— 财,软联盟,fs119.net
呵呵,不错吧,很简单吧,有了80X86OPCODES查询表一切都是那么简单,如果还有什么问题,大家都来这里提问! 财 软联盟 fs119.net
剩下的: 财管家园 fs119.net
指令2->MOVEBX,0对应的机器码为:66BB00000000 财.软联盟.fs119.net
指令3->MOVCL,55H对应的机器码为:B155 财.软联盟.fs119.net
大家来练练手,注意指令2需要用到32位指令格式,请查阅相关的80x86汇编语言书籍的机器语言部分,应该有解释的。 财软联.盟.fs119.net
指令2的解法,请大家等待,或者大家研究一下,把解法贴出来,给大家参考哦! 财软联盟.fs119.net
财软联盟 fs119.net财软联.盟.fs119.net
Google.cn搜索相关文章:
谷歌中搜索全球网 汇编指令与机器码的相互转换
百度中搜索 汇编指令与机器码的相互转换
谷歌中搜索www.fs119.net 汇编指令与机器码的相互转换
下一篇:汇编与C语言配合