JavaScript is required

Cho đoạn mã Assembler sau:MOV 30H, #02HMOV A, 30HMOV DPTR, #TABLEMOVC A, @A+DPTRMOV P1, ATABLE: DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90HKết quả của thanh ghi P1 là:

A.

02H

B.

30H

C.

0A4H

D.

0F9H

Trả lời:

Đáp án đúng: C


Đoạn mã Assembler thực hiện các bước sau: 1. `MOV 30H, #02H`: Gán giá trị 02H vào ô nhớ 30H. 2. `MOV A, 30H`: Gán giá trị của ô nhớ 30H (tức là 02H) vào thanh ghi A. 3. `MOV DPTR, #TABLE`: Gán địa chỉ của nhãn TABLE vào thanh ghi DPTR. TABLE là địa chỉ bắt đầu của bảng dữ liệu. 4. `MOVC A, @A+DPTR`: Lệnh này đọc một byte từ bộ nhớ chương trình (ROM). Địa chỉ để đọc được tính bằng tổng của giá trị trong thanh ghi A (02H) và giá trị trong thanh ghi DPTR (địa chỉ của TABLE). Như vậy, địa chỉ được đọc là TABLE + 2. 5. `MOV P1, A`: Gán giá trị đọc được từ bộ nhớ chương trình vào thanh ghi P1. TABLE được định nghĩa là `DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H`. Vậy TABLE + 0 là 0C0H, TABLE + 1 là 0F9H, TABLE + 2 là 0A4H. Do đó, thanh ghi P1 sẽ nhận giá trị 0A4H.

Câu hỏi liên quan