0
我在計算天氣時無法使用註冊表中的數據內容加載註冊表,或者在執行LDI時間接地使用該值的地址加載寄存器。彙編語言 - LDI
例子:
x3000 LDI R6, far
x3001 ...(some command)
x3002 ...(some command)
x3003 far x6000
...
x6000 xf000
是什麼excecuting X3000後在R6中的數據?
我在計算天氣時無法使用註冊表中的數據內容加載註冊表,或者在執行LDI時間接地使用該值的地址加載寄存器。彙編語言 - LDI
例子:
x3000 LDI R6, far
x3001 ...(some command)
x3002 ...(some command)
x3003 far x6000
...
x6000 xf000
是什麼excecuting X3000後在R6中的數據?
以及藉此例如
.orig x3000
LDI R6, far
ADD R0,R0,#0
ADD R0,R0,#0
far .fill x6000
.end
組裝和轉儲
hexdump -C test.obj
00000000 30 00 ac 02 10 20 10 20 60 00 |0.... . `.|
0000000a
和手拆卸
0x3000: 0xAC02 ldi r6,#+2
0x3001: 0x1020 add r0,r0,#0
0x3002: 0x1020 add r0,r0,#0
0x3003: 0x6000
的LDI指令執行此:
DR = mem[mem[PC† + SEXT(PCoffset9)]];
setcc();
指令的低9位是0x002,其符號擴展爲0x0002。 PC是修改的電腦,所以當執行地址0x3000的指令時,電腦實際上是0x3001所以
DR = mem[mem[0x3001+0x0002]]
DR = mem[mem[0x3003]]
DR = mem[0x6000]
DR = 0xF000 using your definition for what lives at address x6000.
DR is r6 so 0xF000 is stored in r6.
0xF000 is considered a negative so the flags are N = 1, Z = 0, P = 0 if I understand the flags correctly.
真棒有道理!很好的解釋! – 2013-02-12 23:01:45