INFINONE XC164单片机逆向记录(3)汇编语法

  本人所写的博客都为开发之中遇到问题记录的随笔,主要是给自己积累些问题。免日后无印象,如有不当之处敬请指正(欢迎进扣群 24849632 探讨问题);

写在专栏前面https://blog.csdn.net/Junping1982/article/details/129955766

INFINONE XC164单片机逆向记录(1)资料准备https://blog.csdn.net/Junping1982/article/details/129945022

INFINONE XC164单片机逆向记录(2)反汇编https://blog.csdn.net/Junping1982/article/details/129949983

特别声明:未经授权,请勿转载

----  文接上章  -------------------------------

一、阅读问题:

在阅读汇编代码中发现有些指令符号不及熟悉, 比如

movb    byte_C0B9, ONES
movb    byte_C0BA, ZEROS
movb    byte_C0BB, ONES
movb    byte_C0BC, ZEROS

jmpr    cc_NZ, loc_C0170C
jmpr    cc_ULE, loc_C01778

二、经过资料查找明确

2.1 系统常数,该常数定义于ALU内

序号符号
1ONES-1
2ZEROS0

4.10 Constant Registers All bits of these bit-addressable registers are fixed to 0 or 1 by hardware. These registers can be read only. Register ZEROS/ONES can be used as a register-addressable constant of all zeros or all ones, for example for bit manipulation or mask generation. The constant registers can be accessed via any instruction capable of addressing an SFR.

2.2 执行条件

序号符号条件说明
1cc_UC无条件跳转Unconditional
2cc_Z为0跳转zero
3cc_NZ不为0跳转not zero
cc_V有溢出时跳转Overflow
cc_NV无溢出时跳转No Overflow
cc_N为负时跳转Negative
cc_NN不为负时跳转Not Negative
cc_C有借/进位时跳转carry
cc_NC无借/进位时跳转No Carry
10cc_EQ相等时跳转Equal
11cc_NE不等时跳转Not Equal
12cc_ULT小于时跳转Unsigned Less Than
13cc_ULE小于等于时跳转unsigned less then or equal to
14cc_UGE大于等于时跳转Unsigned Greater Than or Equal
15cc_UGT大于时跳转Unsigned Greater Than
16cc_SLE小于等于时(有符号)跳转Signed Less Than or Equal
17cc_SGE大于等于时(有符号)跳转Signed Greater Than or Equal
18cc_SGT大于时(有符号)跳转Signed Greater Than
19cc_NET不等且非表格结束跳转Not Equal and Not End-of-Table
20cc_nusr0用户位0被清除时跳转USR-bit 0 is cleared(a)
21cc_nusr1用户位1被清除时跳转USR-bit 1 is cleared(a)
22cc_usr0用户位0被设置时跳转USR-bit 0 is set(a)
23cc_usr1用户位1被设置时跳转USR-bit 1 is set(a)

(a). 仅可用于JMPA及CALLA指令

三、指令系统 

3.1 算数指令

指令1

指令2

功能描述

ADD

ADDB

两字或字节加法

ADDC

ADDCB

带进位的两字或字节加法

SUB

SUBB

两字或字节减法

SUBC

SUBCB

带进位的两字或字节减法

MUL

MULU

16位乘16位带符号或无符号乘法

DIV

DIVU

16位除16位带符号或无符号除法

DIVL

DIVLU

32位除16位带符号或无符号除法

CPL

CPLB

一个字或字节的1的补数

NEG

NEGB

一个字或字节的2的补数

3.2 逻辑指令

AND

ANDB

两字或字节位与

OR

ORB

两字或字节位或

XOR

XORB

两字或字节位与或

3.3 比较指令

CMP

CMPB

两字或字节比较

CMPI1

CMPI2

带增长1或2的两字比较

CMPD1

CMPD2

带增长1或2的两字比较

3.4 布尔位操作指令

BFLDH/BFLDL

字的高位字节或低位字节的可屏蔽位的操作

BSET

对某位置1

BCLR

对某位清零

BMOV

移动某一位

BMOVN

反相移动某位

BAND

两位相与

BOR

两位相或

BXOR

两位相与或

BCMP

