44 關於 Intel x86 處理器的上鎖指令,下列敘述何者正確?
(A) BTS 指令執行後不會影響進位旗號
(B) BTR 指令只能執行測試功能
(C) BTS 指令將被選定之位元值存入狀態暫存器之進位旗號內
(D) BTR 和 BTS 指令都無法進行位元的清除
統計: A(0), B(0), C(7), D(1), E(0) #3399891
詳解 (共 2 筆)
【第一步:找關鍵字】
BTS(Bit Test and Set)
→ 測試位元 + 設為 1
BTR(Bit Test and Reset)
→ 測試位元 + 清為 0
進位旗號(Carry Flag, CF)
→ CPU 裡面的一個「小記錄格」,會記錄「剛剛那個位元原本是什麼」
關鍵觀念:
?「Bit Test 系列指令都會把原本的位元值丟進 CF」
【第二步:白話翻譯】
這題在問:
?「CPU 有一些指令可以改某一個 bit(0 或 1),同時還會記錄這個 bit 原本是什麼,哪個敘述是正確的?」
【第三步:解題思路】
這題在考什麼觀念?
? x86 的 Bit 操作指令(BTS / BTR / BT)與 Carry Flag 的關係
解題步驟
-
先搞懂三個指令:
-
BT(Bit Test)
→ 只「看」位元,不改 -
BTS(Bit Test and Set)
→ 記錄原本值 + 把 bit 設為 1 -
BTR(Bit Test and Reset)
→ 記錄原本值 + 把 bit 設為 0
-
-
重點規則:
? 所有「Bit Test 類」指令
➡️ 都會把「原本的 bit 值」放進 CF
-
用生活比喻:
你去按一個燈的開關:
-
BTS → 不管燈原本怎樣,最後一定變亮(1)
-
BTR → 不管燈原本怎樣,最後一定變暗(0)
-
同時你會記住「剛剛燈原本是亮還是暗」→ 存在 CF
【第四步:選項分析】
-
(A) BTS 指令執行後不會影響進位旗號
❌ 錯
→ BTS 一定會改 CF(存原本的 bit)
-
(B) BTR 指令只能執行測試功能
❌ 錯
→ BTR 不只測試,還會「清除 bit(設為 0)」
-
(C) BTS 指令將被選定之位元值存入狀態暫存器之進位旗號內
✅ 正確
→ 這正是 BTS 的核心行為
→ 「先記錄,再修改」
-
(D) BTR 和 BTS 指令都無法進行位元的清除
❌ 錯
→ BTR 就是「清除 bit(設為 0)」
【觀念補充與延伸】
核心觀念定位
這題屬於:
? 系統程式 → CPU 指令集(Instruction Set)
? 偏細節,但常考「觀念記憶題」
法條或定義
Carry Flag(CF)
→ CPU 狀態暫存器的一部分,用來記錄運算結果或特定位元資訊
白話:
? 就像「小筆記」,記錄剛剛發生什麼
觸類旁通(舉一反三)
對比概念:
-
BT → 只看,不改
-
BTS → 設 1
-
BTR → 設 0
? 三個都會:存原值到 CF
變化題型:
-
問哪個會改 bit
-
問 CF 裡面存什麼
-
混 BT / BTS / BTR 名稱(很常出陷阱)
【記憶口訣】
?「BT看、BTS設1、BTR設0,全都會存CF」
【常見陷阱】
學生最容易搞混的地方
-
以為只有 BT 才會影響 CF
-
忘記 BTS / BTR 也會存原值
心理盲點
看到「Set / Reset」就只注意修改
? 忽略「Test」這件事(其實也會記錄)
避坑指南
看到「BT 開頭」:
? 一律記住:
「先存 CF,再做動作」