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

汇编代码转成机器码mips-code-to-machine-code 汇编代码转成机器码——对输入有几点要求:指令是小写;一行只能有一条指令;每行开头不能有空格,必须一上来就是操作符,后面可以有空格;立即数只处理十进制数;输入-1代表程序结束 立即下载

信息来源:80x86汇编小站
原始连接:http://www.x86asm.com/DisplayArticle.asp?BoardID=3&ArticleID=32
文章作者:HSLY


作者:HSLY 网站:http://www.x86asm.com E-MAIL: pliceman_110@163.com

HI,欢迎进入Assembly Language into Mechine Code 教程。

  首先你得从80x86汇编小站下载<Intel 80x86 OPCODES手册>
  下载地址:Soft_Show.asp?SoftID=8
 
  机器语言我们只要重点理解一下几个概念:
 
  1. 机器语言指令有操作码(OP)和地址码两部分组成

                 
    |_____________OP_______________|__d__|__w__|

    |_____________OP_______________|__s__|__w__| <--此格式用于立即寻址方式


  在多数操作码中,常使用某些位来指示某些信息:
  如图上结构里的: w=1 时 对字来操作
              w=0 时 对字节来操作

              d值在双操作数指令中才有效
            当 d=1 时 有且只有一个寄存器用于目的操作数
              d=0 时 有且只有一个寄存器用于源操作数

              s=1 时 立即数为8位,但要求扩展成16位数
              s=0 时 当指令作字节操作/有16位立即数

