[Assembly] Kết hợp Assembly với ngôn ngữ bậc cao

Assembly có thể kết hợp với các ngôn ngữ bậc cao như Pascal, C/C++, … khi viết chương trình, trong bài này mình chỉ đề cập tới kết hợp Assembly với Pascal

Khi kết hợp Assembly với Pascal ta có 2 cách: chèn trực tiếp asm vào file hoặc viết tách ra các file.

1. Viết cùng 1 file.
Các đoạn chèn asm có cú pháp:

asm
    lệnh
end;

Ví dụ: Tính tổng 2 số nguyên a, b. Nhập bằng pascal và tính bằng asm.
kết hợp Assembly với Pascal
Vậy là chỉ cần chạy thôi.

2. Viết tách thành các file
Một số quy tắc:
+ Các nhãn dùng chung (tên hằng, tên biến, tên chương trình con…) của các tệp Pascal và hợp ngữ phải hiểu nhau thông qua sử dụng các lệnh điều khiển khi dịch chương trình PUBLIC và EXTERNAL cho Pascal và EXTRN cho hợp ngữ
+ Bất kỳ một khai báo nào của Pascal đều là dùng chung nên không cần khai thêm PUBLIC. Pascal chỉ còn hai báo external với các chương trình con nằm ở modul ngoài
− Với chương trình con là thủ tục thì dạng khai báo như sau:
procedure ten_thu_tuc ([đối số]); external;
− Với chương trình con là dạng hàm thì dạng khai báo như sau:
function ten_thu_tuc ([đối số]): kiểu ; external;

Ví dụ: Tính a^2 – b(c-d). Nhập a, b,c, d bằng Pascak, tính toán bằng asm.
File A2_BC_D.pas và file calproc.asm như sau:
kết hợp asm với Pascal

Sau khi có 2 file này, bạn dịch file calproc.asm sang file obj đặt trong thư mục C:tasm như trong đường dẫn $L đã định. Giờ thì Ctrl + F9 chạy file A2_BC_D.pas thôi.