JavaScript is required

Cho đoạn mã Assembler sau:MOV A, #0C3HMOV R0, #0AAHADD A, R0Kết quả của c là:

A.

CY = 0, AC = 0

B.

CY = 0, AC = 1

C.

CY = 1, AC = 0

D.

CY = 1, AC = 1

Trả lời:

Đáp án đúng: C


Đầu tiên, ta có A = 0xC3 = 195 và R0 = 0xAA = 170. Thực hiện phép cộng A + R0 = 195 + 170 = 365. Vì thanh ghi A chỉ có 8 bit, nên kết quả sẽ là 365 mod 256 = 109 = 0x6D. Như vậy, A = 0x6D. Khi cộng, ta thấy 0xC3 + 0xAA = 0x16D. Do kết quả lớn hơn 255 (0xFF), nên bit nhớ CY (Carry Flag) được set lên 1 (CY = 1). Tiếp theo, ta xét bit nhớ phụ AC (Auxiliary Carry Flag), là bit nhớ từ nibble thấp (4 bit thấp) sang nibble cao (4 bit cao). Ta có 0x03 + 0x0A = 13 = 0xD. Vì giá trị này nhỏ hơn 16, nên không có nhớ từ nibble thấp sang nibble cao, vậy AC = 0. Vậy CY = 1, AC = 0.

Câu hỏi liên quan