44 關於 Intel x86 處理器的上鎖指令,下列敘述何者正確?
(A) BTS 指令執行後不會影響進位旗號
(B) BTR 指令只能執行測試功能
(C) BTS 指令將被選定之位元值存入狀態暫存器之進位旗號內
(D) BTR 和 BTS 指令都無法進行位元的清除

答案:登入後查看
統計: A(0), B(0), C(7), D(1), E(0) #3399891

詳解 (共 2 筆)

#7319137

【第一步:找關鍵字】

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 的關係

解題步驟

  1. 先搞懂三個指令:

    • BT(Bit Test)
      → 只「看」位元,不改

    • BTS(Bit Test and Set)
      → 記錄原本值 + 把 bit 設為 1

    • BTR(Bit Test and Reset)
      → 記錄原本值 + 把 bit 設為 0

  1. 重點規則:

? 所有「Bit Test 類」指令
➡️ 都會把「原本的 bit 值」放進 CF

  1. 用生活比喻:

你去按一個燈的開關:

  • 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

變化題型:

  1. 問哪個會改 bit

  2. 問 CF 裡面存什麼

  3. 混 BT / BTS / BTR 名稱(很常出陷阱)

【記憶口訣】

?「BT看、BTS設1、BTR設0,全都會存CF」

【常見陷阱】

學生最容易搞混的地方

  • 以為只有 BT 才會影響 CF

  • 忘記 BTS / BTR 也會存原值

心理盲點

看到「Set / Reset」就只注意修改
? 忽略「Test」這件事(其實也會記錄)

避坑指南

看到「BT 開頭」:

? 一律記住:
「先存 CF,再做動作」

0
0
#6786479
題目解析 本題考察的是 Intel x8...
(共 937 字,隱藏中)
前往觀看
0
0