我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 1050|回复: 9

[其他格式] 汇编码、机器码、十六进制码 相互转换

[复制链接]

该用户从未签到

4

主题

2

回帖

0

积分

一级逆天

积分
0

终身成就奖

发表于 2022-2-23 21:28:36 | 显示全部楼层 |阅读模式
重要提示:本板块需要二级以上才能下载,没二级以上不要购买下载附件,购买也下载不了--->>>>点这里可以充值快速升级

请保证积分充足再下载,本板块最少需要105积分以上才能下载,如果附件有销售的需要105+销售积分,否则下载不了。

汇编码、机器码、十六进制码 相互转换

汇编码(Assembly Code)是用 人类可读的 汇编语言助记符 书写的代码。
机器码(Machine Code)是用 硬件可执行的 二进制 表示的代码。
十六进制码(Hexadecimal Code) 是用 人类可读的 十六进制 表示的代码。
本文将以 国产芯片 ”宏晶 STC12C5A60S2“ 为例,探讨如何进行 汇编码、机器码、十六进制码 相互转换。

1. 连线

首先获取 STC12C5A60S2 芯片,同时获取芯片手册。然后接好电路,如图:



这里用 国产芯片 “PL2303” 作为 USB-TTL烧写工具。上位机运行 STC-ISP 程序,使用方法参见官方。
图中用了简化画法,只画出需 连线 的 引脚,其他则省略,以简单示意。

还有一种更为专业的做法,就是不用 开发板 而是自己接 芯片外围电路,如此可以参见 芯片手册的线路图。

2. 汇编码 与 机器码

一条汇编指令,例如我们熟悉的 LJMP长跳转,通常是第一条指令。如何实现 汇编码 与 机器码 的 相互转换 呢?

查看 指令集 可知 汇编码 的 机器码:



那么 转换就应该是这样:

2.1 汇编码 到 机器码

例如看到 汇编指令 LJMP 0x5555;,先转换 助记符 LJMP 为 命令 0x02,再转换 数字 0x5555 为 数据 0x55 0x55。
因此转换到 机器码 就是 0x02 0x55 0x55 本身:



2.2 机器码 到 汇编码:

同理看到 机器码 0x02,就知道这条 命令 对应的 汇编指令 是 LJMP addr16。这是个 3 字节指令,因此再看两个字节 0x55 0x55,它们就是 数据,长跳转 到的地址。



机器码 是能够直接 烧写 到芯片 内存 中的代码。还有一种能够直接烧写 到芯片 内存 中的代码,叫 十六进制码。

3. 机器码 与 十六进制码

十六进制码 的一个好处是能指定 地址。如何实现 机器码 与 十六进制码 的 相互转换 呢?

3.0 准备

十六进制码 格式如下:



补充说明:
类型:0x00 表示 数据,0x01 表示结束。
地址:两个字节地址。大于 64KB 的情况可以用 另一种类型 烧写,可以参见 HEX文件格式。
校验码:使所有字节之和等于 0x100。

我们首先写一段汇编码:



功能是 输出 #0x55 到 0x80。#0x55 是一个 立即数,0x80 是 STC 的 端口 P0。

为 显示 起见,我们在 P0 端口接上 发光二极管,连线如图:



这样这段汇编码功能就变成 交替点亮发光二极管。

用 2. 节所述方法,将 汇编码 转换到 机器码:



现在实现 机器码 与 十六进制码 的 相互转换:

3.1 机器码 到 十六进制码

依照 3.0节 所述格式,从 机器码 得到 十六进制码:



可以看到 十六进制码 包含有 二进制码 的 显式形式。

3.2 十六进制码 到 机器码:

同理依照 3.0节 所述格式,有 十六进制码 也可得到原来的 机器码:



进而还可用 2. 节所述方法,得到原来的 汇编码:
回复

使用道具 举报

该用户从未签到

3

主题

4632

回帖

0

积分

PADS20200316初级班

积分
0

终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

发表于 2022-2-23 21:35:32 | 显示全部楼层
重要提示:本板块需要二级以上才能下载,没二级以上不要购买下载附件,购买也下载不了--->>>>点这里可以充值快速升级

请保证积分充足再下载,本板块最少需要105积分以上才能下载,如果附件有销售的需要105+销售积分,否则下载不了。

回复

使用道具 举报

  • TA的每日心情
    郁闷
    2024-9-5 08:50
  • 签到天数: 26 天

    [LV.4]偶尔看看III

    2

    主题

    4501

    回帖

    1593

    积分

    PADS20210412初级班

    积分
    1593

    社区居民终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    发表于 2022-2-23 21:38:40 | 显示全部楼层
    重要提示:本板块需要二级以上才能下载,没二级以上不要购买下载附件,购买也下载不了--->>>>点这里可以充值快速升级

    请保证积分充足再下载,本板块最少需要105积分以上才能下载,如果附件有销售的需要105+销售积分,否则下载不了。

    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    6740

    回帖

    3

    积分

    二级逆天

    积分
    3

    终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    发表于 2022-2-24 07:39:00 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    5

    主题

    3820

    回帖

    0

    积分

    PADS20220105初级班

    积分
    0

    终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    发表于 2022-2-24 08:11:42 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-8-16 08:57
  • 签到天数: 35 天

    [LV.5]常住居民I

    6

    主题

    1万

    回帖

    2万

    积分

    三级逆天

    积分
    20494

    终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    QQ
    发表于 2022-2-24 08:55:48 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    6

    主题

    724

    回帖

    0

    积分

    二级逆天

    积分
    0

    终身成就奖

    发表于 2022-2-24 09:01:10 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    6 小时前
  • 签到天数: 97 天

    [LV.6]常住居民II

    5

    主题

    6741

    回帖

    1万

    积分

    三级逆天

    积分
    14149

    终身成就奖特殊贡献奖原创先锋奖

    发表于 2022-3-10 08:13:04 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    14

    主题

    4695

    回帖

    8873

    积分

    二级逆天

    积分
    8873

    终身成就奖特殊贡献奖原创先锋奖

    发表于 2022-3-10 08:46:11 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    104

    主题

    866

    回帖

    0

    积分

    二级逆天

    积分
    0

    终身成就奖金点子奖

    发表于 2022-12-11 10:04:36 | 显示全部楼层
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    论坛开启做任务可以
    额外奖励金币快速赚
    积分升级了


    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    平平安安
    TOP
    快速回复 返回顶部 返回列表