JavaScript is required

Cho đoạn mã Assembler sau:MOV A, #18HMOV 30H, #10HJB ACC.7, SKIPADD A, 30HMOV 30H, ASJMP EXITSKIP: SUBB A, 30HMOV 30H, AEXIT: ENDKết quả của ô nhớ 30H chứa:

A.

30H

B.

18H

C.

28H

D.

08H

Trả lời:

Đáp án đúng: C


Đoạn mã Assembler thực hiện các bước sau: 1. `MOV A, #18H`: Gán giá trị 18H (tương đương 24 trong hệ thập phân) vào thanh ghi A. 2. `MOV 30H, #10H`: Gán giá trị 10H (tương đương 16 trong hệ thập phân) vào ô nhớ 30H. 3. `JB ACC.7, SKIP`: Kiểm tra bit thứ 7 (bit cao nhất) của thanh ghi A. Nếu bit này bằng 1, chương trình nhảy đến nhãn `SKIP`. Trong trường hợp này, 18H = 00011000B, bit thứ 7 (tính từ phải sang trái, bắt đầu từ 0) là 0. Do đó, điều kiện không thỏa mãn và chương trình không nhảy. 4. `ADD A, 30H`: Cộng giá trị của ô nhớ 30H (10H) vào thanh ghi A. A = A + 30H = 18H + 10H = 28H. 5. `MOV 30H, A`: Gán giá trị của thanh ghi A (28H) vào ô nhớ 30H. 6. `SJMP EXIT`: Nhảy vô điều kiện đến nhãn `EXIT`. 7. `SKIP: SUBB A, 30H`: Nhãn `SKIP` này bị bỏ qua vì lệnh `JB` không nhảy đến đây. 8. `EXIT: END`: Kết thúc chương trình. Vậy, sau khi thực hiện đoạn mã, ô nhớ 30H sẽ chứa giá trị 28H.

Câu hỏi liên quan