Bài giảng Nhập môn tin học 2 - Chương 7: Ngôn ngữ máy

Nội Dung  
12.1. Tương tự với ngôn ngữ tự nhiên  
12.2. Ngôn ngữ máy tính  
12.3. Hợp ngữ  
12.4. Ngôn ngữ cấp cao  
12.5. Ngôn ngữ lập trình hướng đối tượng  
12.6. Một số ngôn ngữ lập trình cấp cao  
12.7. Các ngôn ngữ lập trình cấp cao khác  
12.8. Đặc trưng của một ngôn ngữ lập trình  
12.9. Cách lựa chọn một ngôn ngữ lập trình cho một  
ứng dụng  
12.10.Các khái niệm liện quan khác  
Mã máy thông qua ngôn ngữ tự nhiên  
• Ngôn ngữ máy tính là một biện pháp để giao  
tiếp dùng để truyền đạt thông tin giữa người  
và máy tính  
• Tất cả ngôn ngữ máy tính có từ ngữ riêng của  
chúng.  
• Khác biệt chủ yếu giữa ngôn ngữ tự nhiên và  
ngôn ngữ máy tính là ngôn ngữ tự nhiên có từ  
vựng lớn nhưng đa số ngôn ngữ máy tính sử  
dụng rất hạn chế hoặc hạn chế từ vựng.  
• Ngôn ngữ máy tính có thể phân thành các loại  
sau :  
1. Ngôn ngữ máy tính  
2. Hợp ngữ  
3. Ngôn ngữ cấp cao  
Ngôn ngữ của máy tính  
• Là ngôn ngữ của máy tính vật lý mà người dùng có  
thể lập trình được.  
• Lệnh máy :  
– Mỗi lệnh máy chỉ thực hiện một tác vụ rất đơn giản  
như 1 phép tính số học hay 1 hoạt động đọc/ghi  
vùng nhớ/thanh ghi CPU.  
– Một lệnh máy bao gôm 2 phần : mã lệnh và toán  
hạng. Mã lệnh (opcode) là một chuỗi các bit 0 và 1.  
Mỗi chuỗi bit miêu tả 1 số, mỗi số miêu tả 1 lệnh  
máy cụ thể.  
– Toán hạng xác định dữ liệu nào sẽ bị xử lý bởi lệnh  
máy tương ứng. Toán hạng cũng là chuỗi bit nhị  
phân, nhưng định dạng và ngữ nghĩa của nó phụ  
thuộc vào từng lệnh máy cụ thể.  
Ngôn ngữ của máy tính  
• Các toán hạng điển hình có trong tập lệnh của máy  
tính:  
1. Phép toán số học  
2. Phép toán logic  
3. Các thao tác rẽ nhánh.  
4. Thao tác để di chuyển dữ liệu giữa vị trí bộ nhớ và  
thanh ghi.  
5. Thao tác di chuyển dữ liệu từ các thiết bị nhập/xuất  
của máy tính.  
Ngôn ngữ của máy tính  
Ví dụ: Giả sử ta có 2 biến nguyên 16 bit, biến nguyên thứ  
nhât (i) nằm ở vị trí nhớ 200h, biến nguyên thứ 2 (j) nằm  
ở vị trí nhớ 202h.Đọan lệnh máy (Intel 80x86) sau đây sẽ  
thiết lập nội dung cho biến i = 5 rồi thiết lập nội dung của  
biến j theo công thức i+10 :  
10111000 00000101 00000000 b8 05 00  
10100011 00000000 00000002 a3 00 02  
10100001 00000000 00000002 a1 00 02  
00000101 00001010 00000000 05 0a 00  
10100011 00000010 00000010 a3 02 02  
• Con người rất khó lập trình (rất khó viết và đọc) giải quyết  
bài toán ngoài đời trực tiếp bằng ngôn ngữ máy vì quá xa  
lạ với ngôn ngữ tự nhiên mà con người đã từng dùng.  
Ngôn ngữ của máy tính  
Ưu điểm và hạn chế của ngôn ngữ máy tính  
• Ưu: Chương trình viết ngôn ngữ máy tính có thể được  
thi hành rất nhanh bằng máy tính  
• Khuyết:  
– Phụ thuộc vào máy  
– Khó viết chương trình  
– Lỗi prone  
– Khó sửa đổi  
– Lập trình viên cần ghi mã số cho từng lệnh.  
– Lập trình viên cần ghi vị trí lưu trữ của lệnh và dữ liệu ở  
dạng số.  
– Lập trình viên cần theo dõi vị trí lưu trữ của lệnh và dữ  
liệu trong khi ghi chương trình.  
Hợp ngữ  
• Hợp ngữ được sử dụng vào năm 1952. Lập trình bằng  
hợp ngữ có những đặc điểm sau :  
1. Sử dụng mã dễ nhớ theo ký tự và số thay vì mã số cho  
lệnh trong tập lệnh.  
2. Lưu trữ vị trí được biểu diễn dưới dạng địa chỉ theo ký  
tự và số thay vì địa chỉ số.  
3. Cung cấp lệnh bổ sung gọi là lệnh giả trong tập lệnh  
dùng để hướng dẫn hệ thống cách chúng ta muốn  
chương trình sẽ được dịch bằng hợp ngữ bên trong bộ  
nhớ của máy tính.  
START PROGRAM AT 0000  
START DATA  
AT 1000  
SET  
SET  
ASIDE  
ASIDE  
AN ADDRESS FOR FRST  
AN ADDRESS FOR SCND  
ASIDE AN ADDRESS FOR ANSR  
Hợp ngữ  
• Trình dịch hợp ngữ của hệ thống máy tính là hệ thống  
phần mềm, cung cấp bởi nhà sản xuất máy tính dịch  
chương trình hợp ngữ thành chương trình ngôn ngữ  
máy tính  
Input  
Output  
Assembler  
Assembler language program  
Machine language program  
One-to-once correspondence  
(Source Program)  
(Object Program)  
Figure 12.2. Illustrating the translation process of an assembler.  
Hợp ngữ  
• Ví dụ: Chương trình hợp ngữ mẫu cộng hai số và  
lưu trữ kết quả  
Mnemonic Opcode Meaning  
HLT  
CLA  
ADD  
SUB  
STA  
00  
10  
14  
15  
30  
Halt, sử dụng để kết thúc chương  
trình  
Xóa và thêm vào thanh ghi A  
Thêm nội dung vào thanh ghi A  
Trừ nội dung của thanh ghi A  
Lưu trữ thanh ghi A  
Hợp ngữ  
Thuận lợi  
• Dễ hiểu và dễ sử dụng  
• Dễ định vị hơn và sửa lỗi chính xác  
• Dễ để sửa  
• Không quan tâm đến địa chỉ  
• Dễ dàng xác định đúng vị trí  
• Hiệu xuất cao hơn ngôn ngữ máy tính  
Hợp ngữ  
Hạn chế:  
• Phụ thuộc vào  
• Người lập trình phải có kiến thức cần thiết về phần  
cứng  
• Các lệnh chỉ được viết ở mức mã máy nên viết  
chương trình bằng hợp ngữ vẫn còn mất thời gian và  
không dễ dàng lắm.  
Ngôn ngữ lập trình cấp thấp  
• Là ngôn ngữ máy chỉ có hai cấu trúc điều khiển cơ  
bản để thực hiện các lệnh : tuần tự và nhảy. Cấu trúc  
tuần tự là mặc định: sau khi thực hiện xong lệnh máy  
hiện hành sẽ thi hành tiếp lệnh đi ngay sau lệnh hiện  
hành trong chương trình. Lệnh nhảy cho phép người  
lập trình xác định lệnh kế tiếp được thi hành ở đâu  
trong chương trình.  
• “Ngôn ngữ lập trình cấp thấp" để miêu tả các ngôn  
ngữ của các máy nằm thấp dưới đáy chồng các máy  
nhiều cấp. Thí dụ ngôn ngữ máy là ngôn ngữ lập trình  
cấp thấp.  
Ngôn ngữ cấp cao  
• Là các ngôn ngữ của các máy nằm cao trên chồng  
các máy nhiều cấp.  
• Cho phép dùng nhiều kiểu dữ liệu và nhiều cấu trúc  
điều khiển hơn so với những gì được cung cấp bởi  
ngôn ngữ cấp thấp, đồng thời cách biểu diễn các lệnh  
cũng gần với ngôn ngữ tự nhiên.  
• Phân loại các ngôn ngữ lập trình cấp cao :  
– Ngôn ngữ đa mục đích: Basic, C, C++, C#, Java, Fortran,  
Pascal  
– Ngôn ngữ lập trình stack : TrueType, Postscript,...  
– Lập trình khai báo : C, Pascal,...  
– Ngôn ngữ lập trình logic, lập trình thủ tục & lập trình hàm :  
Prolog, Lisp,..  
– Ngôn ngữ lập trình hướng đối tượng : C++, C#, Java,..  
Ngôn ngữ cấp cao  
Đặc điểm của ngôn ngữ cấp cao:  
• Độc lập với máy  
• Không đòi hỏi lập trình viên biết bất cứ thứ gì về cấu  
trúc bên trong của máy tính.  
• Không xử lý mã máy.  
• Cho phép sử dụng máy tính giải quyết vấn đề ngay cả  
khi người dùng không phải là chuyên gia lập trình.  
Ngôn ngữ cấp cao  
Ví dụ:  
• Ngôn ngữ máy dạng nhị phân NNM dạng Hex NN Assembly  
10111000 00000101 00000000 b8 05 00  
10100011 00000000 00000002 a3 00 02  
10100001 00000000 00000002 a1 00 02  
00000101 00001010 00000000 05 0a 00  
10100011 00000010 00000010 a3 02 02  
mov ax, 5  
mov [200], ax  
mov ax, [200]  
add ax, 10  
mov [202],ax  
• Ngôn ngữ cấp cao C :  
short i, j; // khai báo 2 biên i, j thuộc kiểu số nguyên 16 bit  
i = 5; // chứa 5 vào biến i  
j = i +10; // chứa kết quả tính công thức i + 10 vào biến j  
Ngôn ngữ cấp cao  
• Chương trình dịch để dịch chương trình bằng ngôn  
ngữ cấp cao phải chuyển đổi thành chương trình ngôn  
ngữ máy tính tương đương với nó trước khi nó có thể  
được thi hành trên máy tính.  
Quá trình dịch của một trình biên dịch  
Ngôn ngữ cấp cao  
Minh họa quá trình biên dịch lại mã nguồn của chương trình  
Ngôn ngữ cấp cao  
• Linker (Liên kết, kết nối): được sử dụng để kết hợp  
chính xác tất cả các tập tin đối tượng chương trình  
(module) của phần mềm, và chuyển đổi chúng vào  
chương trình thực thi cuối cùng.  
Ngôn ngữ cấp cao  
Quá trình biên dịch nhiều chương trình nguồn  
và kết nối chúng với nhau để thực thi chương trình (nạp module)  
Tải về để xem bản đầy đủ
pdf 79 trang baolam 13580 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Nhập môn tin học 2 - Chương 7: Ngôn ngữ máy", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_nhap_mon_tin_hoc_chuong_7_ngon_ngu_may.pdf