由于汇编的指令格式很多,这里我只作一些基本情况介绍,必要时读者可以下载/查阅80x86汇编小站http://www.x86asm.com提供的OPCODES手册来查阅。

  2. 寻址方式的机器语言表示:

    |   mod   |     reg     |   r/m   |
    |_____|_____|_____|_____|_____|_____|_____|

  reg 表示寄存器方式,在不包括立即数的双操作数指令的情况下,规定必须有一个操作数在寄存器中,该寄存器由reg字段指定,并与操作码字节中的w位相组合确定的寄存器

  mod字段与r/m(register/memory)字段结合在一起确定另一个操作数的寻址方式现在你们下载了80x86汇编小站(http://www.x86asm.com)提供的OPCODES 手册了吗?
下载好了,请解压后打开里面的:opcodes.html 文件,然后熟悉里面的表格:

现在熟悉简单的:
______________________________________________________________________________
表1 <PS:部分资料>     rrr : W=0 : W=1 : reg32

                000 : AL : AX : EAX

                001 : CL : CX : ECX

                010 : DL : DX : EDX

                011 : BL : BX : EBX

                100 : AH : SP : ESP

                101 : CH : BP : EBP

                110 : DH : SI : ESI

                111 : BH : DI : EDI
______________________________________________________________________________
表2 <PS:部分资料>     rrr : Index Register
                000 : EAX

                001 : ECX

                010 : EDX

                011 : EBX

                100 : No Index

                101 : EBP

                110 : ESI

                111 : EDI
______________________________________________________________________________
表3 <PS:部分资料>     mmm : Function         11
                                      w=1
                000 : DS:[BX+SI]      

                001 : DS:[BX+DI]

                010 : SS:[BP+SI]

                011 : SS:[BP+DI]             BX          

                100 : DS:[SI]

                101 : DS:[DI]

                110 : SS:[BP]

                111 : DS:[BX]
______________________________________________________________________________
表4 <PS:部分资料>
oo : Function

00 : If mmm = 110, then a displacement follows the operation; otherwise, no displacement is used

01 : An 8-bit signed displacement follows the opcode

10 : A 16-bit signed displacement follows the opcode

11 : mmm specifies a register, instead of an addressing mode
______________________________________________________________________________
上面的表,你都看明白了吗? 现在我就教你们如何利用这样的表格来把汇编指令翻译机器码

  3.指令格式简介

  8086所用的16位指令格式:

  ________   _____________   ________   ________
  |操作码| + |mod-reg-r/m| + |位移量| + |立即数|
  1~2字节   0~1字节       0~2字节   0~2字节


OK!以上就是基本知识,下面我们来实践吧:

———————————————————————————————————————
问题:

  MOV AX,1234H 对应的机器码为:B83412

  MOV EBX,0   对应的机器码为:66BB00000000

  MOV CL,55H   对应的机器码为: B155

  MOV AX,BX   对应的机器码为:8BC3


  我在问一下,机器码的数据格式是什么? 好像是 机器指令+操作数(高位存放在地址高位,低位存放在地址低位),但是前面MOV AX,怎么就变成了B8,弄不明白,请指教。

PS: 上面的题目是一个网友问的,现在我来实践一遍给你们看。
———————————————————————————————————————

指令1 -> 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汇编语言书籍的机器语言部分,应该有解释的。

指令2的解法,请大家等待,或者大家研究一下,把解法贴出来,给大家参考哦!

                                      ----待续
                                      2004   2月14日

PTA 7-8 暴力小学(二年级篇)-求出4个数字 (10分)java PTA 7-8 暴力小学(二年级篇)-求出4个数字 (10分)java 小博是新城小学二年级学生,这孩子人很老实,数学、语文成绩都是中等。不过一旦坐在电脑前,写起代码来,则有些霸气侧漏,尤其擅长各种暴力方法。本题就是数学莫老师的题目之一,请你和小博一起暴力求解吧。 输入格式: 第一行给出这个和N(图中例子的和N为2000)。 输出格式: 第一行输出所有解的数目K,随后K行按照DCBA 4位数字从... 阅读详情

相关推荐

5分钟搞定!用ZLMediaKit搭建GB28181视频监控系统(含避坑指南)

本文提供了一份基于ZLMediaKit搭建GB28181视频监控系统的实战指南。文章详细介绍了从环境准备、核心组件(ZLMediaKit与SIP服务器)部署、摄像头配置到内外网穿透的完整流程,并重点分享了设备ID配置、防火墙设置等关键避坑经验,帮助开发者快速构建稳定可控的监控平台。

apple5的专栏 1082

x86/x64软件逆向分析【提高篇】

本课程为《x86/x64软件逆向分析》系列课程之“提高篇”,在“入门篇”的基础上,补充了更多深入和复杂的逆向分析内容。本课程可以作为逆向工程师的参考教程,也可以作为对软件逆向分析充满兴趣的朋友们的“提高”教程。 如果你看到某个exe程序能够实现某种特殊的功能,但你却不知道如何实现,这时候,你通过反汇编、反编译和动态跟踪等方法分析出其具体的实现过程,进而“参考”这个过程自己实现这个特殊的功能,这种行为就是逆向工程。逆向不仅仅是反编译,而且还要推倒出设计,并且能够文档化,从而使软件得以更好的维护。 在工作中,发现现用软件中有BUG,但软件开发商已经不存在了,怎么办?掌握软件逆向分析技术,给它“修”一下。 传说中的神秘的“黑客”、“大神”,无非是掌握了你还没掌握的某些技能而已,知道了你所不知道的某些特殊知识而已。掌握《x86/x64软件逆向分析》,你离这些神秘的“黑客”、“大神”只有一步之遥。 “天下事有难易乎?为之,则难者亦易矣;不为,则易者亦难矣!” 逆向分析,如同玩猜谜游戏,当你看到一个个谜底慢慢浮现的时候,只有身在其中的人,才能享受其中的刺激和乐趣。作为看客,永远无缘体验这份乐趣。

SpyGlass Lint脚本实战:从环境配置到报告生成的完整流程解析

本文详细解析了使用SpyGlass Lint脚本进行数字芯片设计代码质量检查的完整自动化流程。从环境配置、目录结构设计,到核心TCL脚本的编写与模块化配置,再到脚本执行、调试技巧及报告解读,提供了构建健壮、可维护自动化检查框架的实战指南。文章重点阐述了如何通过脚本实现从环境配置到报告生成的一键式操作,并探讨了与企业级CI/CD流程集成的进阶方案。

weixin_29196613的博客 439

汇编指令和机器码在线转换工具

汇编指令和机器码在线转换工具

someby的博客 3万+

【CSP-J/S】复赛注意事项 上机文件组织形式

每年/S 复赛都有很多同学因为一些小失误导致一年的努力付之东流。Tony老师整理了一些复赛容易踩坑的点,或许对你有帮助!

星卯教育-信奥教练tony 1万+

数字IC后端PPA优化实战:Timing一致性策略与Module Region布局技巧

本文深入探讨了数字IC后端设计中的PPA优化实战,重点解析了Timing一致性问题及其解决方案。通过调整Clock Uncertainty、Timing Derate和RC Scale Factor等关键参数,使Innovus等PR工具的分析结果更接近PrimeTime签核结果。同时,文章详细介绍了Module Region布局技巧,通过为关键模块划定物理区域,优化单元摆放,有效减少线延迟,从而协同提升时序收敛效率与设计可预测性。

weixin_29218963的博客 202

X64(64位)汇编指令与机器码转换原理

REX.W说明需要REX前缀,REX格式为0100WRXB,W表示操作数宽度,W=1表示64位,X位默认为0,因此REX=01001001=49h。REX.W说明需要REX前缀,REX格式为0100WRXB,W表示操作数宽度,W=1表示64位,X位默认为0,因此REX=01001001=49h。REX.W说明需要REX前缀,REX格式为0100WRXB,W表示操作数宽度,W=1表示64位,X位默认为0,因此REX=01001001=49h。第二步,以寄存器操作数,反推ModRM.reg与REX.R。

百里杨的博客 7218

在Ubuntu上安装Node.js编程

在Ubuntu操作系统上安装Node.js是非常简单的,本文将为您提供详细的安装步骤。这是一个简单的Node.js HTTP服务器示例,它将在本地主机的端口3000上监听请求,并返回"Hello, World!npm是Node.js的包管理器,您可以使用它来安装和管理Node.js模块。您已成功在Ubuntu上安装了Node.js,并创建并运行了一个简单的Node.js应用程序。现在,您已经成功安装了Node.js和npm,让我们创建一个简单的Node.js应用程序并运行它。如有任何疑问,请随时提问。

CodeNexus的博客 3524

8086(16位)汇编指令与机器码转换原理

在上一节,我们讲了X86指令基本格式。在8086架构下,是不存在SIB字节的,因此,我们重点关注ModR/M。

百里杨的博客 6597

论文必备 - YOLOv11热力图可视化,支持指定模型,指定显示层,设置置信度,以及10种可视化实现方式

本文带来的是YOLOv11热力图可视化功能,支持,以及。我们经常看到一些论文里绘制了不同的热力图,一方面能够直观的感受其模型的有效性,另一方面也丰富了论文内容。特别是在使用了注意力模块的网络中,热力图就可以验证注意力机制是否真正聚焦到了预期的重要特征上,以便对模型的有效性和合理性进行评估。例如这篇文章中展示的,就很能够表达作者改进后的模型相比之前模型的优越性。

Limiiiing的博客 5504

8年ES运维经验整理出的Elasticsearch运维手册(超实用)

k1 : 控制非线性词频率归一化(饱和),Elasticsearch中默认值为1.2。用人能看懂的话说就是词语在文档中出现的次数对于得分的重要性。例如说我觉得在某些场景,一个搜索词在文档中出现越多则越接近我希望搜索的内容,就可以将这个参数调大一点。b :控制文档长度对于分数的惩罚力度。变量b处于分母上,它乘以刚刚讨论过的字段长度的比值,Elasticsearch中的b 默认值为0.75。如果b较大,则文档长度相对于平均长度的影响更大。

yonggeit的博客 5274

汇编指令与机器码地相互转换

机器语言我们只要重点理解一下几个概念:1. 机器语言指令有操作码(OP)和地址码两部分组成 |_____________OP_______________|__d__|__w__||_____________OP_______________|__s__|__w__| 在多数操作码中,常使用某些位来指示某些信息:如图上结构里的: w=1 时 对字来操作w=0 时 对字节来操作d

jiangyuanfu的专栏 2057

cesium 气象云(体积云)

本文介绍了基于Cesium的气象云渲染技术方案,其核心是通过GPU加速的光线投射算法实现气象云的三维可视化。方案采用分层架构设计:GPU计算层由顶点着色器和片段着色器组成,负责光线投射计算、3D纹理采样和颜色映射;CPU控制层处理数据预处理、纹理创建和参数配置。关键技术包括:顶点着色器计算相机位置和光线方向,片段着色器实现光线步进采样、颜色映射和半透明混合。该方案高效解决了气象数据与地理场景的融合问题,支持云图、温度场等复杂三维气象数据的实时渲染,具有高真实感和良好性能。

God's asylum的博客 1201

汇编指令与机器码的相互转换【转】

机器语言我们只要重点理解一下几个概念:1. 机器语言指令有操作码(OP)和地址码两部分组成机器语言我们只要重点理解一下几个概念:1. 机器语言指令有操作码(OP)和地址码两部分组成|_____________OP_______________|__d__|__w__||_____________OP_______________|__s__|__w__| &lt;--此格式用于立即寻址方式在多数操...

p312011150的博客 2万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

转载——8086汇编指令与机器码的相互转换

汇编指令与机器码的相互转换 贴子发表于:2008-10-28 12:48:03 机器语言我们只要重点理解一下几个概念:1. 机器语言指令有操作码(OP)和地址码两部分组成 |_____________OP_______________|__d__|__w__||_____________OP_______________|__s__|__w__| 在多数操作码中,常使用某些位来

gooogleman#foxmail.com 4927

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【转】汇编指令与机器码的相互转换

80x86 opcodes : http://www.aogosoft.com/download/opcodes.rar

okmnji79513的专栏 1131

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

汇编指令与机器码的相互转换(来自80x86汇编小站)

作者:HSLY  网站:http://www.x86asm.com  E-MAIL: pliceman_110@163.comHI,欢迎进入Assembly Language into Mechine Code 教程。首先你得从80x86汇编小站下载下载地址:Soft_Show.asp?SoftID=8   机器语言我们只要重点理解一下几个概念:      1. 机器语言指令有

MmstZCC(安然)的专栏 1万+

汇编学习之《工具安装和进制学习》

ollyDbg 一款免费使用的软件,用于查看我们的执行程序。本软件作者是 Oleh Yuschuk(解压下载的文件就可以运行,我电脑上开始运行的时候提示到有的库比系统中的版本低了,我们选择是就可以。另外会提醒如下,我们选择设置管理员权限运行就可以了。我简单描述下设置快捷方式发送快捷方式: 右键-点击属性-发送桌面快捷方式。设置管理员运行: 右键桌面快捷方式-选择顶部快捷方式-选择高级-选择用管理员身份运行(R)-确认-确认-再次运行OK.

u011374344的专栏 1145

汇编语言 指令 机器码三者的关系

简单说就是同一操作的三种不同表示方法 机器码是0和1组成的二进制序列,可读性极差 指令就是把特定的0和1序列,简化成对应的指令(一般为英文简写,如mov,inc等),可读性稍好 汇编语言包括指令和伪指令。伪指令是为了编程方便,对部分指令做的封装。 汇编指令与机器码的相互转换: 机器语言我们只要重点理解一下几个概念: 1. 机器语言指令有操作码(OP)和地址码两部分组成 机

xiaofei0859的专栏 1万+

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

原文地址::http://blog.youkuaiyun.com/cyg0810/article/details/7794849 相关文章 1、汇编对应机器码大全----http://wenku.baidu.com/link?url=GeRgqDNM40TlJtIz2RCWGd8o1uCeLCT_ZJ3d4wNA_ZQm_7uGcJ7YF3JKV8_lyFNYoRIYs3ue7-8

xqhrs232的专栏 1万+

机器码、字节码、汇编语言的区别

机器码 机器码(machine code),机器语言指令,一种CPU的可读指令,是CPU可直接解读的0 1二进制序列。不同的CPU生产厂商,遵守的机器指令标准主体上是通用的,但也会有自己的一些比较特殊的指令。 字节码 字节码(Bytecode),是一种包含执行程序、由一序列 op(操作码)代码/数据对组成的二进制文件,字节码是一种中间码,它比机器码更抽象,需要直译器转译后才能成为机器码的中间代码,是一种要解释的虚拟机的指令,并且仍然需要在执行之前转换为机器代码。 java文件经过javac编译器编译生成的.

chenke890703的博客 6259

程序-从字符到机器码

计算机是依靠一系列的约定和规则,使得软硬件能够协同工作,完成各种复杂的任务。这些约定和规则是不断发展和完善的,它们不是死板的,而是随着技术的进步和应用场景的变化而不断演化。进程管理和CPU调度是操作系统的两个重要组成部分,它们共同协作,以实现程序运行的效率最大化。

nameless_233的博客 359

汇编语言:从助记符到机器码的奇幻漂流

本文深入探讨汇编语言如何通过助记符转换为机器码的过程,解析汇编器内部的词法分析、语法构建和语义检查等关键阶段。对比NASM、MASM和GAS等主流汇编器的语法差异与平台特性,帮助开发者理解底层编程原理并选择合适的工具链。

stone的博客 310
上一篇: 远离尘嚣
下一篇: debug详解
codeshell
博客等级 码龄22年 9粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值