嗨,我正在我的大学上系统软件课,我正在用 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의 인구 : %dn", 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似乎不支持这样的多个部分。据推测,它组装的所有内容都集中在一个可修改的部分。