You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MARIE汇编语言循环问题:如何将1-20存入独立内存地址

MARIE循环存值到独立内存地址的解决方案

你的代码目前仅实现了1到20的循环计数,但缺少将每个数值存入独立内存单元的核心逻辑。要实现需求,需要借助指针变量结合MARIE的间接寻址指令(StoreI)来依次写入连续的内存地址,具体修改如下:

修改后的完整代码

Load One          // 初始化循环变量X为1
Store X
Load StartAddr    // 初始化指针,指向第一个存储地址
Store Ptr

Loop, Load X
Subt Twenty
SkipCond 000      // 如果X-20≥0(即X=20),跳转到结束
Jump Endloop

Load X
StoreI Ptr        // 间接存储:将X的值存入Ptr指向的内存地址
Load Ptr
Add One           // 指针+1,指向下一个内存单元
Store Ptr

Load X
Add One
Store X
Jump Loop

Endloop, Halt

// 数据段
X, Dec 0
One, Dec 1
Twenty, Dec 20
StartAddr, Dec 100  // 从内存地址100开始存储数值1-20
Ptr, Dec 0

关键逻辑说明

  • 指针初始化:用StartAddr定义存储起始地址,Ptr作为动态指针,初始指向这个起始位置。
  • 间接存储:StoreI Ptr指令会把当前X的值写入Ptr寄存器中保存的内存地址,实现动态写入不同单元。
  • 指针移动:每次存储完成后,将Ptr加1,确保下一次写入下一个相邻的内存地址。
  • 循环终止条件:当X等于20时,X-Twenty=0,SkipCond 000触发跳转,结束循环(此时20也会被存入内存,符合从1到20的需求)。

原代码的核心问题

原代码仅更新了循环变量X,没有任何存储到独立内存的操作;间接寻址需要搭配StoreI/LoadI指令使用,同时需要指针来管理目标地址,这部分是你之前缺失的。

内容的提问来源于stack exchange,提问作者Sergio Burciaga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 17:35:57