25/05/2018, 08:36

Bài tập 5

Nhập phím nhấn từ bàn phím cho đến khi phím Enter được nhấn Mục đích-yêu cầu: Làm quen với lệnh nhập IN. Hiểu được lệnh so sánh CMP, và lệnh nhảy có điều kiện JNZ. Sử dụng bàn phím để nhập mã số mở máy. ...

Nhập phím nhấn từ bàn phím cho đến khi phím Enter được nhấn

Mục đích-yêu cầu:

  • Làm quen với lệnh nhập IN.
  • Hiểu được lệnh so sánh CMP, và lệnh nhảy có điều kiện JNZ.
  • Sử dụng bàn phím để nhập mã số mở máy.

Kiến thức nền:

1/ Lệnh IN 00:

Là lệnh nhập từ  port 0. Trong chương trình mô phỏng, port 0 được nối tới phần cứng bàn phím. Chương trình mô phỏng đợi cho phím nhấn và copy mã ASCII của phím nhấn vào thanh ghi AL. 

2/ Lệnh CMP AL,0D:

Dùng để so sánh thanh ghi AL với mã ASCII của phím Enter. Mã ASCII của phím Enter là 0Dh

CMP AL, BL được thực hiện như sau : trong bộ xử lý sẽ có sự so sánh giữa AL và BL

?        Nếu kết quả bằng 0 thì cờ "Z" trong thanh ghi trạng thái SR được thiết lập.

?        Nếu kết quả là (-) thì cờ "S" được thiết lập.

?        Nếu kết quả là (+) thì không có cờ nào được thiết lập.

?        Cờ "Z" được thiết lập nếu AL và BL ngang nhau.

?        Cờ "S" được thiết lập nếu BL lớn hơn AL. không có cờ nào được thiết lập nếu AL lớn hơn  BL . 

3/ Lệnh JNZ Rep:

        JNZ là từ viết tắt của JUMP NOT ZERO . Lệnh này sẽ nhảy nếu cờ "Z" không được thiết lập. Chương trình sẽ nhảy về phía trước hay lùi về phía sau tới địa chỉ mà nhãn Rep đánh dấu.

        Lệnh có liên quan là JZ, là từ viết tắt của Jump Zero. Lệnh này sẽ thực hiện 1 bước nhảy nếu cờ Zero được thiết lập. Trong chương trình này, lệnh CMP sẽ thiết lập các cờ. Lệnh số học cũng thiết lập cờ trạng thái.

4/ Lệnh MOV [C0], AL:

Lệnh này sẽ chuyển nội dung của AL tới địa chỉ [C0]. Ðơn vị hiển thị trực quan làm việc với địa chỉ từ [C0] tới [FF]. Ðiều này cho phép hiển thị với 4 hàng và 6 cột trên VDU. Ðịa chỉ của [C0] là địa chỉ trên đầu góc trái của màn hình. 

5/ Lệnh MOV [BL], AL:

Câu lệnh này thì chép nội dung AL tới địa chỉ mà BL chỉ đến. BL được tạo để chỉ đến màn hình VDU tại địa chỉ [C0] bằng cách sử dụng lệnh MOV BL,C0. Ngoài ra BL còn được dùng để chỉ mỗi vị trí trên màn hình bằng việc sử dụng INC BL.

Chương trình:

; Nhập phím nhấn từ bàn phím cho đến khi phím enter được nhấn ------------

CLO

Rep :

IN      00                  ; đợi phím nhấn và cất nó vào AL

CMP  AL,0D           ; so sánh xem có nhấn phím enter chưa?

JNZ   Rep                ; nếu không có phím enter thì nhảy về nhãn Rep

                                 ; nếu có thì nhảy xuống END để kết thúc chương trình .

END

;------------------------------------------------------------------------------------

Bài tập 05. Nhấn nút Play để xem.

Tải file phim về ở đây .

Bài tập củng cố: 5.1/ Viết chương trình hiển thị mỗi ký tự tại vị trí đầu bên trái của màn hình VDU bằng việc copy tất cả chúng tới địa chỉ [C0}. 5.2/ Viết chương trình sử dụng thanh ghi BL để chỉ tới địa[C0] và tăng BL sau mỗi lần phím nhấn theo thứ tự để thấy được văn bản bạn gõ. 5.3/ Viết chương trình nhập mã số để mở máy với yêu cầu cụ thể như sau: khi chương trình đã khởi động muốn thoát khỏi chương trình phải tuần tự gõ đúng thứ tự ba chữ cái A,N,H (đúng cả thứ tự); nếu gõ sai chương trình cứ chạy lòng vòng không thoát ra được.

0