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 p5 pdf

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 (224.41 KB, 5 trang )

Các hãng viết các chương trình dịch (Assembler)
được sử dụng phổ biến từ trước tới nay đều không tích hợp
một trình có chức năng soạn thảo với Assembler. Để soạn
thảo chương trình nguồn chúng ta tự chọn cho mình một
chương trình soạn thảo văn bản, thí dụ SideKick, Turbo
Pascal, Turbol C, Yêu cầu đối với chương trình soạn
thảo văn bản là nó không sử dụng các mã ASCII mở rộng,
hoặc các ký tự điều khiển. (Tất nhiên trong chương trình
nguồn có thể có một số ký tự điều khiển như: về đầu dòng
- CR, xuống dòng - LF, tụt vào - TAB, hết file - EOF )
Sử dụng chức năng soạn thảo của Turbo Pascal để
soạn thảo rất tiện lợi, quen thuộc đối với các bạn sinh viên,
dễ trình bày chương trình nguồn đẹp.
Sử dụng SideKick cũng rất tiện lợi, các thao tác soạn
thảo khá giống Turbo Pascal. Nếu phải làm việc trên đĩa
mềm thì sử dụng SideKick tốt hơn vì nó là chương trình
thương trú nhỏ, chỉ cần nạp từ đĩa vào bộ nhớ một lần, sau
đó khi cần gọi ra để làm viêc chỉ cần kích hoạt nó trong bộ
nhớ (ấn CTRL_ALT), khi thoát soạn thảo chỉ cần ấn ESC.
Nên đặt tên mở rộng của file chương trình nguồn là
‘.asm’ vì khi sử dụng Assembler để hợp dịch chương trình
nguồn, nếu ta không chỉ ra tên mở rộng thì nó luôn ngầm
hiểu là file có tên mở rộng như vậy (‘.asm’).
Ví dụ chúng ta soạn thảo môt chương trình nguồn và
ghi lên đĩa với tên file là VIDU1.ASM.
c. Bước 3: Hợp dịch chương trình nguồn
Trên thị trường có khá nhiều Assembler, trong đó
Assembler của Microsoft được sử dụng rộng rãi nhất và
các tài liệu về nó cũng sẵn nhất. Sau Assembler của
Microsoft là Assembler của hãng Borland. Trong giáo
trình “Nhập môn Assembler là lập trình hệ thống” này


chúng ta sẽ sử dụng Assembler của Microsoft, nó tương
thích với Assembler của IBM và của Borland.
d. Bước 4: Kết nối chương trình và số liệu (bước Link)
Có một số chương trình thực hiện chức năng này, thí
dụ LINK.EXE của Microsoft, TLINK.EXE của Borland
chúng có tên gọi chung là Linker.
Chương trình LINK thực hiện việc dịch các mã đối
tượng có thể định vị lại được (relocatable object code) do
Assembler (MASM) sinh ra trong file dạng ‘.OBJ’ thành
mã máy khả thi (file dạng ‘.EXE’). LINK có 3 nhiệm vụ
chính như sau:
- Kết hợp các mô-đun đối tượng riêng biệt thành một
file khả thi. Người sử dụng thường viết chương trình theo
các mô-đun, thử riêng rẽ từng mô-đun, do vậy sẽ tạo ra
nhiều file đối tượng ‘.obj’ tương ứng. Cần sử dụng LINK
để kết nối các mô-đun đối tượng lại thành một mô-đun duy
nhất, khả thi.
Thí dụ LINK MOD1 + MOD2 + MOD3 sẽ kết nối
các file MOD1.OBJ, MOD2.OBJ,
MOD3.OBJ để tạo thành MOD1.EXE (chạy được).
- Giải quyết vấn đề tham chiếu tới các biến ngoài.
- Sinh ra một file listing - file dạng ‘.MAP’ (nếu
chúng ta yêu cầu), trong đó thể hiện các file mô-đun đối
tượng đã được kết hợp lại với nhau như thế nào.
e. Bước 5: Dịch chương trình sang File dạng’.com’
Để tạo ra file.com, ta cần chương trình exe2bin.exe
của DOS. Chương trình này chuyển một file dạng .exe
sang file dạng .com (vì vậy số 2 nằm trong tên này thường
được các nhà chuyên môn phát âm giống từ ‘to’ chứ không
phải là ‘two’!).

Thực hiện bước này như sau:
EXE2BIN VIDU1 VIDU1.COM
Thông báo lỗi của EXE2BIN
‘File cannot be converted’, đây có lẽ là thông báo lỗi
duy nhất của EXE2BIN, nguyên nhân sinh ra lỗi này có
thể như sau:
 Chương trình chính không có chỉ thị Asembler
ORG 100H đứng liền dưới khai báo CODE_SEG
SEGMENT.
 Chỉ thị END cuối cùng trong mô-đun chương
trình chính có thể thiếu nhãn của lệnh đầu tiên của
chương trình.
 Các đoạn xếp sai thứ tự, cần kiểm tra lại bằng file
‘.MAP’
 Chương trình chính không đứng đầu tiên trong
danh sách các file input của LINK.

a. File khả thi dạng ‘.EXE’.
Sau đây là mẫu chung cho một mô-đun chương trình
chính, chương trình dạng ‘.EXE’, nó bao gồm một chương
trình đầy đủ hoặc nó sẽ được kết nối với một hoặc một số
mô-đun phụ khác để tạo nên một chương trình.

1. PAGE m,n
2. TITLE (Dòng tiêu đề chính đầu mỗi trang in đặt
tại đây)
3. SUBTTL (Dòng tiêu đề phụ - dòng 2 đầu mỗi
trang in đặt tại đây)
1. (Khai báo EXTRN cho các thủ tục ngoại lai tại
đây)

2. STACK SEGMENT PARA ATACK
‘STACK’
3. DB 64 DUP(‘STACK’)(mảng gồm 64
phần tử với độ rộng là 5)
4. STACK ENDS
5. DSEG SEGMENT PARA PUBLIC
‘DATA’
6. (Tất cả dữ liệu của chương trình đặt tại đây)
7. DSEG ENDS
8. CSEG SEGMENT PARA PUBLIC
‘CODE’
9. ASSUME S:CSEG, DS:DSEG,
SS:STACK
10. ENTRY PROC FAR ; RNTRY là
tên thủ tục và cũng là nhãn
11. PUSH DS ; đặt 2 work vào stack,
đó chính là địa chỉ để
12. SUB AX,AX ; cho chương trình này
có thể trở về DOS
13. PUSH AX ; hoặc nơi mà nó được
gọi thi hành khởi tạo
14. MOV AX,DSEG ; giá trị cho thanh ghi
đoạn DS.
15. MOV DS, AX ;
16. (insert instructions here)
17. RET ; Trở về chương trình trước,
nơi nó vừa được gọi
18. ENTRY ENDP
19. CSSEG ENDS
20. END ENTRY

Mẫu tổng quát của một chương trình giải thích như
sau:

×