LONGEPASS
Q56.

組合語言中,DA A 為BCD 碼調整的指令。在加法指令執行後,ACC= 0A1H、CY=0、AC=1,則此時執行DA A 指令後,ACC 的值為何?

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

難易度分析

3 / 5

題目要求判斷DA指令執行後ACC的結果,需掌握低四位與高四位的調整條件及旗標的影響,並能快速算出最終的BCD值,屬於需要一定基礎知識與快速推理的中等難度題。

正確答案:①07H

① 07H:DA A 指令執行時,因低四位 1H ≤ 9 且 AC=1,需對低四位加 6 調整;高四位 A(10) > 9,需對高四位加 6 調整,故 0A1H + 66H = 107H,進位 CY 變為 1,ACC 保留低 8 位得 07H。

錯誤選項解析

  • ② 17H:17H 僅對高四位加 6 而忽略低四位 AC=1 的調整條件,正確應同時對高低四位各加 6,結果應為 07H 而非 17H。
  • ③ 27H:27H 的計算方式錯誤,未正確套用 BCD 碼十進位調整規則,高四位 A(10) 加 6 後應進位,ACC 保留 8 位元結果為 07H。
  • ④ 37H:37H 完全誤解 DA A 指令的調整機制,正確做法是判斷 AC 與 CY 旗標及半位元值是否大於 9,再決定是否加 6,結果應為 07H。
Learning Tip

"DA A(Decimal Adjust Accumulator) 是 8051 組合語言中專用於 BCD 碼加法 的調整指令。判斷規則為:若低四位 >9 或 AC=1,則低四位加 6;若高四位 >9 或 CY=1,則高四位加 6。本題關鍵在於 AC=1 觸發低四位調整,且 高四位 A(10) > 9 觸發高四位調整,兩者同時進行加 66H 的運算,產生進位後 ACC 保留 8 位元結果。常考陷阱為忽略 AC 旗標或誤算進位後的截斷值。"

學員答題分佈

①07H0%
②17H0%
③27H0%
④37H0%

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

相似類型題目