我想在LC3中制作2D阵列。到目前为止,我正在考虑使用.BLKW初始化一块内存,然后将其加载到每个条目的另一个数组中。这似乎并不会让我走上正轨。有什么建议么?如何在LC3中制作2D阵列
回答
你完全可以用.BLKW和.STRINGZ做到这一点,尽管后者显然有点不同寻常。
更大的常见问题是围绕着如何决定如何“获取”和“放入”数据到特定的内存区域。有几种方法可以做到这一点(没有一个正确的答案)。
你最初的想法很酷且有效,但在我看来似乎更加复杂,特别是在LC3中。
更直接的“行主”或“列主要”存储形式 - 连续存储位置代表一行(主行)中的下一个条目,或者列(列主要)中的下一个条目)是做到这一点的标准方式。
基本上你想要分配该区域的内存,然后编写两个函数:一个将物品放在位置(r,c),并从位置(r,c)获取物品。
为此,您只需将一个足够小的项目放入LC3的16位内存位置即可。这可能是一个数字,或一个字符。 (大于16位是可行的,但肯定会增加程序的复杂性)。
如果你想要一个完全粗化的样本,你可以在这里找到:http://lc3tutor.org/#array2Dcolordersmp(或者直接去lc3tutor.org并查看二维数组样本)。
如果你想自己学习和尝试,你可以阅读那里的描述,并忽略示例代码(最好如果你做家庭作业,你想确保你学习它)。否则,那里的代码应该在你找到的基于浏览器的lc3模拟器中运行正常。
祝你好运!
杰夫
PS这里的同步码前该代码,如果你只想从这项工作......希望这个例子可以帮助锚的完整代码样本中所采取的山坳主要做法:
.ORIG x3000
BR MAIN;跳过存储下面的主要部分的开始
.STRINGZ“ABCDEFGHIJKLMNOPQRSTUVWZYZ”;有点棘手 - 我们在我们的二维数组中存储一系列字母作为参考。
;上述字符串的地址在x3001,
;您将看到的是与下面的2D_ARRAY标签值相同。
;这基本上是我们的2D_ARRAY,从x3001开始并占用26个位置,
;加1(用于字符串上的空终止符)。
;我们将假设二维数组有13行和2列。
;每行两个字母和每列13个字母。 26个字母。
;因此,我们的NUM_ROW标签将为13,我们的NUM_COL标签将为2.(请参阅下面的标签)
;我们将把这个数组作为列主存储数组。
;根据我们上面的字符串,这意味着第一个
的单元;列(按照我们的约定,列#0)是:A-M。
;第二列(列#1)的单元格是:N-Z。
;如果我们以行主要形式存储阵列,则第一行的单元格,第一行的单元格,将是A,B,并且第二行将是C,D。等等
;像这样:
;
; R \ C | 0 | 1
; ------------
; 0 | A | N
; 1 | B | O
; 2 | C | P
; 3 | D | Q
; 4 | E | R
; 5 | F | S
; 6 | G | T
; 7 | H | U
; 8 |我| V
; 9 | J | W
; 10 | K | X
; 11 | L | Y
; 12 | M | Z
;使得2D_ARRAY [ROW = 8,COL = 1]将是字母“V”
- 1. 在UnityScript中制作2D数组通过制作数组阵列
- 2. 如何在CUDA中使用2D阵列?
- 3. 在Java中的2D阵列操作
- 4. iOS使用NSMutable阵列制作2D阵列
- 5. 如何在BASH中制作3D阵列?
- 6. 如何从2D阵列构造的2D阵列
- 7. 在Numpy中制作3D阵列的2D面具
- 8. C#在2D阵列中找到2D小阵列
- 9. 在中c p 2D阵列
- 10. Java 2d阵列在列
- 11. 2D阵列列阵混淆
- 12. 复制2D阵列从锯齿状2D阵列到另一个锯齿状2D阵列
- 13. 从3D阵列中减去2D阵列
- 14. 2D阵列
- 15. Android 2D阵列
- 16. 在更改之前制作副本2D阵列
- 17. 在2D阵列中移动某一列
- 18. 如何为阵列工作制作NSSortDescriptor?
- 19. 搜索在2D阵列... PHP
- 20. 计算在2D阵列
- 21. 自由2D阵列在C
- 22. 如何在2D矩阵中绘制matlab中的多边形
- 23. 提取的行或列从2D阵列的2D阵列
- 24. C#正确的方式遍历2D阵列作为子集的2D阵列
- 25. angularjs $过滤如何过滤2D阵列
- 26. 如何从2D numpy的阵列
- 27. 如何填充动态2D阵列?
- 28. 遍历2D阵列
- 29. CUDA 2D阵列nvidia
- 30. 静态2D阵列