KHUễN DẠNG CỦA CHƯƠNG TRèNH HỢP NGỮ

Một phần của tài liệu Kỹ thuật vi xử lý - Chương 2 pdf (Trang 75 - 78)

75. WAIT – Wait for TEST or INTR Signal (chờ tớn hiệu từ chõn TEST hoặc INTR).

2.8.3. KHUễN DẠNG CỦA CHƯƠNG TRèNH HỢP NGỮ

Như chỳng ta đó biết cú hai loại tập tin thực hiện được là .EXE và .COM. - Chương trỡnh .EXE là một thủ tục xa (Far Procedure), cú thểđược gọi từ

một đoạn khỏc. Với chương trỡnh .EXE cú thể được định nghĩa 4 đoạn khỏc nhau: Đoạn lệnh (code), đoạn dữ liệu (data), đoạn ngăn xếp (stack) và đoạn thờm (extra).

- Khỏc với chương trỡnh .EXE chương trỡnh .COM là một thủ tục gần (Near Procedure), chỉ gọi được từ bờn trong đoạn lệnh và chỉ cú thểđược

định nghĩa với duy nhất một đoạn lệnh, do đú phải đặt đoạn dữ liệu và ngăn xếp vào bờn trong đoạn lệnh này.

PSP100h 100h 100h 100h PSP SS CS DS ES Stack ChƯơng trình ChƯơng trình 2.8.3.1. Chương trỡnh .EXE

Khi một chương trỡnh .EXE được nạp vào bộ nhớ, DOS sẽ tạo ra một vựng gồm 256 byte gọi là đoạn mở đầu của chương trỡnh (PSP), dựng để

chứa cỏc thụng tin liờn quan đến việc thực hiện chương trỡnh. Vựng PSP nằm ngay trước phần mó lệnh. Cỏc thụng số liờn quan đến chương trỡnh cũng

được đưa vào DS, ES. Vỡ vậy DS và ES khụng chứa địa chỉđoạn dữ liệu, do

đú phải đặt thanh ghi DS để nú chứa địa chỉ đoạn dữ liệu bằng cỏc lệnh sau

đõy:

MOV AX, data MOV DS, AX

Khung cho một chương trỡnh .EXE cú dạng sau:

TITLE Tờn_chương_trỡnh COMMENT *

Bắt đầu của một khối chỳ thớch *

;Khai bỏo đoạn stack stack SEGMENT STACK

;Khai bỏo kớch thước Stack stack ENDS

;Khai bỏo đoạn dữ liệu data SEGMENT

;Định nghĩa cỏc dữ liệu data ENDS

;Khai bỏo đoạn mó code SEMENT

ASSUME CS:code, DS:data Start:

;Cỏc lệnh code ENDS

END Start

Nhón Start là nơi chứa địa chỉ đầu tiờn mà CPU sẽ thực hiện, chỉ thị

END sẽ kết thỳc chương trỡnh

Vớ dụ: Viết chương trỡnh .EXE in ra màn hỡnh dũng chữ “DHKTCN”. Trước hết ta sẽđưa ra một số hàm ngắt của INT 21H và INT 20H

Hàm 1 ca ngt INT 21H: Đọc mt ký t t bàn phớm.

Vào: AH=1

Ra: AL=mó ASCII củ ký tự

AL=0 khi ký tự gừ vào là cỏc phớm chức năng

Hàm 2 ca ngt INT 21H: Hin mt ký t lờn màn hỡnh. Vào: AH=2 DL=mó ASCII của ký tự cần hiển thị Hàm 9 ca ngt INT 21H: Hin chui ký t vi $ cui lờn màn hỡnh. Vào: AH=9 DX=địa chỉ lệch của chuỗi ký tự

Hàm 4CH, ngt INT 21H Kết thỳc chương trỡnh loi .EXE hoc .COM

Vào: AH=4CH

Ngt INT 20H dành riờng để kết thỳc chương trỡnh dng .COM

Chương trỡnh được viết như sau:

TITLE VIDU_EXE COMMENT *

in ra man hinh dong chu DHKTCN Chuong trinh thuoc dang .EXE

* stack SEGMENT STACK

DB 20 DUP(‘STACK’) stack ENDS data SEGMENT STRING DB ‘DHKTCN!$’ data ENDS code SEGMENT

ASSUME CS:code, DS:data Start:

;Dat thanh ghi DS MOV AX, data MOV DS, AX ;In ra man hinh

MOV AH, 9

LEA DX, STRING ;chuyen dia chi ;lech cua xau vao DX

INT 21h MOV AH, 4Ch INT 21h code ENDS END Start Trong chương trỡnh trờn phần chỉ thị:

stack SEGMENT STACK

DB 20 DUP(‘STACK’) stack ENDS

Là phần khai bỏo đoạn ngăn xếp cú tờn là STACK. Ngăn xếp cú kớch thước là 20x5=100 byte và lỳc khởi đầu được lấp đầy bằng từ STACK.

data SEGMENT

STRING DB ‘DHKTCN!$’ data ENDS

Là phần khai bỏo đoạn dữ liệu cú tờn là data, đang chứa xõu STRING là dũng chữ “DHKTCN!” cần in ra màn hỡnh. Xõu này kết thỳc bởi ký tự $

để bỏo cho DOS biết là đó đến cuối xõu.

Đoạn chương trỡnh được bao quanh bởi cỏc chỉ thị sau:

code SEGMENT

ASSUME CS:code, DS:data ...

code ENDS

Trong đú chỉ dẫn ASSUME bỏo cho Assembler biết rằng thanh ghi CS trỏđến đoạn lệnh, thanh ghi DS trỏđến đoạn dữ liệu.

Trong chương trỡnh trờn cú sử dụng ngắt 21h (xem phần phụ lục A trang 320 – Kỹ thuật vi xử lý của Văn Thế Minh). Trong đú hàm 9 của INT 21h được dựng để in xõu cú địa chỉ đặt trong thanh ghi DS:DX ra màn hỡnh, hàm 4Ch để kết thỳc chương trỡnh và trở về DOS.

Một phần của tài liệu Kỹ thuật vi xử lý - Chương 2 pdf (Trang 75 - 78)

Tải bản đầy đủ (PDF)

(83 trang)