JavaScript is required

Cho đoạn mã Assembler sau:

ORG 0000H

MOV A, #0C0H

CLR C

MOV R1, #40H

MOV 40H, #15H

SUBB A, R1

END.

Kết quả của thanh ghi A là:

A.

F0H

B.

ABH

C.

55H

D.

80H

Trả lời:

Đáp án đúng: D


Đoạn mã Assembler thực hiện các bước sau: 1. `MOV A, #0C0H`: Gán giá trị 0xC0 (192 trong hệ thập phân) cho thanh ghi A. 2. `CLR C`: Xóa cờ nhớ C (Carry flag), đặt C = 0. 3. `MOV R1, #40H`: Gán địa chỉ 40H cho thanh ghi R1. Thanh ghi R1 lúc này đóng vai trò là con trỏ. 4. `MOV 40H, #15H`: Gán giá trị 0x15 (21 trong hệ thập phân) vào ô nhớ có địa chỉ 40H. Vì R1 đang chứa địa chỉ 40H, nên có thể hiểu là giá trị 0x15 được gán vào ô nhớ mà R1 đang trỏ tới. 5. `SUBB A, R1`: Thực hiện phép trừ A = A - (R1) - C. Trong đó (R1) là giá trị tại địa chỉ mà R1 trỏ tới, tức là giá trị tại ô nhớ 40H (0x15). C là cờ nhớ (đang bằng 0). Vậy, A = 0xC0 - 0x15 - 0 = 0xC0 - 0x15 = 0xAB (171 trong hệ thập phân). Vậy kết quả cuối cùng của thanh ghi A là 0xAB.

Câu hỏi liên quan