找回密码
 立即注册
查看: 117|回复: 12

请教一个汇编代码的问题 | 已解决

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-07-11 09:00:21
已绑定手机

1

主题

4

回帖

17

积分

新手上路

积分
17
发表于 2025-7-11 09:00:21 | 显示全部楼层 |阅读模式
请教一个汇编代码的问题
在反汇编窗口显示的代码为:MOV 0X062Dh,R11
        对的16进制编码为:7AB3062D

然后我在汇编代码中写MOV 0X062Dh,R11提示出错A1
        汇编代码中写MOV 62Dh,R11
        对的16进制编码为:7AB12D
在反汇编窗口显示的代码为:MOV 0X2Dh,R11
不能和原来对应,改成MOV 0XFF062Dh,R11也不行。
这个需要怎么解决?

回复

使用道具 举报 送花

3

主题

247

回帖

-795

积分

等待验证会员

积分
-795
发表于 2025-7-11 09:03:00 | 显示全部楼层
您提到的汇编代码问题,涉及指令编码与地址表示方式之间的差异。我们来分析并解决这一问题。

首先,反汇编窗口显示的指令为 MOV 0X062Dh, R11,其对应的机器码为 7AB3062D。从该编码可以推断出:
指令助记符为 MOV;
操作数为立即数 0x062D;
目标寄存器为 R11;
编码格式为:7AB3 062D,其中前两位(7A)可能代表操作码,B3 和 062D 可能是地址字段或寻址模式。

然而,在您尝试编写汇编代码时,使用 MOV 0X062Dh, R11 出现错误 A1,这可能是由于以下原因:

1. 汇编器对地址范围的限制  
   汇编器可能不支持直接将一个 16 位的立即数(如 0x062D)作为内存地址使用。某些架构要求内存地址必须在特定范围内,或者需要通过间接寻址方式访问。

2. 地址表示方式不一致  
   在某些汇编器中,0x062Dh 被解释为一个 16 位的立即数,而非内存地址。因此,当您试图将其用作目标地址时,汇编器会报错,因为它无法识别该值为有效地址。

3. 寻址模式限制  
   如果目标寄存器 R11 是通用寄存器,而汇编器仅支持寄存器到寄存器的移动,或仅支持特定寻址模式(如直接寻址、间接寻址等),则 MOV 0x062Dh, R11 可能不符合语法规范。

您提到在汇编代码中写 MOV 62Dh, R11 时,反汇编窗口显示为 MOV 0x2Dh, R11,这是因为 62Dh 被误认为是一个十六进制数,但汇编器可能将其解析为十进制数值(即 1581),从而导致地址错误。

此外,尝试使用 MOV 0xFF062Dh, R11 也不可行,因为 0xFF062Dh 是一个超过 16 位的地址,超出了某些架构的寻址范围,也可能导致汇编错误。

解决方案建议

1. 确认架构和寻址模式  
   请查阅所使用的处理器架构文档,确认是否支持直接将 16 位立即数作为内存地址使用。若不支持,需改用间接寻址方式,例如:

  
  1. asm
  2.    MOV R12, #0x062D
  3.    MOV R11, [R12]
复制代码

2. 使用符号定义或段地址  
   若目标地址为固定位置,可使用 .equ 或 .set 定义符号:

  
  1. asm
  2.    .equ MYADDR, 0x062D
  3.    MOV R11, [MYADDR]
复制代码

3. 检查汇编器选项  
   确保汇编器配置正确,支持所需的寻址模式和地址范围。部分汇编器允许通过命令行参数调整地址空间限制。

4. 验证反汇编结果  
   反汇编窗口显示的 MOV 0x062Dh, R11 可能是伪指令或特殊编码,需结合实际硬件手册理解其含义,避免混淆。

综上所述,问题主要源于汇编器对地址表示方式的限制及寻址模式的不匹配。建议根据具体架构文档调整代码,并使用间接寻址或符号定义以确保兼容性。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:253
  • 最近打卡:2025-07-31 08:55:10
已绑定手机

78

主题

2294

回帖

5226

积分

荣誉版主

无情的代码机器

积分
5226
发表于 2025-7-11 09:39:16 | 显示全部楼层
"在反汇编窗口显示的代码为:MOV 0X062Dh,R11"

这对吗?截图看看?原始C代码是啥呀
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-07-11 09:00:21
已绑定手机

1

主题

4

回帖

17

积分

新手上路

积分
17
发表于 2025-7-11 10:10:55 | 显示全部楼层
C:\666.PNG

点评

如何 贴图 ?如何 上传视频 ?如何 论坛注册 ? - 问题反馈:ISP软件/头文件/单片机数据手册规格书等 国芯技术交流网站 - AI32位8051交流社区  详情 回复 发表于 2025-7-11 10:15
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-07-11 09:00:21
已绑定手机

1

主题

4

回帖

17

积分

新手上路

积分
17
发表于 2025-7-11 10:14:50 | 显示全部楼层
666.png

点评

这是在逆向hex吗? 只有MOV dir8 没有MOV dir16~ [attachimg]108159[/attachimg]  详情 回复 发表于 2025-7-11 10:35
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:253
  • 最近打卡:2025-07-31 08:55:10
已绑定手机

78

主题

2294

回帖

5226

积分

荣誉版主

无情的代码机器

积分
5226
发表于 2025-7-11 10:15:23 | 显示全部楼层
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-07-11 09:00:21
已绑定手机

1

主题

4

回帖

17

积分

新手上路

积分
17
发表于 2025-7-11 10:25:03 | 显示全部楼层
777.jpg
大师们现在要怎么写汇编代码能变成7AB3062D。用MOV 0X062D,R11编译会变成7AB12D。
需要怎么设置下?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:253
  • 最近打卡:2025-07-31 08:55:10
已绑定手机

78

主题

2294

回帖

5226

积分

荣誉版主

无情的代码机器

积分
5226
发表于 2025-7-11 10:35:57 | 显示全部楼层

这是在逆向hex吗?

只有MOV dir8
没有MOV dir16~
截图202507111035117257.jpg
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-07-24 18:45:13

2

主题

189

回帖

1086

积分

金牌会员

积分
1086
发表于 2025-7-11 11:55:34 | 显示全部楼层
MOV EDATA 0X062Dh,R11

点评

高手,又新学一招~  发表于 2025-7-11 14:28
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-07-11 09:00:21
已绑定手机

1

主题

4

回帖

17

积分

新手上路

积分
17
发表于 2025-7-11 21:48:40 | 显示全部楼层
zxcv***大师不知道怎么表达对你的感谢。谢谢您!今天我花了一天时间把汇编里所有相关代码都改成数据后,编译通过。但是调试时有跳步。晚上看到大师指点后试验成功。 神一样的存在
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-7-31 22:56 , Processed in 0.142443 second(s), 107 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表