2013-04-25 106 views
0

瞭解摩托羅拉如果我有:嗨,需要一點點幫助彙編

0000 3304 alpha: dc.w 5,16,4,-2 

和我的指示是:sub.w alpha+2,D0

是我的阿爾法在0000 33004還是在00 05 00 01 00 04 FE

+0

你有6800指令集家族的好書嗎? – 2013-04-25 03:56:42

+0

在大學時代,我使用了一款針對該芯片組的彙編器。我認爲它使用了簡化的指令集拱門。 – 2013-04-25 04:05:20

+1

不要粗魯,但這是如何幫助?我有說明手冊,但htat does not – 2013-04-25 04:32:47

回答

3

dc.w一個=常數定義字,其中a是定義值

sb.w A,B =減法字,其中a是源和b是目的地

指令

0000 3304 alpha: dc.w 5,16,4,-2 

相當於:

0000 3304 alpha: dc.w 05 
      alpha: dc.w 16 
      alpha: dc.w 04 
      alpha: dc.w -02 

爲了打破了位越多,第一指令是說,起始地址爲,定義的的值然後定義的的值,則a的等價值。由於每個這些值都被指定爲一個字,所以無論何時定義一個新值,您都必須將該值的地址遞增十六進制2,每個字的長度爲兩個字節。

常數都被定義後,下面的值將住在下面的地址

0000 3304 -> 0x05 
0000 3306 -> 0x10  
0000 3308 -> 0x04 
0000 330A -> 0xFE 

什麼指令sub.w alpha+2,D0是說,是起始於α(地址0000 3304)移動2個字節,減去該值在那個地址從數據寄存器D0的值。

所以,

alpha+2 =地址0000 33006

其具有0x10的值。

無論數據寄存器D0的值是什麼,從它減去0x10

+0

D0:0f0b 3116A0:0000 3170 – 2013-04-25 06:37:24

+0

你是什麼意思減去0x04? – 2013-04-25 06:38:12

+0

@HaroldB你會從數據寄存器中的值減去4 d0 – 2013-04-25 19:03:55