Cho đoạn mã Assembler sau:MOV A, #0C3HMOV 20H, #77HADD A, 20HADDC A, 20HKết quả của thanh ghi A là:
Đáp án đúng: D
Đầu tiên, gán giá trị #0C3H (tức 195 trong hệ thập phân) vào thanh ghi A. Sau đó, gán giá trị #77H (tức 119 trong hệ thập phân) vào ô nhớ 20H.
Tiếp theo, thực hiện phép cộng A = A + 20H, tức A = 195 + 119 = 314 (trong hệ thập phân). Trong hệ hexa, 314 = 13A. Vậy A = 3AH và cờ nhớ Cy = 1.
Cuối cùng, thực hiện phép cộng có nhớ A = A + 20H + Cy, tức A = 3AH + 77H + 1 = 58 + 119 + 1 = 314 + 1= 315 (trong hệ thập phân). Trong hệ hexa, 315 = 13B. Vậy A = 3BH.
Tuy nhiên, do đây là hệ 8-bit nên giá trị của A sẽ là 3BH sau khi thực hiện phép cộng có nhớ lần thứ 2, tức A = (13B) mod 256 = (3B)hex (do 13B hex = 315 dec và 315 > 255, 315 - 256 = 59 = 3B hex). Như vậy cờ Cy=1 vì có tràn số. Vì thế đáp án đúng là B2H.
ADD A, 20H: A = A + (20H) = C3H + 77H = 13AH (314) vậy A = 3AH, Cờ nhớ CY = 1. Cờ phụ AC = 0
ADDC A, 20H: A = A + (20H) + CY = 3AH + 77H + 1 = 0B2H (178) vậy A = 0B2H, Cờ nhớ CY = 0. Cờ phụ AC = 1
Vậy, kết quả cuối cùng của thanh ghi A là B2H.