c - SIC/XE 我可以将新的价值赋予一个已经有自己价值的价值吗?
问题描述
嗨,我正在我的 uni 上学习系统软件课程,并且正在使用 SIC 制作汇编代码。我已经用 C 编写了一个代码。所以我将它翻译成 SIC,我有一个关于 SIC 变量策略的问题。我可以重复使用人口来存储计算出的数字吗?就像 C 变量一样?我认为它太基础了,所以当我搜索它时我无法得到答案。谢谢!
int main(void) {
double current_population = 11778;
int birth = 180;
int death= 120;
double immigrant = 53.333;
/*one day is 24 hours, so it's1440 minute
the value of birth and death, immigrant are based on a day.
*/
for (int i = 0; i < 7; i++) {
current_population = current_population + birth + immigrant - death;
printf("%d day의 인구 : %d\n", i + 1, (int)current_population);
}
return 0;
}
这是未完成的 sic 代码(非常粗糙)
LDX ZERO
LDA population
ADD birth
SUB death
ADD immigrant
STA population
population WORD 11778
birth WORD 180
death WORD 120
immigrant WORD 53
解决方案
在 SIC 代码中,population
不是变量。它是与地址相关联的名称。汇编代码population WORD 11778
告诉汇编程序将值 11778 放在一个字中的下一个位置(按汇编程序执行汇编代码的顺序)并population
与该地址相关联。
那么问题不在于您是否可以为其分配新值,population
而是您是否可以将新值存储到内存中的该位置。对 SIC 的简要介绍表明它是一个非常简单的计算机模型,并且没有提供只读存储器。在这种情况下,是的,您可以将新值存储到population
.
在生产中使用的典型汇编程序中,而不是课堂练习中,有在多个部分中准备代码和数据的规定。可能有一个部分用于说明,另一个部分用于只读数据,另一部分用于可修改数据,并且可能还有其他用于特殊目的的部分。汇编器具有用于指定以下行用于哪个部分的指令。在这样的汇编程序中,如果您将数据与指令一起定义,它将进入代码部分,有时也称为文本部分。加载程序时,代码部分通常标记为只读。因此,此类部分中的数据在加载后无法修改。要拥有可修改的数据,您必须将其放入不同的部分。
SIC 似乎不支持这样的多个部分。大概它组装的所有东西都进入一个可修改的部分。
推荐阅读
- deployment - Firebase 托管部署策略
- java - 将鼠标坐标转换为子面板
- php - 将php数组格式化为树状结构
- .net - .Net Core UnauthorizedAccessException 对路径“D:\home\site\wwwroot\api\wwwroot”的访问被拒绝
- node.js - 在 Google App Engine 上运行的 NextJs 应用程序的正确配置是什么?
- node.js - 如何检测永远不会解决的承诺?
- scala - 如何使用流式查询处理来自 Kafka 的 Scala 案例类对象?
- jquery - 此 jquery 代码在显示和关闭菜单中无法正常工作
- python - 如何在 Python 中解决非线性规划问题
- excel - 返回 WEEKNUM 的 VBA 表单