为什么这个数组指针要移动 1?
Why is this array pointer shifted by 1?
我正在为微处理器考试而学习,出现了这个示例问题:
综上所述,代码后面的程序内存中有一个数组:
array: .db 11,12,13,14,15,16,17,18,19,20
并且在代码中指针加载为:
ldi ZL, low(array<<1);
我的问题是为什么我得到的代码中存在 1 的移位。在我看来,标签 "array" 应该指向包含数字 11 的内存字节。如果我理解正确的话,向左移动 1 将乘以 2。那不会把它扔掉吗?是给我的代码错了还是我没理解什么?
The program memory is organized in 16 bit words while the Z pointer is a byte address.
这样就完成了从字地址到字节地址的转换。
我正在为微处理器考试而学习,出现了这个示例问题:
综上所述,代码后面的程序内存中有一个数组:
array: .db 11,12,13,14,15,16,17,18,19,20
并且在代码中指针加载为:
ldi ZL, low(array<<1);
我的问题是为什么我得到的代码中存在 1 的移位。在我看来,标签 "array" 应该指向包含数字 11 的内存字节。如果我理解正确的话,向左移动 1 将乘以 2。那不会把它扔掉吗?是给我的代码错了还是我没理解什么?
The program memory is organized in 16 bit words while the Z pointer is a byte address.
这样就完成了从字地址到字节地址的转换。