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

如何在Little Man Computer(LMC)中实现间接寻址访问数据?

在Little Man Computer(LMC)中实现间接寻址

你之前用两次LDA的思路走不通,问题出在第二次LDA get——get是代码标签,这条指令加载的是该标签位置的指令内容(也就是第一条LDA temp),根本不是你要的目标地址指向的数据。

下面分两种场景给你正确的实现方式:

  • 场景1:模拟器支持LDI(间接加载)扩展指令
    这是最简便的方式,直接用LDI temp就能完成间接寻址。这条指令的逻辑是:先读取temp存储的地址值,再加载该地址对应的数据到累加器。

  • 场景2:只能使用标准LMC基础指令集
    得通过临时存储单元中转,步骤如下:

    1. 用LDA temp把temp里存的目标地址加载到累加器
    2. 用STA addr_temp把这个地址值存到临时单元addr_temp
    3. 用LDA (addr_temp)(部分模拟器语法是LDA *addr_temp)间接加载数据——括号/星号表示取该单元存储的地址对应的数据

给你一个完整的标准指令实现示例:

LDA temp    ; 加载temp中存储的目标地址
        STA addr    ; 将地址暂存到addr单元
        LDA (addr)  ; 间接加载addr指向地址的数据
        OUT         ; 输出结果
        HLT         ; 停机

temp    DAT 50      ; temp中存储的目标地址是50
addr    DAT 0       ; 临时存储地址的单元
50      DAT 100     ; 目标地址50中存放的数据是100

如果用LDI指令,代码可以简化成:

LDI temp    ; 直接间接加载temp指向地址的数据
        OUT
        HLT

temp    DAT 50
50      DAT 100

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 01:10:56