Tải bản đầy đủ (.pdf) (5 trang)

Nguyên tác và quy trình cài đặt các ứng dụng trong windows p6 pot

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (284.14 KB, 5 trang )

 PAGE m,n: chỉ thị Asembler, khai báo khuôn
dạng giấy của máy in là m dòng mỗi trang, n cột
(ký tự) mỗi dòng.
 TITLE: chỉ thị Asembler, khai báo tiêu đề chính,
thường chỉ ra tên file trên đĩa của chương trình
này. Dòng tiêu đề sẽ xuất hiện trên cùng của mỗi
trang in.
 SUBTTL: chỉ thị Assembler, khai báo tiêu đề phụ,
tiêu đề phụ sẽ xuất hiện trên dòng thứ 2, dưới
dòng tiêu đề của trang in đầu tiên.
 EXTRN: chỉ thị Assembler. Nếu mô-đun này có
chứa tham chiếu tới các thủ tục hoặc biến, mà
chúng được định nghĩa ở mô-đun phụ, thì nhất
thiết phải có chỉ thị EXTRN để liệt lê danh sách
chúng.
 PUBLIC: các khai báo public, như ở dòng 11
chẳng hạn, báo cho assembler rằng lên ‘CODE’ là
tên của đoạn CSEG, nhưng cũn là tên chung, mọi
đoạn có cùng tên ‘CODE’ sẽ được assembler gộp
vào một đoạn duy nhất. Nếu sau PUBLIC không
có ‘CODE’ thì CSEG sẽ là tên chung.
 Các dòng 5, 6, 7: khai báo một đoạn bộ nhớ để
làm Stack, chúng ta đã dàng 64  5 byte cho
Stack, khởi tạo giá trị ban đầu cho nó bằng 64 dãy
5 byte có giá trị ứng với mã ASCII của các ký tự
trong xâu ‘STACK’. Chú ý rằng đoạn dùng làm
Stack nhất thiết phải có tên là STACK.
 Các dòng 8, 9, 10: khai báo đoạn dữ liệu cho
chương trình. Tất cả các chỉ thị định nghĩa miền
dữ liệu DB, DW, DD, DT đều có thể chèn vào
dòng số 9.


 Dòng 11: chỉ thị Assembler SEGMENT - khai báo
bắt đầu của mọt đoạn bộ nhớ, đoạn này được đặt
tên là CSEG.
 Dòng 12: ASSUME CS:CSEG, DS:DSEG,
SS:STACK; chỉ thị Assembler ASSUME yêu cầu
gán cho CS giá trị là địa chỉ đoạn của đoạn có tên
là CSEG, gán cho DS giá trị địa chỉ đoạn của
đoạn có tên là DSEG, gán cho SS giá trị địa chỉ
đoạn của đoạn có tên là STACK.
Dòng 13, 21: các chỉ thị Assembler Proc và
Endp đánh dấu điểm đầu và điểm cuối của một thủ
tục. Thủ tục là một khối lệnh mà có thể được gọi
thi hành từ nhiều nơi trong chương trình. Nếu thủ
tục kết thúc bằng lệnh RET (Return frrom
Procedure) thì ta có thể gọi nó là một chương trình
con (Subroutine). Một thủ tục luôn có một trong
hai thuộc tính: NEAR và FAR được chỉ ra bởi
Operand đứng ngay sau chỉ thị Proc, trong đó
NEAR là ngầm định.
NEAR: thủ tục chỉ có thể được gọi từ trong
chính SEGMENT chứa thủ tục đó. Khi gặp lời gọi
tới một thủ tục NEAR, bộ vi xử lý chỉ cất Offset
(IP) của địa chỉ trở về lên Stack (tương đương
PUSH IP). Với chương trình dạng ‘.COM’, luôn
luôn dùng NEAR.
FAR: thủ tục có thể được gọi từ bất cứ
SEGMENT nào. Khi gặp lời gọi tới một thủ tục
FAR, bộ vi xử lý chỉ cất địa chỉ trở CS:IP lên
Stack. Với chương trình dạng .EXE luôn luôn
dùng FAR cho thủ tục chính.

 Dòng 14, 15, 16: cất địa chỉ về chương trình gọi,
