Cho đoạn mã Assembler sau:MOV A, #0F0HORL A, #0FHKết quả của thanh ghi A là:
Trả lời:
Đáp án đúng: D
Đoạn mã Assembler thực hiện phép toán OR trên thanh ghi A.
Bước 1: MOV A, #0F0H - Gán giá trị 0F0H (11110000B) cho thanh ghi A.
Bước 2: ORL A, #0FH - Thực hiện phép OR giữa thanh ghi A và giá trị 0FH (00001111B).
Phép OR sẽ cho kết quả là 1 nếu ít nhất một trong hai bit tương ứng là 1. Ta có:
11110000
OR 00001111
----------
11111111
Kết quả là 11111111B, tương đương với FFH.
Vậy đáp án đúng là D. FFH.
Câu hỏi liên quan
Lời giải:
Đáp án đúng: C
Đoạn mã Assembler thực hiện các bước sau:
1. `MOV R0, #7FH`: Gán giá trị 7FH (127 trong hệ thập phân) cho thanh ghi R0.
2. `MOV 7EH, #00H`: Gán giá trị 00H cho ô nhớ có địa chỉ 7EH.
3. `MOV 7FH, #40H`: Gán giá trị 40H cho ô nhớ có địa chỉ 7FH. Tại thời điểm này, R0 đang chứa địa chỉ 7FH.
4. `DEC @R0`: Giảm giá trị của ô nhớ được trỏ bởi R0 đi 1. R0 đang trỏ đến địa chỉ 7FH, nơi chứa giá trị 40H. Sau lệnh này, giá trị tại ô nhớ 7FH sẽ là 3FH (40H - 1 = 3FH).
5. `DEC R0`: Giảm giá trị của thanh ghi R0 đi 1. R0 bây giờ sẽ chứa giá trị 7EH.
6. `DEC @R0`: Giảm giá trị của ô nhớ được trỏ bởi R0 đi 1. R0 đang trỏ đến địa chỉ 7EH, nơi chứa giá trị 00H. Sau lệnh này, giá trị tại ô nhớ 7EH sẽ là FFH (00H - 1 = FFH). Tuy nhiên, câu hỏi chỉ hỏi giá trị của R0, không phải giá trị của ô nhớ.
Sau lệnh `DEC R0`, giá trị của R0 là 7EH.
1. `MOV R0, #7FH`: Gán giá trị 7FH (127 trong hệ thập phân) cho thanh ghi R0.
2. `MOV 7EH, #00H`: Gán giá trị 00H cho ô nhớ có địa chỉ 7EH.
3. `MOV 7FH, #40H`: Gán giá trị 40H cho ô nhớ có địa chỉ 7FH. Tại thời điểm này, R0 đang chứa địa chỉ 7FH.
4. `DEC @R0`: Giảm giá trị của ô nhớ được trỏ bởi R0 đi 1. R0 đang trỏ đến địa chỉ 7FH, nơi chứa giá trị 40H. Sau lệnh này, giá trị tại ô nhớ 7FH sẽ là 3FH (40H - 1 = 3FH).
5. `DEC R0`: Giảm giá trị của thanh ghi R0 đi 1. R0 bây giờ sẽ chứa giá trị 7EH.
6. `DEC @R0`: Giảm giá trị của ô nhớ được trỏ bởi R0 đi 1. R0 đang trỏ đến địa chỉ 7EH, nơi chứa giá trị 00H. Sau lệnh này, giá trị tại ô nhớ 7EH sẽ là FFH (00H - 1 = FFH). Tuy nhiên, câu hỏi chỉ hỏi giá trị của R0, không phải giá trị của ô nhớ.
Sau lệnh `DEC R0`, giá trị của R0 là 7EH.
Lời giải:
Đáp án đúng: D
Đoạn mã Assembler thực hiện các thao tác sau:
1. MOV R1, #3: Khởi tạo thanh ghi R1 với giá trị 3. R1 là bộ đếm vòng lặp.
2. MOV A, #17: Khởi tạo thanh ghi A (Accumulator) với giá trị 17.
3. LOOP: Bắt đầu vòng lặp.
4. SETB C: Đặt bit Carry (C) lên 1. Lệnh này quan trọng vì nó ảnh hưởng đến phép trừ có nhớ.
5. SUBB A, #2: Trừ 2 khỏi A, có xét đến bit Carry. Vì Carry được set (SETB C), thực tế ta trừ A cho (2 + Carry), tức là A = A - 3.
6. DJNZ R1, LOOP: Giảm R1 đi 1. Nếu R1 khác 0, quay lại LOOP. Nếu R1 bằng 0, kết thúc vòng lặp.
Vòng lặp sẽ thực hiện 3 lần, mỗi lần A giảm đi 3. Vậy sau 3 lần lặp, A sẽ là:
A = 17 - (3 * 3) = 17 - 9 = 8.
Vậy, kết quả cuối cùng của thanh ghi A là 8.
1. MOV R1, #3: Khởi tạo thanh ghi R1 với giá trị 3. R1 là bộ đếm vòng lặp.
2. MOV A, #17: Khởi tạo thanh ghi A (Accumulator) với giá trị 17.
3. LOOP: Bắt đầu vòng lặp.
4. SETB C: Đặt bit Carry (C) lên 1. Lệnh này quan trọng vì nó ảnh hưởng đến phép trừ có nhớ.
5. SUBB A, #2: Trừ 2 khỏi A, có xét đến bit Carry. Vì Carry được set (SETB C), thực tế ta trừ A cho (2 + Carry), tức là A = A - 3.
6. DJNZ R1, LOOP: Giảm R1 đi 1. Nếu R1 khác 0, quay lại LOOP. Nếu R1 bằng 0, kết thúc vòng lặp.
Vòng lặp sẽ thực hiện 3 lần, mỗi lần A giảm đi 3. Vậy sau 3 lần lặp, A sẽ là:
A = 17 - (3 * 3) = 17 - 9 = 8.
Vậy, kết quả cuối cùng của thanh ghi A là 8.
Lời giải:
Đáp án đúng: D
Mode 3 thường được sử dụng để chia sẻ cổng nối tiếp (serial port) giữa hai thiết bị UART (Universal Asynchronous Receiver/Transmitter). Trong chế độ này, bit M1M0 được thiết lập là 11.
Lời giải:
Đáp án đúng: C
Chương trình sử dụng Timer 0 ở chế độ 1 (16-bit timer) để tạo độ trễ. Giá trị -500 được nạp vào TH0 và TL0, nghĩa là bộ đếm sẽ đếm từ 65536 - 500 = 65036. Với xung clock của vi điều khiển là 12MHz, và bộ chia trước là 12 (do không khai báo bộ chia khác), tần số clock đầu vào timer là 1MHz. Như vậy, thời gian để timer đếm từ 65036 đến 65535 (tràn) là (65536 - 65036) / 1MHz = 500µs. Đoạn chương trình sau khi hết thời gian delay thì đảo trạng thái chân P1.0. Như vậy, chu kỳ của sóng vuông trên chân P1.0 sẽ là 2 * 500µs = 1000µs = 1ms. Vậy đáp án đúng là C.
Lời giải:
Đáp án đúng: D
Chương trình sử dụng Timer 0 ở chế độ 1 (TMOD = 01H) để tạo thời gian trễ. Giá trị -50000 được nạp vào TH0 và TL0. Vì Timer 0 là bộ đếm 16 bit, nên nó sẽ đếm từ -50000 đến 65535 (0xFFFF). Số lượng xung clock cần thiết để tràn Timer 0 là 65536 - 50000 = 15536. Giả sử tần số clock của vi điều khiển là 12MHz, thì chu kỳ của một xung clock là 1/12MHz. Thời gian trễ tạo ra bởi Timer 0 là 15536 * (1/12MHz) * 12 (do sử dụng hệ số chia 12 bên trong)= 0.012946667 s ≈ 12.95 ms. (Giá trị này có thể khác nhau tùy thuộc vào tần số clock của vi điều khiển). Tuy nhiên, do ta đảo trạng thái P1.1 mỗi khi Timer 0 tràn, nên thời gian cho một nửa chu kỳ của sóng vuông là khoảng 12.95ms. Do đó, chu kỳ đầy đủ của sóng vuông là 2 * 12.95ms ≈ 25.9 ms. Giá trị này gần nhất với đáp án 50ms. Tuy nhiên, do code dùng lệnh SJMP LOOP nên chương trình lặp lại vô hạn, tạo ra sóng vuông liên tục.
Tuy nhiên, cần lưu ý là các giá trị tính toán trên chỉ là ước tính và giá trị thực tế có thể khác nhau do các yếu tố khác như thời gian thực thi các lệnh khác. Việc tính toán chính xác cần dựa trên tần số clock thực tế và thời gian thực thi mỗi lệnh.
Vì vậy, đáp án chính xác nhất là B. Tạo dòng sóng vuông có chu kỳ 50mS trên chân P1.1
Tuy nhiên, cần lưu ý là các giá trị tính toán trên chỉ là ước tính và giá trị thực tế có thể khác nhau do các yếu tố khác như thời gian thực thi các lệnh khác. Việc tính toán chính xác cần dựa trên tần số clock thực tế và thời gian thực thi mỗi lệnh.
Vì vậy, đáp án chính xác nhất là B. Tạo dòng sóng vuông có chu kỳ 50mS trên chân P1.1
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Bộ Đồ Án Tốt Nghiệp Ngành Trí Tuệ Nhân Tạo Và Học Máy
89 tài liệu310 lượt tải

Bộ 120+ Đồ Án Tốt Nghiệp Ngành Hệ Thống Thông Tin
125 tài liệu441 lượt tải

Bộ Đồ Án Tốt Nghiệp Ngành Mạng Máy Tính Và Truyền Thông
104 tài liệu687 lượt tải

Bộ Luận Văn Tốt Nghiệp Ngành Kiểm Toán
103 tài liệu589 lượt tải

Bộ 370+ Luận Văn Tốt Nghiệp Ngành Kế Toán Doanh Nghiệp
377 tài liệu1030 lượt tải

Bộ Luận Văn Tốt Nghiệp Ngành Quản Trị Thương Hiệu
99 tài liệu1062 lượt tải
ĐĂ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.
77.000 đ/ tháng