Trang

Thứ Tư, 24 tháng 8, 2011

Phân biệt cấu trúc chương trình .com và .exe trong Assembly

Assembly có rất nhiều cách viết chương trình. Để biên dịch ra chương trình .com và chương chương trình .exe là hoàn toàn khác nhau bởi dung lượng bộ nhớ cần cho mỗi loại là khác nhau. Chính vì vậy để giúp các bạn mới học ASM có thể phân biệt được cấu trúc của các chương trình .com và .exe tôi sẽ chia sẻ hiểu biết của mình về ASM trong bài viết này. 

I,Cấu trúc viết file .com 
Các bạn phải viết theo cấu trúc sau:
.MODEL Tiny
.CODE 
     Org 100h
     Jmp Start
     ;Các khai báo biến
Start:
     ;Thân chương trình
     Int 20h
     ;Nếu chương trình con có thì viết ở đây
End Start
Ví dụ: Chương trình xuất ra màn hình một kí tự
.MODEL Tiny
.CODE 
     Org 100h
     ;nếu có thì khai báo các biến ở đây 
Start:      
     Mov dl,'A' ;đưa kí tự A vào dl      
     Mov ah,02h ;đưa số hiệu gọi ngắt 02h để ghi ra màn hình một kí tự      
     Int 21h      
     Mov ah,08h ;gọi số hiệu ngắt 08h để tạm dưng chương trình để xem kết quả
     Int 21h      
     Int 20h    
     ;Nhường quyền cho hệ điều hành 
End Start
II,Cấu trúc chương trình .EXE
.MODEL Small
.STACK 100h
.DATA
     ;Khai báo biến ở đây
.CODE
Start:
     ;Để nạp data vào dx
     Mov ax,@DATA
     Mov ds,ax
     ;Phần thân chương trình
     ;Trả quyền lại cho hệ điều hành 
     Mov ah,4ch
     inh 21h
End Start
Ví dụ: Chương trình in chuỗi HELLO ra màn hình
.MODEL Small
.STACK 100h
.DATA
	msg db "HELLO$"
.CODE
Start:
	Mov ax,@data
	Mov ds,ax
	Mov ah,09h
	Lea dx,msg
	Int 21h
	Mov ah,08h
	Int 21h
	Int 20h
End Start
Như vậy là tôi đã trình bày xong cách viết để có thể dịch ra một chương trình .com và .exe và ở bài sau tôi sẽ hướng dẫn các bạn viết chương trình trong EMU8086