để chương trình này kết thúc có thể nhận lại các
địa chỉ này.
Chú ý: Trong giáo trình nhập môn này các chương
trình minh hoạ đều khá đơn giản, chạy tại dấu nhắc
chờ lệnh của DOS, chúng ta có thể làm cho nó đơn
giản hơn như sau:
1. Bỏ đồng thời hai dòng lệnh 13 và 21 - không gọi
chương trình này từ một chương trình khác.
2. Bỏ cả 3 dòng lệnh 14, 15, 16 và tại dòng 20 thay
lệnh RET bằng:
Hai dòng lệnh:
MOV AH, 4CH
INT 21H
Để gọi chức năng cho kết thúc chương trình dạng
‘.EXE’, của DOS hoặc:
 Một dòng lệnh:
INT 20H
Để gọi chức năng cho kết thúc chương trình dạng
‘.COM’ của DOS
 Dòng 17, 18: khởi tạo giá trị cho thanh ghi đoạn
dữ liệu, cho nó trỏ tới đoạn dữ liệu mà chúng ta đã
đặt tên là DSEG. Bộ vi xử lý chỉ cho phép chuyển
giá trị vào các thanh ghi đoạn thông qua thanh ghi
đa năng AX.
 Dòng 19: tất cả các dòng lệnh của chương trình có
thể chèn vào vị trí này.
 Dòng 20: lệnh RET, nó ý nghĩa tương đương với 2
lệnh POP IP và POP CS, tuy nhiên không thể thay
RET bằng 2 lệnh này được. Lệnh RET làm cho bộ

vi xử lý thi hành chương trình đã gọi (tới thủ tục)
tiếp tục thi hành lệnh sau lời gọi đó.
 Dòng 21: ENDP là chỉ thị Assembler, khai báo
điểm kết thúc thủ tục có tên là ENTRY.
 Dòng 22: ENDS là chỉ thị Assembler, khai báo
điểm kết thúc của đoạn có tên là CSEG.
 Dòng 23: END là chỉ thị Assembler, khai báo
điểm kết thúc chương trình, với nhãn của lệnh đầu
tiên trong mô-đun chương chính là ENTRY.
b. File khả thi dạng ‘.COM’
DOS có thể chạy được hai loại file chương trình viết
bằng hợp ngữ, đó là file dạng’.com’ và ‘.exe’, chính vì vậy
người ta gọi hai loại file này là file khả thi (executable
files). Nói chung người sử dụng dùng file ‘.exe’ khi cần
tạo các chương trình lớn (số mã lệnh lớn hoặc nhiều dữ
liệu), dài hơn 64KB và dùng file ‘.com’ khi cần tạo các file
chương trình 64KB.
Việc tạo ra file ‘.com’ cần theo một quy tắc khác file
‘.exe’, sau đây là một số điểm quan trọng.
- Các quy tắc để tao ra file ‘.com’
1. Bỏ qua tất cả các khai báo đoạn (Segment) Stack, data
và extra.
2. Chỉ khai báo một đoạn mã lệnh, nhưng để tất cả lệnh
và dữ liệu vào đó.
3. Dùng chỉ thịi assume cho cả 4 thanh ghi đoạn trỏ tới
đoạn mã lệnh. Tuy nhiên thực tế chỉ cần cho CS và DS
trỏ tới đoạn mã lệnh là đủ, 2 thanh ghi đoạn còn lại SS
và ES luôn được ngầm định đặt trở tới đoạn mã lệnh.
Ví dụ:
Cseg Segment para public ‘code’

Assume cs:cseg, ds:cseg [, es:cseg] [,
ss:cseg]
Đặt trước lệnh đầu tiên của chương trình chỉ thị
assembler:

×