Cho đoạn mã Assembler sau:
ORG 0000H
MOV A, #0C3H
CPL A
END.
Kết quả của thanh ghi A là:
Đáp án đúng: B
Đoạn mã Assembler thực hiện các bước sau:
MOV A, #0C3H
: Gán giá trị 0xC3 (11000011 trong hệ nhị phân) vào thanh ghi A.CPL A
: Đảo bit (lấy bù 1) của thanh ghi A. Tức là, mỗi bit 0 trở thành 1 và mỗi bit 1 trở thành 0.
Vậy, ta có:
A = 11000011 (0xC3)
CPL A => A = 00111100 (0x3C)
Vậy, kết quả cuối cùng của thanh ghi A là 3CH.
Câu hỏi liên quan
Đoạn mã Assembly thực hiện phép toán AND logic giữa hai giá trị.
Giá trị đầu tiên là 40H (0100 0000 trong hệ nhị phân).
Giá trị thứ hai là 36H (0011 0110 trong hệ nhị phân).
Phép toán AND logic sẽ thực hiện so sánh bit tương ứng của hai số. Nếu cả hai bit đều là 1, kết quả bit đó là 1. Ngược lại, kết quả là 0.
0100 0000 AND 0011 0110 = 0000 0000 = 00H = 0.
Tuy nhiên, không có đáp án nào là 00H. Xem xét lại đề bài, có vẻ như có một lỗi đánh máy. Nếu đề bài yêu cầu tính toán:
40H = 0100 0000
36H = 0011 0110
Thực hiện AND: 0100 0000 & 0011 0110 = 0000 0000 (0)
Nếu sửa đề thành ORL A, #36H thì:
40H = 0100 0000
36H = 0011 0110
Thực hiện OR: 0100 0000 | 0011 0110 = 0111 0110 = 76H. Không có đáp án nào đúng.
Nếu đề bài là A = 46H (0100 0110), và thực hiện AND A, 30H (0011 0000):
0100 0110 & 0011 0000 = 0000 0000 = 0. Không có đáp án đúng.
Nếu phép toán là ADD A, #36H (cộng):
40H + 36H = 76H. Không có đáp án đúng.
Nếu phép toán là SUBB A, #16H (trừ):
40H - 16H = 2AH = 42. Không có đáp án đúng.
Xét trường hợp ANL A,#36H nhưng giá trị đầu vào là A = 76H (0111 0110):
76H = 0111 0110
36H = 0011 0110
0111 0110 AND 0011 0110 = 0011 0110 = 36H.
Tuy nhiên, đề bài cho A = 40H.
Nếu chúng ta xem xét một cách khác, có lẽ có một sự nhầm lẫn trong việc biểu diễn số.
Nếu 40H và 36H được coi là số thập phân và chuyển sang nhị phân và thực hiện AND:
40 = 0010 1000
36 = 0010 0100
0010 1000 AND 0010 0100 = 0010 0000 = 32 (20H)
Trong trường hợp này, đáp án D (20H) có thể là đáp án đúng nếu có sự nhầm lẫn về hệ cơ số.
Tuy nhiên, nếu xem xét mã Assembler chuẩn, 40H và 36H nên được hiểu là hệ thập lục phân. Trong trường hợp này, phép toán AND cho kết quả 00H.
Do đó, theo cách hiểu thông thường về mã Assembly, không có đáp án nào đúng.
1. `MOV A, #40H`: Gán giá trị 40H (tức là 0100 0000 ở dạng nhị phân) vào thanh ghi A.
2. `SWAP A`: Đảo nửa byte cao và nửa byte thấp của thanh ghi A. Nửa byte cao là 0100 (4), nửa byte thấp là 0000 (0). Sau khi đảo, nửa byte cao sẽ là 0000 (0), nửa byte thấp sẽ là 0100 (4). Như vậy, giá trị của A sẽ là 0000 0100, tương ứng với 04H.
Vậy đáp án đúng là A. 04H.
1. MOV A, #13H: Gán giá trị 13H (tương đương 19 trong hệ thập phân) vào thanh ghi A.
2. MOV 20H, #4BH: Gán giá trị 4BH (tương đương 75 trong hệ thập phân) vào ô nhớ có địa chỉ 20H.
3. XCH A, 20H: Trao đổi giá trị giữa thanh ghi A và ô nhớ có địa chỉ 20H. Điều này có nghĩa là giá trị hiện tại của thanh ghi A (13H) sẽ được chuyển vào ô nhớ 20H, và giá trị hiện tại của ô nhớ 20H (4BH) sẽ được chuyển vào thanh ghi A.
Vậy, sau khi thực hiện lệnh XCH A, 20H, giá trị của thanh ghi A sẽ là 4BH.
Do đó, đáp án đúng là D.
1. ORG 0000H: Khai báo chương trình bắt đầu từ địa chỉ 0000H.
2. MOV R1, #2BH: Gán giá trị 2BH (43 theo hệ thập phân) vào thanh ghi R1.
3. CJNE R1, #2BH, NHAN: So sánh giá trị của thanh ghi R1 với giá trị 2BH. Nếu R1 khác 2BH, thì nhảy đến nhãn NHAN. Trong trường hợp này, R1 đang chứa giá trị 2BH, do đó điều kiện so sánh không thỏa mãn (R1 = 2BH), và chương trình không nhảy đến nhãn NHAN mà tiếp tục thực hiện lệnh kế tiếp.
4. MOV A, #4BH: Gán giá trị 4BH vào thanh ghi A. Do điều kiện CJNE không thỏa mãn nên lệnh này được thực hiện.
5. SJMP KETTHUC: Nhảy vô điều kiện đến nhãn KETTHUC.
6. NHAN: MOV A, #0B4H: Nhãn NHAN và lệnh gán giá trị 0B4H cho thanh ghi A. Vì chương trình không nhảy đến nhãn này (do CJNE không thỏa mãn), lệnh này không được thực hiện.
7. KETTHUC: END: Nhãn KETTHUC và kết thúc chương trình.
Vì vậy, giá trị cuối cùng của thanh ghi A là 4BH.
Câu lệnh CJNE A, #EEH, NHAN so sánh A với EEH. Vì A = EEH, điều kiện này không đúng (A không khác EEH), do đó chương trình không nhảy đến NHAN mà tiếp tục thực hiện lệnh MOV 30H, #23. Vì vậy, ô nhớ 30H sẽ chứa giá trị 23H.

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.