Ngôn ngữ Pascal và Hợp ngữ

Một phần của tài liệu CÁC CÔNG CỤ HỖ TRỢ (Trang 32 - 35)

- Lệnh điều khiển #pragma inline

3.3.2 Ngôn ngữ Pascal và Hợp ngữ

Về nguyên lý, thì liên kết giữa hợp ngữ với Pascal giông như việc liên kết giữa hợp ngữ với C. tuy nhiên cũng có một số qui tắc riêng khi thực hiên liên kết giữa hợp ngữ và Pascal.

Cũng như hợp ngữ và C, có hai cách để liên kết giữa hợp ngữ và Pascal là dùng inline assembly và viết tách biệt giữa các module hợp ngữ và module Pascal.

a . Sử dụng inline assembly trong Pascal

Phương pháp này thích hợp cho người lập trình phát triển các chương trình nhỏ. Trong phương pháp này người lập trình sẽ chèn một khối lệnh hợp ngữ vào một chương trình được viết bằng ngôn ngữ Pascal. Đây là phương pháp khá đơn giản và nhanh.

asm [<Nhãn 1>:] <lệnh 1> <các toán hạng 1> [<Nhãn 2>:] <lệnh 2> <các toán hạng 2> …. [<Nhãn n>:] <lệnh n> <các toán hạng n> end;

Khi các chương trình dịch của Pascal gặp từ khóa asm trong dòng lệnh inline-assembly thì chương trình dịch sẽ chuyển khối lệnh hợp ngữ này vào và dịch với việc qui chiếu biến Pascal ra dạng tương ứng của hợp ngữđể thực hiện.

Dưới đây là một ví dụđơn giản để minh họa:

Ví dụ 1: viết chương trình tìm giá trị nhỏ nhất (min) cho hai số bằng ngôn ngữ Pascal có chèn các dòng lệnh dạng inline-assembly. Giả sử file chưong trình là Min.pas

Program Min; Uses crt; Var

m,n: integer;

function min(int x, int y): integer;

/*Chương trình con tìm min*/

begin asm mov ax,x; cmp ax,y; jb thoat; mov ax,y;

mov x,ax; thoat: min=x; end; end; Begin Clrscr; /*Nhập vào 2 số từ bàn phím*/ write (“m= ”); readln(m); write (“n= ”); readln(n); /*In min*/

write (“So be la: ”, min(m,n));

readln(); /*chờ người dùng gõ vào 1 phím*/

End.

Để thực hiện chương trình ta gõ lệnh: tpc Min.pas <enter>

Chương trình sẽđược dịch ra file exe.

b .Viết tách biệt nhiều module hợp ngữ và Pascal riêng rẽ

Giống như viết tách biệt module và hợp ngữ, khi viết tách biệt giữa Pascal và hợp ngữ cũng phải xử lý một số vấn đề tương tự như: các lệnh điều khiển dịch, các vấn đề liên kết thông tin qua các biến, bảo vệ và khôi phục giá trị các thanh ghi đoạn và sự tương thích về kiểu dữ liệu.

Trong các vấn đề trên, hầu hết các vấn đề đều được giải quyết tương tự như việc đối với C và hợp ngữ. Sự tương thích về kiểu dữ liệu có đôi chút khác biệt, dưới đây là bảng tương thích kiểu dữ liệu giữa hợp ngữ và Pascal.

Kiểu khai báo dữ liệu trong Pascal Kiểu khai báo dữ liệu trong hợp ngữ

Byte Byte Word Word Shortint Byte Integer Word Real Fword Single DWord Double QWord Extended TByte Comp Qword Pointer Dword

Ví dụ: Tính tổng các phần tử trong một dãy số nguyên dương khi biết sốđầu tiên và số các phần tử cần tính.

Chương trình được thành hai module. Module hợp ngữ có nhiệm vụ tính tổng của các phần tử. Module này được lưu vào file sum.asm

.MODEL Small .DATA

EXTRN _sodau: WORD,_sophantu: WORD .DATA ? Tong dw ? .CODE PUBLIC Sum Sum PROC Mov CX, [sophantu] Mov AX, [sodau] Mov [tong],AX TinhTong:

Inc AX

Add [tong],AX

Loop TinhTong ; tiep tuc tinh tong neu CX<>0 Mov AX, Tong

Ret

Sum ENDP

END

Module Pascal được lưu trong file InTong.pas Program Tong; Uses crt; {F+} Var Sodau: integer; Sophantu: integer;

function Sum: integer; external; {$I sum.obj}

{F-} Begin Begin

Clrscr;

write (“So dau: ”); readln(sodau);

write (“So phan tu: ”); readln(sophantu);

write (“Tong la: ”, Sum);

End.

Để tạo ra file chạy (.exe) ta tiến hành qua các bước sau: - Dịch module hợp ngữ (để tạo file sum.obj)

- Dịch module Pascal có lên kết với file sum.obj Tpc –ml Intong <enter>

3.4 CÁC CHƯƠNG TRÌNH NGT

Ngắt là một cơ chế yêu cầu CPU tạm dừng công việc (task) đang thực hiện để thực hiện 1 công việc khác. Nói cụ thế hơn, ngắt yêu cầu CPU tạm dừng chương trình đang thực hiện để thực hiện một chương trình con phục vụ ngắt.

Người ta tạm chia ngắt ra làm hai loại: ngắt cứng và ngắt mềm. Các ngắt mềm được kích hoạt bằng lệnh INT n trong đó n là số hiệu ngắt dưới dạng một số hexa. Ngắt cứng khác vơi ngắt mềm ở chỗ không được kích hoạt bằng một lệnh INT n trong chương trình mà được kích hoạt bằng các tác động của các tín hiệu linh kiện điện tử như bàn phím, ổđĩa,..

Phần này giới thiệu về các ngắt và các dịch vụở mức BIOS và mức hệđiều hành DOS và cách viết chương trình thường trú và chương trình con ngắt.

Một phần của tài liệu CÁC CÔNG CỤ HỖ TRỢ (Trang 32 - 35)

Tải bản đầy đủ (PDF)

(54 trang)