Q32.
下列那一程式片段恰可將暫存器A、B 的內容對調?
儀表電子 · 甲級 · 嵌入式系統概論與應用及程式設計 · Q32
難易度分析
3 / 5
題目考核學生對堆疊 LIFO 機制與兩步交換操作之理解。選項呈現多種推入彈出順序,正解須以相反順序取出,故需辨識正確的 PUSH / POP 配對。此設計屬於需基本概念掌握、包含一個主要錯誤提示的典型題型。
正確答案:①
①
:PUSH A 將 A 壓入堆疊,PUSH B 將 B 壓入堆疊(此時 B 在棧頂),POP A 將棧頂的 B 彈出至 A,POP B 將剩餘的 A 彈出至 B,成功完成 A、B 內容對調。
:PUSH A 將 A 壓入堆疊,PUSH B 將 B 壓入堆疊(此時 B 在棧頂),POP A 將棧頂的 B 彈出至 A,POP B 將剩餘的 A 彈出至 B,成功完成 A、B 內容對調。錯誤選項解析
- ②
:PUSH A、PUSH B 後,POP B 先將 B 彈回 B(原值),POP A 再將 A 彈回 A(原值),堆疊操作順序錯誤,無法完成對調。 - ③
:PUSH A 後立即 POP B,等於將 A 的值複製給 B,後續 PUSH B、POP A 又將 B 的值複製回 A,最終 A、B 均為原 A 的值,未實現對調。 - ④
:PUSH B 後 POP A,等於將 B 的值複製給 A,後續 PUSH A、POP B 又將 A 的值複製回 B,最終 A、B 均為原 B 的值,未實現對調。
Learning Tip
"堆疊(Stack) 為 後進先出(LIFO) 結構,利用堆疊交換兩個暫存器內容的關鍵在於:先依序 PUSH 兩個值,再以相反順序 POP 回目標暫存器。常見陷阱是混淆 PUSH/POP 的配對順序,切記最後 PUSH 的值會最先被 POP 出來。"
學員答題分佈
①0%
②0%
③0%
④0%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!
相似類型題目
利用堆疊器交換C、D 兩暫存器的資料,下列哪些敘述正確?
如下列程式所示,假設指令PUSH X 的動作是將暫存器X 的內容放入堆疊(stack),指令POP X 的動作是從堆疊取出一筆資料放入暫存器X 中。若暫存器的內容分別為:A=18、B=19、C=20、D=21 時,則依序執行下列程式後,暫存器A 的內容將為何?
假設指令PUTQ X 的動作是將暫存器X 的內容放入佇列(queue),指令GETQ X 的動作是從佇列取出一筆資料放入暫存器X 中,X 可為任意暫存器。若暫存器的內容分別為:A=18、B=19、C=20、D=21 時,則依序執行下列程式後,暫存器A 的內容將為何?
對於堆疊(Stack)記憶體及佇列(Queue)的儲存架構,下列敘述哪些正確?
下列那一指令不會改變程式計數器(program counter)?