注意:本文經過原作者授權轉譯,轉載請標明出處
原文地址:http://mrjester.hapisan.com/04_MC68/Sect06Part06/Index.html
條件允許建議閱讀原文,網上非中文資料還是較多,當作鍛煉英文豈不美哉
翻譯若有不足之處歡迎批評指正
譯文:
"誠信是美德的一部分也是社會中極為重要的一部分" ---- 托馬斯 傑斐遜 (Thomas Jefferson, 1743-1826),美國第三任總統
簡介
這些分支指令會在某個數值大於或是小於一個特定的值的時候去分支跳轉。它們只和有符號數
打交道,也就是說如果使用的是字節
長度的話,80
是最小值,而7F
是最大值
所以如果我們比較FE
和02
的話,FE
會被認為比02
要小
BGE 指令
BGE (Branch on Greater than or Equal) - 大於等於 (≥) 時分支
如果下面的條件中任何一個滿足的話,目的操作數
會被加到PC
里,然后 m68k 會在PC
里的新的地址處繼續執行:
N
和V
狀態標志內容都是0
N
和V
狀態標志內容都是1
否則的話,這條指令會被忽略
例子
這條指令通過N
和V
兩個狀態標志一起來檢測計算結果是不是大於等於 (≥):
cmpi.w #$0020, d0
bge.s Is20orHigher
move.w #$0000, d0
Is20orHigher:
我們假定d0
的內容是00009800
,CMP
指令使用的長度是字
,所以會在0020
與9800
之間比較
9800
並不大於等於0020
,所以指令會被忽略
如果我們假設d0
的內容是00000492
,CMP
指令使用的長度是字
,所以會在0020
與0492
之間比較
0492
大於0020
,所以 m68k 會跳轉到Is20orHigher
處繼續執行
BGT 指令
BGT (Branch on Greater Than) - 大於 (>) 時分支
如果下面的條件中任何一個滿足的話,目的操作數
會被加到PC
里,然后 m68k 會在PC
里的新的地址處繼續執行:
Z
,N
和V
的內容全都是0
Z
的內容是0
並且N
和V
的內容都是1
否則的話,這條指令會被忽略
例子
這條指令通過Z
,N
和V
三個狀態標志一起來檢測計算結果是不是大於 (>):
cmpi.w #$0020, d0
bgt.s IsHigher
move.w #$0000, d0
IsHigher:
我們假定d0
的內容是00000020
,CMP
指令使用的長度是字
,所以會在0020
與0020
之間比較
0020
等於0020
,所以指令會被忽略
如果我們假設d0
的內容是00000492
,CMP
指令使用的長度是字
,所以會在0020
與0492
之間比較
0492
大於0020
,所以 m68k 會跳轉到IsHigher
處繼續執行
BLE 指令
BLE (Branch on Less than or Equal) - 小於等於 (≤) 時分支
如果下面的條件中任何一個滿足的話,目的操作數
會被加到PC
里,然后 m68k 會在PC
里的新的地址處繼續執行:
Z
的內容是0
N
的內容是0
並且V
的內容是1
N
的內容是1
並且V
的內容是0
否則的話,這條指令會被忽略
例子
這條指令和BGE
恰恰相反:
cmpi.w #$0020, d0
ble.s Is20orLower
move.w #$0000, d0
Is20orLower:
我們假定d0
的內容是00009800
,CMP
指令使用的長度是字
,所以會在0020
與9800
之間比較
9800
小於0020
,所以 m68k 會跳轉到Is20orLower
處繼續執行
如果我們假設d0
的內容是00000492
,CMP
指令使用的長度是字
,所以會在0020
與0492
之間比較
0492
並不小於等於0020
,所以指令會被忽略
BLT 指令
BLT (Branch on Less Than) - 小於 (<) 時分支
如果下面的條件中任何一個滿足的話,目的操作數
會被加到PC
里,然后 m68k 會在PC
里的新的地址處繼續執行:
N
的內容是0
並且V
的內容是1
N
的內容是1
並且V
的內容是0
否則的話,這條指令會被忽略
例子
這條指令和BGT
恰恰相反:
cmpi.w #$0020, d0
blt.s IsLower
move.w #$0000, d0
IsLower:
我們假定d0
的內容是00000020
,CMP
指令使用的長度是字
,所以會在0020
與0020
之間比較
0020
等於0020
,所以指令會被忽略
如果我們假設d0
的內容是00008492
,CMP
指令使用的長度是字
,所以會在0020
與8492
之間比較
8492
小於0020
,所以 m68k 會跳轉到IsLower
處繼續執行
目錄
上一篇:[轉譯][馬基 傑斯特(MarkeyJester) 摩托羅拉68000 入門教程] 陸 - 條件分支 | 5. BVC & BVS (溢出條件分支) 指令
下一篇:[轉譯][馬基 傑斯特(MarkeyJester) 摩托羅拉68000 入門教程] 陸 - 條件分支 | 7. 無符號比較分支 (BCC, BHI, BLS, BCS)