assembly LC3中.WORD的等价物是什么?

2uluyalo  于 4个月前  发布在  其他
关注(0)|答案(1)|浏览(39)
; Define memory locations for user input buffer and opcode output
INPUT_BUFFER .WORD x2000 ; Memory location to store user input
OPCODE_OUTPUT .WORD x2004 ; Memory location to store opcode output

字符串
我试过了,可惜没用

kxkpmulp

kxkpmulp1#

您正在寻找.FILL ...来为初始化的数据字提供值,因为.word ...可以在其他汇编语言中工作。

INPUT_BUFFER .FILL x2000
OPCODE_OUTPUT .FILL x2004

字符串
使用.BLKW ...来提供零初始化数据字的数量的计数。
据我所知,没有equequate#define=来声明数字常量。
但是.word也没有声明一个常量,它声明了一个初始化的数据字,这正是.fill所做的。(不同之处在于.word ...通常接受多个逗号分隔的值,而LC-3的.fill ...每行需要一个参数。)
您可以将这些标签用于LC-3的间接加载和存储,LDISTI。例如,

LDI R0, INPUT_BUFFER


将使用位于INPUT_BUFFER的数据存储器位置来获取要放入R0的值的地址。因此,指令本身引用INPUT_BUFFER,而INPUT_BUFFER存储x2000,这是用于从R0的存储器中获取的有效地址。
也可以直接加载指针值:

LD R1, INPUT_BUFFER    # now have x2000 in R1
LDR R0, R1, #0         # load from location at R1+#0, so x2000


此外,您还可以在INPUT_BUFFER处增加/修改内存位置,

LD R1, INPUT_BUFFER
ADD R1, R1, #1
ST R1, INPUT_BUFFER


这会将INPUT_BUFFER的内存位置更改为x2001(假设它是从x2000开始的),因此,例如,下一个LDISTI到该内存位置将最终寻址内存位置x2001。
就我个人而言,对于小型算法,我更喜欢将指针加载到寄存器中并在那里使用它们,包括在循环中递增寄存器。LC-3有8个可用寄存器,与玛丽,HACK,LMC和其他一些相比,它是寄存器丰富的。

相关问题