JavaScript is required

Xét đoạn chương trình sau: MOV CX,0 MOV AH,1 DOC: INT 21h CMP AL,0 JE thoat INC CX JMP DOC Thoat: Bộ đếm CX có giá trị như thế nào?

A.

CX có giá trị bằng số ký tự được đọc vào

B.

CX = 0

C.

CX = 1

D.

CX chứa giá trị được hiển thị

Trả lời:

Đáp án đúng: A


Đoạn chương trình trên thực hiện việc đọc ký tự từ bàn phím sử dụng ngắt INT 21h (AH=1). - `MOV CX, 0`: Khởi tạo bộ đếm CX bằng 0. - `DOC:`: Nhãn đánh dấu vị trí bắt đầu của vòng lặp. - `INT 21h`: Gọi ngắt 21h để đọc một ký tự từ bàn phím vào AL. - `CMP AL, 0`: So sánh giá trị trong AL với 0. Nếu AL = 0, tức là đã nhập ký tự có mã ASCII là 0 (thường là do nhấn tổ hợp phím nào đó, hoặc kết thúc luồng nhập). - `JE thoat`: Nếu AL = 0, nhảy đến nhãn `thoat`. - `INC CX`: Nếu AL khác 0, tăng giá trị của CX lên 1. Điều này có nghĩa là mỗi khi một ký tự khác 0 được nhập, bộ đếm CX sẽ tăng lên. - `JMP DOC`: Quay lại nhãn `DOC` để tiếp tục đọc ký tự. - `Thoat:`: Nhãn đánh dấu vị trí kết thúc vòng lặp. Như vậy, bộ đếm CX sẽ tăng lên mỗi khi một ký tự khác 0 được nhập từ bàn phím. Khi ký tự nhập vào có mã ASCII là 0, chương trình sẽ thoát khỏi vòng lặp. Do đó, CX sẽ chứa số lượng ký tự khác 0 đã được đọc vào trước khi gặp ký tự có mã ASCII là 0. Vậy đáp án chính xác là: CX có giá trị bằng số ký tự được đọc vào (trước khi gặp ký tự có mã ASCII = 0).

Câu hỏi liên quan