SIC / XE我可以将新值添加到已具有其自身值的值吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SIC / XE我可以将新值添加到已具有其自身值的值吗?相关的知识,希望对你有一定的参考价值。

嗨,我正在我的大学上学习系统软件课程,我正在用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
", 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似乎不支持这样的多个部分。据推测,它组装的所有东西都进入了一个可修改的部分。

以上是关于SIC / XE我可以将新值添加到已具有其自身值的值吗?的主要内容,如果未能解决你的问题,请参考以下文章

将新分区添加到已分区的配置单元表

如何使用 where 将新值插入表中

如何将新的 django 应用程序添加到已部署的 django 项目(使用 nginx、gunicorn)?

即使原始模型中未指定新值,如何将新值添加到现有 MongoDB 数据库中

Mongoose:如何将新值推送到特定键中?

将新线程注册到已定义的屏障