首页 > 解决方案 > 字母数字显示 - 在内存中的位置

问题描述

我有一个 32 行 x 80 字符/行的字母数字显示器。字符第 8 行第 40 列在内存中的位置和物理地址是什么?

标签: display

解决方案


我将使用一个(x,y)符号,其中x1and之间80,并且在andy之间:132

努力前进。假设左上角的单元格(1,1)位于物理内存地址0x0000非常不可能!),那么左上角的单元格位于 address 0x0000。它旁边的那个(2,1)是 at 0x0001,依此类推,直到最后一个单元格(80,1)是 at 0x004F

下一行从(1,2), 在 address开始0x0050。这意味着每一行0x0050的开始都比前一行的开始更远。我会快进到第8行...

第八行从(1,8)地址开始7 * 0x0050。为什么是7?第 1 行是 0,所以第 8 行是 7。

第 40 列是(40,8),因此您需要0x0027在地址中添加 39 ( )。为什么是39?第 1 列是 0,所以第 40 列是 39。

所以,一般来说,物理地址是<start> + (y - 1) * 0x0050 + (x - 1).

因为(40,8), 那将是0x0000+(8-1)*0x0050+(40-1), 或0x0257


推荐阅读