Start:
STI ;set cờ I
MOV AL,11
Rep:
OUT 05 ;điều khiển động cơ bước ROR AL ;xoay bit trong AL sang phải
JMP Rep
JMP Start
;---
ORG 50
PUSH AL ;lưu AL vào ngăn xếp PUSH BL ;lưu BL vào ngăn xếp PUSHF ;lưu các cờ vào ngăn xếp JMP Pastdata
DB 84 ;đỏ 1 + xanh 2
DB C8 ;đỏ 1 + vàng 1 + vàng 2 DB 30 ;xanh 1 + đỏ 2
DB 58 ;vàng 1 + đỏ 2 + vàng 2
DB 57 ;sử dụng kiểm tra tiến trình qua bảng Pastdata:
MOV BL,[5B] ;BL chỉ đến bảng dữ liệu MOV AL,[BL] ;dữ liệu từ bảng đến AL OUT 01 ; điều khiển đèn giao thông
;Gửi dữ liệu trong AL ra đèn CMP AL,58 ;địa chỉ cuối trong bảng
JZ Reset ;nếu địa chỉ cuối được chỉ đến thì nhảy đến Reset INC BL ;tăng BL lên 1, BL chỉ đến địa chỉ kế tiếp trong bảng
MOV [5B],BL ;lưu con trỏ vào trong Ram JMP Stop ;nhảy về nhãn Stop
Reset:
MOV BL,57 ;chỉ đến địa chỉ bắt đầu bảng dữ ;liệu MOV [5B],BL ;lưu con trỏ vào trong Ram
Stop:
POPF ;khôi phục các cờ tới vị trí liền ;trước POP BL ;khôi phục BL tới giá trị liền ;trước POP AL ;khôi phục AL tới giá trị liền ;trước IRET
END
; Lưu ý : để dễ quan sát kết quả, nên kết hợp chỉnh tần số xung Ck của CPU với tần số xuất hiện lệnh ngắt.
;---
Bài tập 11. Nhấn nút Play để xem.