JavaScript is required

Cho đoạn mã Assembler sau:MOV R0, #7FHMOV 7EH, #00HMOV 7FH, #40HDEC @R0DEC R0DEC @R0Kết quả của ô nhớ có địa chỉ 7EH và 7FH là:

A.

(7EH) = 00H, (7FH) = 40H

B.

(7EH) = FFH, (7FH) = 3FH

C.

(7EH) = 3FH, (7FH) = FFH

D.

(7EH) = 40H, (7FH) = 00H

Trả lời:

Đáp án đúng: B


Đoạn mã Assembler thực hiện các thao tác sau: 1. `MOV R0, #7FH`: Gán giá trị 7FH (127 trong hệ thập phân) vào thanh ghi R0. R0 bây giờ chứa địa chỉ 7FH. 2. `MOV 7EH, #00H`: Gán giá trị 00H vào ô nhớ có địa chỉ 7EH. 3. `MOV 7FH, #40H`: Gán giá trị 40H vào ô nhớ có địa chỉ 7FH. 4. `DEC @R0`: Giảm giá trị của ô nhớ có địa chỉ được chứa trong R0 (tức là địa chỉ 7FH) đi 1. Giá trị của ô nhớ 7FH bây giờ là 40H - 1 = 3FH. 5. `DEC R0`: Giảm giá trị của thanh ghi R0 đi 1. R0 bây giờ chứa 7EH. 6. `DEC @R0`: Giảm giá trị của ô nhớ có địa chỉ được chứa trong R0 (tức là địa chỉ 7EH) đi 1. Giá trị của ô nhớ 7EH bây giờ là 00H - 1 = FFH (vì đây là số không dấu 8 bit, khi giảm 1 từ 0 sẽ tràn về giá trị lớn nhất là FFH). Vậy, kết quả cuối cùng là (7EH) = FFH và (7FH) = 3FH.

Câu hỏi liên quan