我创建了一个表格,其中有各种数据。我需要从该表中取出数据,对其进行更改,然后将其写回相同的位置,但是,由于某种原因,数据未写入该位置
这是我的代码
CSEG AT 3h
precos: DB 100, 200, 150, 170
Lookup:
MOV DPTR, #precos ; DPTR points to the start of the lookup table
MOV A, #0 ; A is the offset from the start of the lookup table
MOVC A, @A + DPTR ; Moves the (A+1)th item into the Accumulator
ADD A, #20
MOV R1, #precos
MOV @R1, A
JMP Lookup
当我遍历代码时,A 从 0 到 100 到 120,然后它应该将其写入地址 3(表中的位置 0),再次取回它,再添加 20,等等... 像这样工作:
A = 0 - first iteration
A = 100
A = 120
A = 0 - second iteration
A = 100
A = 120
etc
我真正需要的是一种访问内存位置、更改它然后更新它的方法。这个:
A = 0 - first iteration
A = 100
A = 120
A = 0 - second iteration
A = 120
A = 140
etc
我一直在阅读各种东西,但找不到有效的答案。例如,这里显示了说明,但没有给出输出示例: http ://www.keil.com/support/man/docs/is51/is51_mov.htm
编辑:我不一定需要完全使用这种方式。我只需要一种方法来拥有一个变量,就像在 C 中一样,并执行以下操作:
整数变量 = 100;
for(;;) 变量 += 20;