Đáp án đúng: A
Đoạn mã Assembler thực hiện hai thao tác sau:
- MOV P3, #55H: Gán giá trị 55H (01010101B) cho thanh ghi P3.
- CLR P3.2: Xóa bit thứ 2 (bit có trọng số 22 = 4) của thanh ghi P3 về 0.
Ban đầu, P3 = 01010101B. Sau khi thực hiện CLR P3.2, bit thứ 2 (tính từ phải sang trái, bắt đầu từ 0) sẽ bị xóa về 0. Do đó, giá trị của P3 sẽ trở thành 01010001B, tương đương với 51H.
Câu hỏi liên quan
Đầu tiên, lệnh MOV P1, #0FFH sẽ gán giá trị 0FFH (tức 11111111 trong hệ nhị phân) cho thanh ghi P1. Sau đó, lệnh CLR P1.0 sẽ xóa bit thứ 0 (bit có trọng số nhỏ nhất) của thanh ghi P1 về 0. Như vậy, bit thứ 0 sẽ chuyển từ 1 thành 0, các bit còn lại giữ nguyên. Do đó, giá trị mới của P1 sẽ là 11111110 trong hệ nhị phân, tương ứng với FEH trong hệ thập lục phân.
1. `MOV R0, #20H`: Gán giá trị 20H cho thanh ghi R0. Điều này có nghĩa là R0 sẽ trỏ đến địa chỉ bộ nhớ 20H.
2. `MOV A, #3FH`: Gán giá trị 3FH cho thanh ghi A. A hiện tại chứa 3FH.
3. `MOV 20H, #75H`: Gán giá trị 75H cho ô nhớ có địa chỉ 20H. Vị trí nhớ 20H bây giờ chứa giá trị 75H.
4. `XCH A, @R0`: Lệnh này trao đổi giá trị giữa thanh ghi A và nội dung của ô nhớ mà R0 trỏ tới. Vì R0 đang trỏ đến địa chỉ 20H, nên giá trị của A sẽ được trao đổi với giá trị tại ô nhớ 20H. Trước lệnh này, A = 3FH và 20H = 75H. Sau lệnh này, A = 75H và 20H = 3FH.
Vậy, sau khi thực hiện đoạn mã, giá trị của thanh ghi A là 75H.
Trong vi điều khiển 8051, ngăn xếp (stack) được sử dụng để lưu trữ tạm thời dữ liệu, địa chỉ trả về khi gọi hàm hoặc ngắt. Thanh ghi SP (Stack Pointer) chứa địa chỉ của đỉnh ngăn xếp. Khi một byte dữ liệu được đẩy vào stack (push), SP sẽ tăng lên (hoặc giảm đi, tùy theo kiến trúc) trước khi dữ liệu được ghi vào bộ nhớ. Khi một byte dữ liệu được lấy ra khỏi stack (pop), SP sẽ giảm đi (hoặc tăng lên) sau khi dữ liệu được đọc ra.
Trong 8051, stack tăng từ địa chỉ thấp đến địa chỉ cao. Khi stack bắt đầu tại địa chỉ 40H, điều này có nghĩa là ô nhớ đầu tiên được sử dụng trong stack là 40H. Do đó, trước khi bất kỳ dữ liệu nào được đẩy vào stack, SP phải trỏ đến địa chỉ ngay trước địa chỉ bắt đầu của stack, tức là 3FH. Khi byte đầu tiên được đẩy vào stack, SP sẽ tăng lên 40H và dữ liệu được lưu trữ tại địa chỉ 40H.
Vậy nên đáp án đúng là: B. 3FH
- MOV A, #0C3H: Gán giá trị C3H (195 trong hệ thập phân) vào thanh ghi A.
- MOV 20H, #77H: Gán giá trị 77H (119 trong hệ thập phân) vào ô nhớ 20H. Như vậy, ô nhớ 20H đang chứa giá trị 77H.
- ADD A, 20H: Cộng giá trị của ô nhớ 20H (77H) vào thanh ghi A. A = A + 20H = C3H + 77H = 195 + 119 = 314 = 13AH (trong hệ thập lục phân). Kết quả lưu vào thanh ghi A, A = 13AH.
- ADDC A, 20H: Cộng giá trị của ô nhớ 20H (77H) vào thanh ghi A, cộng thêm cờ nhớ (Carry flag). Vì phép cộng trước (ADD A, 20H) không tạo ra cờ nhớ, nên cờ nhớ bằng 0. A = A + 20H + Carry = 13AH + 77H + 0 = 314 + 119 + 0 = 433 = 1B1H (trong hệ thập lục phân). Kết quả lưu vào thanh ghi A, A = 1B1H.
Giá trị của ô nhớ 20H không thay đổi trong quá trình thực hiện đoạn mã, nó vẫn giữ giá trị ban đầu là 77H.

Bộ Đồ Án Tốt Nghiệp Ngành Trí Tuệ Nhân Tạo Và Học Máy

Bộ 120+ Đồ Án Tốt Nghiệp Ngành Hệ Thống Thông Tin

Bộ Đồ Án Tốt Nghiệp Ngành Mạng Máy Tính Và Truyền Thông

Bộ Luận Văn Tốt Nghiệp Ngành Kiểm Toán

Bộ 370+ Luận Văn Tốt Nghiệp Ngành Kế Toán Doanh Nghiệp

Bộ Luận Văn Tốt Nghiệp Ngành Quản Trị Thương Hiệu
ĐĂNG KÝ GÓI THI VIP
- Truy cập hơn 100K đề thi thử và chính thức các năm
- 2M câu hỏi theo các mức độ: Nhận biết – Thông hiểu – Vận dụng
- Học nhanh với 10K Flashcard Tiếng Anh theo bộ sách và chủ đề
- Đầy đủ: Mầm non – Phổ thông (K12) – Đại học – Người đi làm
- Tải toàn bộ tài liệu trên TaiLieu.VN
- Loại bỏ quảng cáo để tăng khả năng tập trung ôn luyện
- Tặng 15 ngày khi đăng ký gói 3 tháng, 30 ngày với gói 6 tháng và 60 ngày với gói 12 tháng.