簡體   English   中英

了解68000組裝的“ S [cc]”指令

[英]Understanding the “S[cc]” instructions of 68000 assembly

我試圖了解68000匯編中的“ S [cc]”指令集。

指令的格式為:

S[cc] reg

[cc]是條件代碼(例如, SEQ意思是“等於則設置”)。 如果[cc]指定的條件為true,則將寄存器設置為全1 s。 否則,寄存器設置為全0 s。

我不了解一件事: S[cc]操作在哪里檢查條件是否成立? 它會檢查標志嗎?

如果是這樣,則比我要讓寄存器D0保留表達式D0 = D1的結果要多,這是我需要做的:

CMP D0,D1 ; this sets the flags according to the result
SEQ D0 ; sets D0 to true if the flags indicate the condition is true. else, sets it to false.

這個對嗎? 還是我不能正確理解此操作?

是的,它會檢查標志,當查看助記符時,這些標志應顯而易見:

SCC set on carry clear (!C)
SCS set on carry set (C)
SEQ set on equal (Z)
SGE set on greater than or equal (N.V + !N.!V)
SGT set on greater than (N.V.!Z + !N.!V.!Z)
SHI set on higher than (!C.!Z)
SLE set on less than or equal (Z + N.!V + !N.V)
SLS set on lower than or same (C + Z)
SLT set on less than (N.!V + !N.V)
SMI set on minus (i.e., negative) (N)
SNE set on not equal (!Z)
SPL set on plus (i.e., positive) (!N)
SVC set on overflow clear (!V)
SVS set on overflow set (V)
SF  set on false (i.e., set never) (0)
ST  set on true (i.e., set always) (1)

取自http://de.scribd.com/doc/418461/Easy-Motorola-68k-參考第51頁。我不了解68k ASM的第一件事。 ;-)

看看Motorola的68K程序員參考手冊 (1992)

3-23為您提供了答案:條件代碼檢查狀態寄存器中的位。 狀態寄存器不僅可以通過比較操作進行設置。 有關它們如何影響狀態寄存器的詳細信息,請參見其他助記符。

S<cc>確實檢查條件標志。 您可能會喜歡此簡單指南,了解如何使用CMP指令根據自己的喜好設置標志:

        CMP     src, dest

dest <  src     LT      CS      src >= dest     ; CS = LO
dest <= src     LE      LS      src >= dest
dest == src     EQ      EQ      src == dest
dest != src     NE      NE      src != dest
dest >  src     GT      HI      src <= dest
dest >= src     GE      CC      src <= dest     ; CC = HE
      signed ---^       ^--- unsigned

例如,如果要檢查無符號值src大於或等於dest ,請使用CMP src,dest然后使用SCS 如果值是帶符號的,但是您想要相同的測試( src >= dest ),請使用SLT

您可以使用TST指令將值與零進行比較,盡管在很多情況下,此操作是自動完成的(例如, MOVE也將同時進行測試)

        TST     dest

dest == 0       EQ
dest != 0       NE
dest <  0       MI
dest >= 0       PL

我還要指出, s[cc]僅影響最低有效字節(例如,如果您執行st d0 ,則d0將為$xxxxxxFFxx表示這將是寄存器上的所有內容)。 此外,在條件為真的情況下,字節將設置為$FF而不是1 在錯誤的情況下,它將被清除。

暫無
暫無

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

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