Cho đoạn mã Assembler sau:MOV A, #15HJB P, SKIPMOV A, #0FFHSJMP EXITSKIP: CLR AEXIT: ENDKết quả của thanh ghi A là:
Trả lời:
Đáp án đúng: C
Đoạn mã Assembler trên thực hiện như sau:
1. `MOV A, #15H`: Gán giá trị 15H cho thanh ghi A.
2. `JB P, SKIP`: Kiểm tra bit P (có thể là một bit trong port hoặc một bit cờ). Nếu bit P bằng 1, thì nhảy đến nhãn SKIP. Nếu bit P bằng 0, thì thực hiện lệnh tiếp theo.
3. `MOV A, #0FFH`: Nếu bit P bằng 0, gán giá trị 0FFH cho thanh ghi A.
4. `SJMP EXIT`: Nhảy vô điều kiện đến nhãn EXIT.
5. `SKIP: CLR A`: Nếu bit P bằng 1 (nhảy đến SKIP), thì xóa thanh ghi A (gán giá trị 00H cho A).
6. `EXIT: END`: Kết thúc chương trình.
Như vậy, giá trị cuối cùng của thanh ghi A phụ thuộc vào giá trị của bit P.
* Nếu P = 0, A = 0FFH.
* Nếu P = 1, A = 00H.
Vì câu hỏi không cho biết giá trị của bit P, ta không thể xác định chính xác giá trị cuối cùng của A.
Tuy nhiên, ta thấy có một sự mâu thuẫn trong các đáp án, vì không có đáp án nào thể hiện sự phụ thuộc vào giá trị của bit P. Do đó, câu hỏi này có lẽ đang thiếu thông tin hoặc có lỗi.
Nếu đề bài yêu cầu chọn đáp án đúng nhất trong các đáp án đã cho, thì ta có thể giả sử rằng bit P bằng 1 và đáp án đúng là C. Tuy nhiên, đây chỉ là một giả định.
Vì không thể xác định chắc chắn đáp án đúng do thiếu thông tin, nên ta cần xem xét lại đề bài.
Trong trường hợp này, ta sẽ giả sử rằng bit P=1. Do đó chương trình sẽ nhảy đến SKIP và A sẽ bằng 00H.





