我在 PIC24 上用 C 定义了一个变量
假设变量的名称(在 C 文件中)是The_Number_Of_Bytes
在 PIC24 C 代码中,它是这样定义的......
unsigned long The_Number_Of_Bytes=0; // number of bytes in buffer
当一个名为的字节数组DATABUF01
包含The_Number_Of_Bytes
字节(抱歉隐含的冗余)时,我将被调用,我需要确保我准确地执行了那么多字节,然后停止。
我非常有信心这个数字会小于 65535,所以为什么它是一个 unsigned long 是为了其他讨论。现在,我想知道;哪个是高位词,哪个是低位词?(就此而言,long
PIC24 C 中是 32 位数字吗?)
有人能告诉我这个例子中W2
会发生什么吗?W3
Mov.W #_The_Number_Of_Bytes, W1 ;From the dispatcher
Mov.W [W1++], W2 ;My question: Hi Order or Low Order ?
Mov.W [W1], W3 ;My question: Hi Order or Low ?
Mov.W #_DATABUF01, W4 ;The Start
Mov.B [W4++], W5 ;First byte...
: ;Whatever
: ;Whatever
: ;Whatever
有人可以确认或纠正我对 unsigned long int 的 Hi/Low 顺序的想法吗?
编辑评论者要求这样做。可以回答问题(评论是我的)
请求评论,大小似乎是 4 个字节,来自这个......
45: unsigned long i=0;
0AB6A B80060 mul.uu 0x0000,#0,0x0000 ;make a zero
0AB6C 980710 mov.w 0x0000,[0x001c+2] ;no clue which word
0AB6E 980721 mov.w 0x0002,[0x001c+4] ;aha, if I made it 1 or 2, I'd know
46: unsigned int Fischer;
47:
48: Fischer = sizeof(i);
0AB70 200040 mov.w #0x4,0x0000 ;So it must be 4
0AB72 780F00 mov.w 0x0000,[0x001c] ;okay, it's a 4 byte number
49: