BeHappy 发表于 2024-11-9 21:30:52

请教个问题:为什么单片机汇编语言没有WORD1这种操作

问题描述:

在向双字寄存器赋值时,汇编语言要先后取立即数的高低16位分2次才能完成给双字寄存器赋值。
在操作时,分别用到了WORD2和WORD0。很明显,0和2之间少了个1,那么WORD1是什么?
查了手册,只标注了WORD0和WORD2,还是搞不清楚WORD1是什么以及搞哪里去了。

VCC 发表于 2024-11-9 22:24:14

你这张图的出处是哪里?

VCC 发表于 2024-11-9 22:25:45

WORD2可以知道,是由BYTE2起始的WORD,那么自然

WORD1也就是BYTE1起始的WORD,也就是BYTE2-BYTE1

但不知道你想问什么

BeHappy 发表于 2024-11-9 22:50:04

VCC 发表于 2024-11-9 22:25
WORD2可以知道,是由BYTE2起始的WORD,那么自然

WORD1也就是BYTE1起始的WORD,也就是BYTE2-BYTE1


原来是这么拆分的,感谢 :-)

bkeuqoaq 发表于 2024-11-12 13:54:18

这与WR0,WR2,DR0,DR4一样的,有什么纠结的

BeHappy 发表于 2024-11-12 19:01:18

本帖最后由 BeHappy 于 2024-11-12 19:16 编辑

bkeuqoaq 发表于 2024-11-12 13:54
这与WR0,WR2,DR0,DR4一样的,有什么纠结的
不知道可以不回答。

jiegebushijiege 发表于 2025-2-9 01:32:53

应该是类似DR4这种双字寄存器命名方式,寄存器以其编号最低的字节位置命名。
例如:
1、R4是由位置4组成的字节寄存器。
2、WR4是由寄存器4和寄存器5组成的字寄存器。
3、DR4是双字寄存器,由寄存器4、5、6和7组成。
总结:也就是说word0包含byte0、byte1;word2包含byte2和byte3。0、1、2、3是连续的,再有下一个就是word4包含byte4和byte5,所以你所说的word1不存在(存在就破坏连续性了)自然是搞不到的。
双字寄存器命名方式的具体可以搜一下TSC80251的手册,翻到3.4.1. Byte, Word and Dword Registers这里(大概在页数21这里)。

jiegebushijiege 发表于 2025-2-9 04:51:10

VCC 发表于 2024-11-9 22:24
你这张图的出处是哪里?
应该是keil帮助文档的汇编器说明那里的。在ide主界面的help选择第二个open books window,左边弹出后双击uVision User's Guide Selection,之后就选择:
A251 User's Guide——Writing Assembly Programs——Expressions and Operators——Operators——WORDx。
然后你就能看到关于WORD0和WORD2的说明还有图表了。

BeHappy 发表于 2025-2-9 09:06:26

jiegebushijiege 发表于 2025-2-9 01:32
应该是类似DR4这种双字寄存器命名方式,寄存器以其编号最低的字节位置命名。
例如:
1、R4是由位置4组成的 ...

您说的很对,要是早1年遇到就好了
页: [1]
查看完整版本: 请教个问题:为什么单片机汇编语言没有WORD1这种操作