簡體   English   中英

68000匯編中的邏輯表達式

[英]Logic Expression in 68000 assembly

我早些時候發布了詢問如何為該程序定義十六進制常量的方法,有人幫了我忙,現在我想弄清楚該程序是否正確運行。

該程序旨在計算邏輯表達式X'Y + X'Z + YZ,並將結果放入D0。 程序完成后,我需要以二進制形式顯示D0的內容。 這就是我所擁有的(這里的對齊有些混亂,但是在匯編器中對齊(EASy 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)...我在程序中出錯了嗎? 還是我的理解力下降了?

謝謝

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

在C語言中,例如,如果if(a)printf(“ True”);整數1,2,7和-12313都被認為是相等的; 否則printf(“ False”);

如果(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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM