簡體   English   中英

比較Motorolla 68k中的兩個地址寄存器

[英]Compare two Address Registers in Motorolla 68k

我有一個簡單的程序,我試圖理解如何比較兩個地址寄存器,如果A1小於或等於A2則分支

因此:

    ORG    $8000
START:                  ; first instruction of program

    CMP A2,A1
    BLE LOOP ;if A1 is less then or equal to A2, BRANCH

LOOP: 

* Put variables and constants here

    END    START        ; last line of source

這是正確的做法嗎? 如果我在這里使用宏CMPA會有什么不同呢?

您必須使用cmpa與68K上的地址cmpa進行比較。 你沒有選擇。

此外,最好包括大小后綴.L以確保比較完整的32位而不是低16位的符號擴展版本。

CMPA.L A2,A1
BLE.S  LOOP

我肯定會使用cmp.L ,因為當沒有設置大小時,許多68k匯編器默認為.w,然后你最終會使用CPU符號擴展低16位的地址內容,然后將它們作為32位數量進行比較(68k僅適用於地址算術)。

相反,當cmp 目的地是地址寄存器時,大多數匯編程序(至少我已知)將自動選擇cmp a

此外,我認為沒有理由與ble簽署地址比較。 這里的無符號比較更合適,例如:

     lea   Start,a0
     lea   Start+size,a1
loop:clr.l (a0)+
     cmp.l a0,a1
     bhi.s loop

暫無
暫無

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

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