SIC / XE是否可以将新值添加到已经具有自己值的值?

时间:2018-09-18 14:52:47

标签: c

您好,我正在uni上学习系统软件课程,并且正在使用SIC编写汇编代码。我已经用C编写了代码。因此,我将其翻译为SIC,并且对SIC的可变策略有疑问。 我可以重复使用人口来存储计算出的数字吗?就像C变量一样? 我认为这太基本了,因此我在Google上找不到答案。 谢谢!

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

1 个答案:

答案 0 :(得分:0)

在SIC代码中,population不是变量。它是与地址关联的名称。汇编代码population WORD 11778告诉汇编程序将值11778放在下一个位置的单词中(随着汇编程序通过汇编代码的顺序),并将population与该地址关联。

然后,问题不在于是否可以为population分配新值,而是是否可以将新值存储到内存中的该位置。对SIC的简要介绍表明它是一种非常简单的计算机模型,并且没有提供只读存储器。在这种情况下,可以,您可以将新值存储到population的位置。

在生产而不是课堂练习中使用的典型汇编程序中,有条规定可以在多个部分中准备代码和数据。可能会有一个部分用于说明,另一部分用于只读数据,另一部分用于可修改数据,可能还有其他部分用于特殊用途。汇编器具有用于指定以下各行用于哪一部分的指令。在这样的汇编器中,如果您将数据和指令一起定义,它将进入代码部分,有时也称为文本部分。加载程序时,代码段通常标记为只读。因此,加载后无法修改此部分中的数据。要拥有可修改的数据,您必须将其放在其他部分。

SIC似乎不支持这样的多个部分。据推测,它组装的所有内容都归为一个可修改的部分。