JavaScript is required

Cho đoạn mã Assembler sau:MOV A, #0FFHADD A, #2JZ SKIPADDC A, #02HSJMP EXITSKIP: ADDC A, #01HEXIT: ENDKết quả của thanh ghi A là:

A.

0FFH

B.

03H

C.

04H

D.

02H

Trả lời:

Đáp án đúng: C


Đoạn mã Assembler thực hiện các phép toán trên thanh ghi A như sau: 1. **MOV A, #0FFH**: Gán giá trị 0FFH (255 trong hệ thập phân) vào thanh ghi A. 2. **ADD A, #2**: Cộng giá trị 2 vào thanh ghi A. Kết quả là A = 0FFH + 2 = 101H (257 trong hệ thập phân). Tuy nhiên, vì thanh ghi A chỉ có 8 bit, giá trị thực tế trong A sẽ là 01H (vì 257 mod 256 = 1). 3. **JZ SKIP**: Kiểm tra xem cờ Zero (Z) có được đặt hay không. Cờ Zero được đặt nếu kết quả của phép toán trước đó bằng 0. Trong trường hợp này, A = 01H, khác 0, nên cờ Zero không được đặt. Do đó, lệnh JZ SKIP sẽ không nhảy tới nhãn SKIP. 4. **ADDC A, #02H**: Cộng giá trị 2H (2 trong hệ thập phân) vào thanh ghi A, đồng thời cộng thêm giá trị của cờ Carry (C). Vì phép cộng trước đó (ADD A, #2) không tạo ra Carry, cờ Carry vẫn bằng 0. Do đó, A = 01H + 02H + 0 = 03H. 5. **SJMP EXIT**: Nhảy vô điều kiện tới nhãn EXIT. 6. **SKIP: ADDC A, #01H**: Nhãn này bị bỏ qua vì lệnh JZ SKIP không nhảy tới đây. 7. **EXIT: END**: Kết thúc chương trình. Vậy, giá trị cuối cùng của thanh ghi A là 03H.

Câu hỏi liên quan