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 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!
相似類型題目
下列哪一組數值運算,將導致輔助進位(Auxiliary Carry)旗標為1?
設一採用2 的補數之加法器,配合有5 個位元之狀態暫存器由左而右依序為:1.進位旗標:0 表示沒有進位、1 表示有進位,2.零值旗標:0 表示結果非零、1 表示結果為零,3.溢位旗標:0 表示沒有溢位、1 表示有溢位,4.正負旗標:0 表示結果為正、1 表示結果為負,5.偶同位旗標:0 表示有奇數個1、1 表示有偶數個1。現有二數-1 及+1 相加,則其運算完後,此PSW 為何?
兩個八位元有號數相加,下列哪一組會產生溢位?
下列何組16 進制資料用來作RAM 的測試最好?
若採用偶同位的方式來傳送ASCII 碼資料,則"C"為下列何者?