两位比较

3.5 移位和循环移位指令

SHR

字右移

SHL

字左移

ROR

字循环右移

ROL

字循环左移

ASHR

带符号位右移

3.6 优先级指令

3.7  数据移动指令 

MOV

标准字数据移动

MOVB

标准字节数据移动

MOVBS字节到字有符号扩展移动
MOVBZ字节到字零扩展移动

3.8 栈指令 

3.9 跳转指令 

JMPA/JMPI/JMPR

当前程序段有条件跳转到绝对、间接或相对目标地址

JMPS

在任何程序段无条件跳转到绝对目标地址

JB/JNB

根据选择位的状态,在当前程短有条件跳转到相对目标地址

JBC/JNBS

根据选择位的状态,用取反测试位,在当前程序段有条件跳转到相对目标地址

3.10 调用指令

CALLA/CALLI

在当前程序段中有条件调用绝对或间接地址的子程序

CALLR

在当前程序段中无条件调用相对地址的子程序

CALLS

在当前程序中无条件调用绝对地址的子程序

PCALL

在当前程序段中将选择寄存器压入堆栈无条件调用绝对地址的子程序

TRAP

在程序段中无条件跳转到中断或陷阱矢量跳转表

3.11 返回指令

RET

在当前程序段从子程序返回

RETS

在任何程序段从子程序返回

RETP

在当前程序段从子程序返回,外加从系统堆栈中弹出一个选择寄存器

RETI

从中断服务程序中返回

3.12 系统控制指令

SRST

通过软件复位

IDLE

进入休闲状态

PWRDN

进入掉电状态

SRVWDT

服务看门狗定时器

DISWDT

关闭看门狗定时器

ENWDT打开看门狗定时器
EINIT完成初始化(置位RSTOUT)

3.13 杂项指令

NOP

空操作指令

ATOMIC

定义不可分割的指令序列

EXTR

开启外部SFR空间的'reg', 'bitoff', 'bitaddr'地址模式

EXTP / EXTPR

使用特定数据页而不是DPP覆盖DPP寻址方案,并可选择切换到ESFR空间

EXTS / EXTSR

使用特定段而不是DPP覆盖DPP寻址方案,并可选择切换到ESFR空间

3.14 MAC单元指令

参考链接

https://www.keil.com/appnotes/files/apnt_124.pdf

汽车动力系统ECU固件逆向工程初探_车辆固件二进制分析_zulkar的专栏的博客-CSDN博客

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
XC7K325T是赛灵思公司推出的一款FPGA芯片,常用于高性能计算、嵌入式开发和数字信号处理等领域。该芯片采用了第7代Kintex系列的架构,具备较高的逻辑密度和处理性能。 DDR3是一种主流的内存类型,常用于计算机系统和嵌入式系统中。DDR3内存具备高速传输和读写能力,可提供较大的内存容量和较低的功耗。 xc7k325t ddr3教程主要介绍了如何在XC7K325T芯片上使用DDR3内存模块进行数据存储和读取。教程通常包括以下内容: 1. 硬件资源连接:介绍如何将DDR3内存模块与XC7K325T芯片进行正确的连接和布线,确保数据传输的稳定和可靠。 2. 时钟信号配置:DDR3内存模块需要时钟信号参与数据传输,在教程中会详细介绍如何配置时钟信号以及时钟频率的选择。 3. 控制信号配置:DDR3内存模块还需要一系列控制信号进行操作,如读写使能信号、地址信号等。教程会说明如何正确配置这些信号,以实现数据的读写。 4. 数据传输:教程会介绍如何在XC7K325T芯片上通过相应的接口将数据写入DDR3内存模块或从DDR3内存模块中读取数据。 5. 数据校验:DDR3内存模块中的数据传输容易受到干扰,教程会介绍如何进行数据校验、错误检测和纠正,以保证数据的可靠性。 通过学习和掌握xc7k325t ddr3教程,可以帮助开发者在XC7K325T芯片上正确配置和使用DDR3内存模块,提高系统的性能和稳定性。同时,也能够深入了解FPGA芯片和DDR3内存的工作原理,为以后的开发工作提供基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晶通物控

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值