Page 8 - Bai01 NNLT Assembly (Hop Ngu)
P. 8
Trường TCN KTCN HÙNG VƯƠNG GIÁO TRÌNH CẤU TRÚC MÁY TÍNH
b) Tập tin dạng .EXE
Chương trình có thể được khai báo nhiều đoạn khác nhau. Mỗi chương
trình có thể có nhiều đoạn chương trình, nhiều đoạn dữ liệu. Kích thước của
tập tin có thể lớn tuỳ thuộc vào kích thước bộ nhớ máy tính. Thường dạng
.EXE dùng để xây dựng các chương trình lớn có kích thước lớn hơn 64 KB.
Tập tin có một header ở đầu tập tin. Header này chứa các thông tin điều
khiển về tập tin, kích thước header phụ thuộc vào số các lệnh trong chương
trình cần để định vị lại các địa chỉ đoạn khi chương trình được nạp.
Cấu trúc của chương trình dạng .EXE
.MODEL SMALL Ví dụ: Đoạn chương trình in chuỗi
.STACK 200H .MODEL SMALL
.DATA .STACK 200H
Khai báo dữ liệu .DATA
………..
.CODE Msg DB ‘Hello$’
Begin: .CODE
MOV AX, @DATA Begin:
MOV DS, AX MOV AX, @DATA
; Các lệnh MOV DS, AX
…………………… MOV AH, 09h
; Kết thúc MOV DX, OFFSET Msg
MOV AX, 4C00h INT 21h
INT 21h
; Các lệnh (chương trình con) MOV AX, 4C00h
……………………. INT 21h
END Begin END Begin
Cấu trúc đoạn dạng .EXE:
<tên đoạn data> SEGMENT Ví dụ: Đoạn chương trình in chuỗi
; Khai báo dữ liệu DSeg SEGMENT
<tên đoạn data> SEGMENT Msg DB ‘Hello$’
<tên đoạn code> SEGMENT DSeg SEGMENT
ASSUME CS:<tên đoạn code>, CSeg SEGMENT
DS:<tên đoạn data> ASSUME CS:CSeg, DS:Dseg
Begin: Begin:
MOV AX, <tên đoạn data> MOV AX, Dseg
MOV DS, AX MOV DS, AX
; Đoạn mã MOV AX, 09h
; Kết thúc MOV DX, OFFSET Msg
MOV AX, 4C00h INT 21h
INT 21h MOV AX, 4C00h
; Các lệnh (chương trình con) INT 21h
<tên đoạn code> ENDS CSeg ENDS
END Begin END Begin
Biên soạn: TÔ HUỲNH THIÊN TRƯỜNG Trang 10