MSP430 CMP运算符

KK

假设我有以下MSP430组装部分:

r15:

439c

内存映射:

4390:   6045 0200 9c43 6400 8844 5044 363a 0000

码:

448a:  cmp  #0x363a, 0x0(r15)
4490:  jnz  $+0x1c
4492:  Code continues
.
.
.
44ac: Jump to location

目标是将Z标志设为高。要使用cmp做到这一点,src和dst必须相等。如果我在r15的存储位置中有363a,为什么生成的cmp不会触发Z标志?

通过实验,我发现将3a36放在r15的内存位置中确实触发了Z标志,但是我不明白为什么。

如果有人能发现这一点,我将不胜感激。

如果需要更多信息,我将很乐意提供。

凝乳

原因是MSP430是一台小端机。
即,较低地址的字节0x439C被解释为最低有效字节。
高位地址的字节0x439D被解释为最高有效字节。
因此,内存中的16位值实际上被解释为0x36 + (0x3A << 8) = 0x3A36

这也解释了为什么在交换两个字节时都设置Z标志。

注意:
在内存转储中,字节从低到高从左到右列出。
仅对于大型字节序计算机(例如MC680x0),您可以解释内存转储中列出的多字节值;对于小型字节序机器(例如x86,MSP430),您必须反转多字节值的字节顺序以正确地使它们交错。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MSP430寄存器上的按位运算符,无需取消引用

来自分类Dev

MSP430 cmp.b 指令有什么作用?

来自分类Dev

MSP430端口访问

来自分类Dev

What is PMMCOREV in msp430?

来自分类Dev

MSP430中的汇编求反

来自分类Dev

重置后MSP430 ACLK问题

来自分类Dev

MSP430兼容性问题

来自分类Dev

使用MSP430的RNG / PRNG

来自分类Dev

MSP430 GCC路径问题

来自分类Dev

MSP430中的PMMCOREV是什么?

来自分类Dev

MSP430(MSP430-GCC)链接器的未定义引用

来自分类Dev

MSP430(MSP430-GCC)链接器的未定义引用

来自分类Dev

MSP430程序集堆栈指针行为

来自分类Dev

Contiki,MSP430:截断重定位以适合符号错误

来自分类Dev

内存未分配(嵌入式uC MSP430)

来自分类Dev

MSP430 printf函数执行速度太慢

来自分类Dev

MSP430带有“安全违规(BOR)”的随机复位

来自分类Dev

MSP430:__delay_cycles()缓慢/ MCLK可能缓慢

来自分类Dev

MSP430上的ELF重定位类型

来自分类Dev

MSP430中的sxt指令真正做什么?

来自分类Dev

MSP430中的sxt指令真正做什么?

来自分类Dev

MSP430错误:“ :: main”必须返回“ int”

来自分类Dev

安装用于TI MSP430开发的Energia

来自分类Dev

MSP430低功耗模式LPM3.5

来自分类Dev

在AC外部引用外部MSP430程序集.string

来自分类Dev

MSP430 TIMERA1中断

来自分类Dev

MSP430 UART TX中断启用/禁用

来自分类Dev

尝试轮询MSP430的键盘输入

来自分类Dev

是否有人为MSP430的IAR Embedded Workbench实现__getzone()?