资源描述:
《汇编指令与机器码的相互转换》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、汇编指令与机器码的相互转换机器语言我们只要重点理解一下几个概念:1.机器语言指令有操作码(OP)和地址码两部分组成
2、_OP_
3、__d__
4、__w__
5、
6、_OP_
7、__s__
8、__w__
9、--此格式用于立即寻址方式在多数操作码中,常使用某些位来指示某些信息:如图上结构里的:w=1时对字来操作w=0时对字节来操作d值在双操作数指令中才有效当d=1时有且只有一个寄存器用于目的操作数d=0时有且只有一个寄存器用于源操作数s=1时立即数为8位,但要求扩展成16位数s=0时当指令作字节操作/有16位立即数由于汇编的指令格式很多,这里我只作一些基本情况介绍,必要时读者可以下载
10、/查阅80x86汇编小站http://www.x86asm.com提供的OPCODES手册来查阅。2.寻址方式的机器语言表示:
11、mod
12、reg
13、r/m
14、
15、_
16、_
17、_
18、_
19、_
20、_
21、_
22、reg表示寄存器方式,在不包括立即数的双操作数指令的情况下,规定必须有一个操作数在寄存器中,该寄存器由reg字段指定,并与操作码字节中的w位相组合确定的寄存器mod字段与r/m(register/memory)字段结合在一起确定另一个操作数的寻址方式现在你们下载了80x86汇编小站(http://www.x86asm.com)提供的OPCODES手册了吗?下载好了,请解压后打开里面的
23、:opcodes.html文件,然后熟悉里面的表格:现在熟悉简单的:_表1PS:部分资料rrr:W=0:W=1:reg32000:AL:AX:EAX001:CL:CX:ECX010:DL:DX:EDX011:BL:BX:EBX100:AH:SP:ESP101:CH:BP:EBP110:DH:SI:ESI111:BH:DI:EDI_表2PS:部分资料rrr:IndexRegister000:EAX001:ECX010:EDX011:EBX100:NoIndex101:EBP110:ESI111:EDI_表3PS:部分资料mmm:Function11w=1000:D
24、S:[BX+SI]001:DS:[BX+DI]010:SS:[BP+SI]011:SS:[BP+DI]BX100:DS:[SI]101:DS:[DI]110:SS:[BP]111:DS:[BX]_表4PS:部分资料oo:Function00:Ifmmm=110,thenadisplacementfollowstheoperation;otherwise,nodisplacementisused01:An8-bitsigneddisplacementfollowstheopcode10:A16-bitsigneddisplacementfollowstheopco
25、de11:mmmspecifiesaregister,insteadofanaddressingmode_上面的表,你都看明白了吗?现在我就教你们如何利用这样的表格来把汇编指令翻译机器码3.指令格式简介8086所用的16位指令格式:____
26、操作码
27、+
28、mod-reg-r/m
29、+
30、位移量
31、+
32、立即数
33、1~2字节0~1字节0~2字节0~2字节OK!以上就是基本知识,下面我们来实践吧:---问题:MOVAX,1234H对应的机器码为:B83412MOVEBX,0对应的机器码为:66BB00000000MOVCL,55H对应的机器码为:B155MOVAX,BX对应的机
34、器码为:8BC3我在问一下,机器码的数据格式是什么?好像是机器指令+操作数(高位存放在地址高位,低位存放在地址低位),但是前面MOVAX,怎么就变成了B8,弄不明白,请指教。PS:上面的题目是一个网友问的,现在我来实践一遍给你们看。---指令1-MOVAX,1234H对应的机器码为:B83412解法:判断-这个是8086汇编16位汇编指令格式,并且是立即寻址方式查表-打开opcodes.html文件,找到标题为"MainInstructions",单击"M"字母,然后对应查看"MOVReg,Imm"格式的"OpCode"项为:1011wrrr再判断-由于寄存器是
35、AX,立即数是1234H,明显是"对字操作",所以w=1在查看本文章上面的"表1",对应的查到rrr的值为000组合结果-w=1rrr=0001011wrrr=10111000B-B8H根据"3.指令格式简介"-B8H+
36、立即数(低位在前高位在后)
37、=B83412HPS:"+"符号不为"加号"好了,已经解完第一题了,机器码为B83412H---指令4-MOVAX,BX对应的机器码为:8BC3解法:判断-这个是8086汇编16位汇编指令格式,并且是寄存器寻址方式查表-打开opcodes.html文件,找到标题为"MainInstructions",单击"M"字母,
38、然后对应查看"MOVRe