2012-10-29 41 views
0

我之前發佈的問題是如何爲這個程序定義十六進制常量,有人幫我解決這個問題,現在我試圖弄清楚這個程序是否運行正常。在68000程序集中的邏輯表達式

該程序旨在計算邏輯表達式X'Y + X'Z + YZ並將結果存入D0。當程序完成時,我需要用二進制顯示D0的內容。下面是我有(排列有一點這裏混亂,但它在彙編(易68K)排列):

START: MOVE X,D0 
    NOT D0 
    MOVE D0,D1 
    MOVE Y,D2 
    AND D2,D0 
    AND Z,D1 
    AND Z,D2 
    OR D1,D0 
    OR D2,D0 
EXIT: BRA EXIT 
X: DC $000F 
Y: DC $0033 
Z: DC $0055 

這是我結束了在各自的數據寄存器:

D0: 00000071 D1:00000050 D2:00000011

忽略,其結果是應該以二進制形式示...是,這是一個邏輯表達式的事實,並且我只用AND和OR,切忌結果在D0中是1還是0?因爲X,Y和Z都是非零常量,表達式的計算結果爲1(YZ = 1)...我在程序中犯了錯誤嗎?或者我的理解關閉了?

謝謝

回答

3

邏輯表達式是針對寄存器中的每一位同時執行的。

在C語言中,例如(a) printf(「True」);整數1,2,7和-12313在 的上下文中都被認爲是相等的。 else printf(「False」); (a || b)printf(「a不是零或者可能b不是零或者甚至兩者都不爲零」);如果(a || b)printf(「a不是零或者可能b不是零或者甚至兩者都不爲零」),這同樣適用於 ;

但對於位寬的邏輯運算

00000000001 (binary) == 1 in decimal 
00000000010 (binary) == 2 in decimal 
------------------------------------ 
00000000011 = 1 OR 2 == 3 in decimal 
00000000000 = 1 AND 2 == 0 in decimal