LONGEPASS
Q74.

利用堆疊器交換C、D 兩暫存器的資料,下列哪些敘述正確?

儀表電子 · 甲級 · 嵌入式系統概論與應用及程式設計 · Q74

難易度分析

3 / 5

本題考驗對堆疊 LIFO 機制的掌握,並要求在多個 PUSH 與 POP 的排列中正確辨識哪一組能完成資料交換。題目僅提供指令序列,無額外圖像或提示,需自行推斷彈出順序與覆蓋情形。由於涉及多重選擇且需排除覆蓋錯誤,難度評為中等。

正確答案 (複選):①, ②

  • ① PUSH C、PUSH D、POP C、POP D:依序將 C、D 推入堆疊後,堆疊由底至頂為 [C, D]。執行 POP C 時取出棧頂的 D 值寫入 C,再執行 POP D 時取出棧底的 C 值寫入 D,利用 LIFO(後進先出) 特性成功完成交換。
  • ② PUSH D、PUSH C、POP D、POP C:依序將 D、C 推入堆疊後,堆疊由底至頂為 [D, C]。執行 POP D 時取出棧頂的 C 值寫入 D,再執行 POP C 時取出棧底的 D 值寫入 C,同樣符合 堆疊後進先出 的交換原理。

錯誤選項解析

  • ③ PUSH D、PUSH C、POP C、POP D:推入順序為 D、C,堆疊由底至頂為 [D, C]。但 POP C 會先取出棧頂的 C 值寫回 C(值不變),POP D 再取出棧底的 D 值寫回 D(值不變),導致 兩暫存器內容均未改變,無法達成交換目的。
  • ④ PUSH C、POP D、PUSH D、POP C:執行 PUSH C 後堆疊為 [C],POP D 使 D 取得 C 的值,此時 D 已等於 C 的原始值。接著 PUSH D 推入的是 C 的值,最後 POP C 又取回 C 的原始值,結果 C 與 D 均為 C 的原始值,D 的原始資料已遺失。
Learning Tip

"此題核心考點為 堆疊的 LIFO(後進先出)特性 與 PUSH/POP 的配對順序。常見陷阱在於混淆 PUSH 與 POP 的執行順序:必須確保「最後推入的資料最先彈出到另一個暫存器」。實務上需特別注意,當 POP 的目標暫存器與之前 PUSH 的來源相同 時,會導致資料覆蓋而無法完成交換。"

學員答題分佈

①PUSH C、PUSH D、POP C、POP D0%
②PUSH D、PUSH C、POP D、POP C0%
③PUSH D、PUSH C、POP C、POP D0%
④PUSH C、POP D、PUSH D、POP C0%

此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!

相似類型題目