Chương trình điều khiển đèn giao thông sử dụng bảng dữ liệu.
Mục đích-yêu cầu:
- Giúp sinh viên hiểu về bảng dữ liệu và cách sử dụng bảng trong viết chương trình.
Kiến thức nền:
1/ Lệnh DB 84 :
DB là chữ viết tắt của Define Byte. Lệnh này khai báo số 84H được cất trong RAM tại địa chỉ [02]. Ðịa chỉ [00] và [01] dành cho mã máy của lệnh JMP Start. 84H đổi sang số nhị phân là 1000 0100. Số 0 và 1 này có thể dùng để bật sáng đèn đỏ bên trái và đèn xanh bên phải trong bài thí nghiệm.
2/ MOV BL,02:
Chuyển 02 vào thanh ghi BL. [02] là địa chỉ RAM bắt đầu của bảng dữ liệu. BL được sử dụng như là một con trỏ để chỉ đến bảng dữ liệu.
3/ MOV AL,[BL]:
[BL] chỉ đến bảng dữ liệu. Lệnh này chuyển một giá trị từ bảng dữ liệu vào thanh ghi AL.
4/ Lệnh OUT 01:
Dùng để gởi nội dung của thanh ghi AL tới port 01. Port 01 được kết nối với đèn giao thông.
5/ CMP AL,58:
58 là địa chỉ truy xuất cuối cùng của bảng dữ liệu. Nếu AL chứa 58, nó cần để reset BL chỉ lại về đầu bảng và sẵn sàng để lập lại trình tự. Nếu AL = 58, cờ "Z" trong CPU sẽ được thiết lập.
6/ Lệnh JZ Start:
Dùng để nhảy về lại nhãn start nếu cờ "Z" trong CPU được set.
7/ Lệnh INC BL:
Tăng BL lên 1 để BL chỉ tới địa chỉ kế tiếp trong bảng dữ liệu.
Chương trình
;Chương trình điều khiển đèn giao thông -----------------------------------------
JMP Start ; nhảy đến nhãn Start bỏ qua bảng dữ liệu
DB 84 ;bảng dữ liệu bắt đầu
DB C8 ;các dữ liệu này điều khiển đèn ;giao thông
DB 31 ;trình tự này được đơn giản hóa
DB 51
Start:
MOV BL,02 ;02 là địa chỉ bắt đầu của bảng dữ ;liệu
Rep:
MOV AL,[BL] ;chuyển dữ liệu từ bảng đến AL
OUT 01 ;xuất từ thanh ghi AL đến port 1
CMP AL,58 ;so sánh địa chỉ cuối trong bảng ;dữ liệu
JZ Start ;nếu có thì nhảy đến nhãn start
;nếu không thì BL chỉ đến mục kế tiếp
INC BL
JMP Rep ;nhảy về lại nhãn Rep
END ;kết thúc chương trình
;--------------------------------------------------------------------------------------
Tải file phim về ở đây