【问题标题】:Assembly language ASCII string ordering汇编语言 ASCII 字符串排序
【发布时间】:2018-10-04 13:27:30
【问题描述】:

我是使用 MSP430 和 Code composer 的新手,我正在做一个实验室任务,我在其中编写了简单的指令。

我运行了这条指令:

mov.w #'ABC', R9

结果,我在R9 中获得了一个#0x4241

我知道上面引用'ABC'是ASCII字符串,转换后,A= 41 B= 42 C=43 并且C被踢出,因为只存储了一个单词,所以存储了A和B。

我不明白的是:
为什么是4241 而不是4142
因为A41B42

【问题讨论】:

  • 我认为这与 Endianness 有关,MSP430 将使用 Little Endian,谷歌快速确认是这种情况。字节序会影响存储的顺序字节。例如,如果您从 Jpeg 文件中对 Exif 信息进行 Bit Banging,这可能非常重要,您需要确保以正确的顺序读取字节。

标签: assembly ascii endianness msp430 code-composer


【解决方案1】:

一句话:endianness

您的单词首先被存储在最低有效字节:0x4241。

在“big Endian”机器上,它将被存储为 0x4142。

字节序是指字节排列的顺序 存储在内存中或传输时转换为更大的数值 通过数字链接。字节顺序在计算机科学中很有趣 因为经常使用两种冲突和不兼容的格式: 单词可以用 big-endian 或 little-endian 格式表示, 取决于是否订购了位或字节或其他组件 从大端(最高有效位)或小端(最小 重要位)。

在大端格式中,无论何时寻址内存或发送/存储 字字节,最重要的字节 - 包含最多的字节 有效位—首先存储(具有最低地址)或发送 首先,然后以递减的方式存储或发送以下字节 重要性顺序,具有最低有效字节 - 包含 最低有效位—最后存储(具有最高地址)或 最后发送。

Little-endian 格式颠倒了这个顺序:序列 地址/发送/存储最低有效字节优先(最低 地址)和最重要的字节最后(最高地址)。最多 计算机系统更喜欢所有数据的单一格式;使用 系统的本机格式是自动的。但是当读取内存或 从不同的计算机系统接收传输的数据,它是 通常需要在首选之间处理和转换数据 本机字节序格式转换为相反的格式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-06
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 2022-11-25
    • 2011-08-31
    • 1970-01-01
    相关资源
    最近更新 更多