;*p = 5
ldc 5 ;
push
ld p ;load p's value
sti ;save 5 to mem[p's value]
ldi ;get the value
dout
ldc '/n'
aout
;*** q = 10
ldc 10
push
ld q ;ac = 17 *q's addr
ldi ;ac = 18 **q's addr
ldi ;ac = 19 ***q's addr
sti ;save 10 to ***q,this address is result
;x = ***q
ldi ;ld result,***q's value
st x ;x = ***q;
ld x ;
dout
ldc '/n'
aout
;*(p+1) = 6
ldc 6
push
ld p + 1 ;load (p+1)'s value,should be 81
sti ; save 6 to *(p+1)
ldi ;*(p+1).value,get the value
dout ;check the value if 6
ldc '/n'
aout
;*p = *p +1
ld p ;80
ldi ;addr 80 value: should be 5
add @1
push
ld p
sti ;save *p+1 to *p
ld p
ldi ;addr 80 value: should be 6
dout
ldc '/n'
aout
;r = p
ld p ;ac = p's addr
st r
ld r
dout
halt
p: dw 80
dw 81
q: dw * + 1; *q is next address.(* + 1)
dw * + 1; **q is next address.(* + 1)
dw * + 1; ***q is next address.(* + 1 = result)
result: dw 0
x: dw 0
r: dw 0
@1: dw 1
本文通过具体的汇编指令展示了如何进行内存地址的加载、存储及运算等基本操作,并演示了间接寻址的方式。
7万+

被折叠的 条评论
为什么被折叠?



