Xét đoạn chương trình sau: CMP AL,0 JA GAN MOV CL,AL JMP thoat GAN: MOV BL,AL Thoat: Đoạn chương trình trên được viết bằng cấu trúc nào?
Trả lời:
Đáp án đúng: B
Đoạn chương trình sử dụng lệnh `CMP AL,0` để so sánh giá trị của регистр AL với 0. Sau đó, lệnh `JA GAN` (Jump if Above) sẽ nhảy đến nhãn `GAN` nếu giá trị trong AL lớn hơn 0. Nếu không (tức là AL nhỏ hơn hoặc bằng 0), chương trình sẽ tiếp tục thực hiện lệnh `MOV CL,AL`. Sau khi thực hiện một trong hai nhánh, chương trình sẽ nhảy đến nhãn `Thoat`. Cấu trúc này tương ứng với cấu trúc `IF - THEN - ELSE`:
- `IF` tương ứng với điều kiện `AL > 0` (kiểm tra bởi `CMP AL,0` và `JA GAN`).
- `THEN` tương ứng với khối lệnh `MOV BL,AL` (thực hiện nếu điều kiện đúng, tức AL > 0).
- `ELSE` tương ứng với khối lệnh `MOV CL,AL` (thực hiện nếu điều kiện sai, tức AL <= 0).
Vì vậy, đáp án chính xác là B. Các đáp án khác không phù hợp vì:
- A. Cấu trúc `IF-THEN` chỉ có một nhánh thực hiện nếu điều kiện đúng, không có nhánh `ELSE`.
- C. Cấu trúc `CASE` (SWITCH) thường sử dụng để kiểm tra nhiều giá trị khác nhau của một biến, không phù hợp với đoạn code chỉ có một điều kiện.
- D. Cấu trúc `WHILE-DO` là cấu trúc lặp, không phù hợp vì đoạn code chỉ thực hiện một lần tùy thuộc vào điều kiện.





