1/19/22
Chương
3: Ngôn ngữ máy
1
(Computer languages)
1/19/22
2
Phân loại ngơn ngữ máy
• Machine language
• Assembly language
• High-level language
1/19/22
3
Ngơn ngữ máy - Machine language
• Là ngơn ngữ duy nhất mà bộ vi xử lý nhận biết và thực hiện trực tiếp khơng cần sử
dụng chương trình dịch.
• Thường được viết dưới dạng chuỗi các bit nhị phân 0 và 1
• Thường khó đọc
• Lệnh thực thi nhanh vì các lệnh được đọc và thực thi trực tiếp
1/19/22
4
Định dạng của lệnh trong ngơn ngữ máy
• Opcode- Operation code
• Opcode báo cho máy tính
thực hiện lệnh nào trong tập lệnh của
máy.
• Operand (Address/Location)
• Operand chỉ cho máy tính
được thực thi.
địa chỉ của dữ liệu mà trên đó lệnh sẽ
1/19/22
5
Định dạng của lệnh trong ngôn ngữ máy
1/19/22
6
Ví dụ
1/19/22
7
Thuận lợi và bất lợi của ngơn ngữ máy
• Thuận lợi:
• Lệnh thực hiện rất nhanh
• Bất lợi:
• Phụ thuộc vào máy
• Khó viết chương trình
• Dễ bị lỗi
• Khó hiệu chỉnh
1/19/22
8
Hợp ngữ -Assembly/Symbolic language
• Là ngơn ngữ lập trình mà giải quyết những hạn chế của ngơn ngữ máy
• Sử dụng mã chữ và số thay vì mã số cho các chỉ thị trong tập lệnh.
Ví dụ: sử dụng lệnh ADD thay vì sử dụng lệnh 1110 (Binary) hoặc 14 (deciaml) cho lệnh cộng.
• Cho phép các vị trí lưu trữ được biểu diễn theo dạng thức địa chỉ chữ và số thay vì
địa chỉ số
Ví dụ: biểu diễn vị trí bộ nhớ 1000, 1001, 1002 cho lệnh FIRST, SCND, ANSR
1/19/22
9
Hợp ngữ -Assembly/Symbolic language
• Cung cấp những lệnh giả được sử dụng để hướng dẫn hệ thống gắn kết các
lệnh của chương trình vào trong bộ nhớ của máy tính.
Ví dụ:
START
PROGRAM
AT 0000
START
DATA
AT 1000
SET
ASIDE
AN
ADDRESS
FOR FRST
SET
ASIDE
AN
ADDRESS
FOR SCND
ASIDE
AN
ADDRESS
FOR ANSR
1/19/22
10
Hợp ngữ -Assembly/Symbolic language
Ví dụ:
Ngơn ngữ máy dạng nhị phân
NNM dạng Hex
10111000 00000101 00000000
b8 05 00
mov ax, 5
10100011 00000000 00000002
a3 00 02
mov [200], ax
10100001 00000000 00000002
a1 00 02
mov ax, [200]
00000101 00001010 00000000
05 0a 00
add ax, 10
10100011 00000010 00000010
a3 02 02
mov [202],ax
NN Assembly
1/19/22
11
Hợp ngữ -Assembly/Symbolic language
• Assembler: là phần mềm dùng để chương trình hợp ngữ sang ngơn ngữ máy
1/19/22
12
Hợp ngữ -Assembly/Symbolic language
• Ví dụ: các lệnh trong tập lệnh của hợp ngữ
Mnemonic Opcode
Meaning
HLT
00
Halt, để kết thúc chương trình
CLA
10
Xóa và thêm vào thanh ghi A
ADD
14
Thêm nội dung vào thanh ghi A
SUB
15
Trừ nội dung của thanh ghi A
STA
30
Lưu trữ thanh ghi A
1/19/22
13
Hợp ngữ -Assembly/Symbolic language
• Ví dụ: chương trình cộng 2 số và lưu kết quả
1/19/22
• Tương đương giữa chương trình sử dụng ngơn máy và chương
14
trình sử dụng ngơn ngữ Assembly
Memory
location
Nội dung
Ý nghĩa
Opcode
Address
0000
10
1000
Xóa và gán số thứ nhất vào FIRST của thanh ghi A
0001
14
1001
Thêm số thứ hai tại SCND của thanh ghi A
0002
30
1002
Lưu nội dung của thanh ghi A vào ANSR
0003
00
Dừng chương trình
…
1001
Lưu trữ giá trị trong FIRST
1002
Lưu trữ giá trị trong SCND
1003
Lưu trữ giá trị trong ANSR
1/19/22
15
Thuận lợi và bất lợi của ngơn ngữ Assembly
• 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ễ hiệu chỉnh chương trình
•
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
1/19/22
16
Thuận lợi và bất lợi của ngơn ngữ Assembly
• Bất lợi:
•
Phụ thuộc vào máy
•
Người lập trình phải có kiến thức 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ó.
1/19/22
17
Ngơn ngữ cấp cao – High-level language
• Khơng phụ thuộc vào máy
• Người lập trình khơng cần biết nhiều về cấu trúc bên trong của máy tính, nơi mà
chương trình viết bằng ngơn ngữ cấp cao sẽ thực thi.
• Ngơn ngữ cấp cao cho phép người lập trình sử dụng các lệnh gần với ngôn ngữ
tự nhiên, các biểu thức và các ký hiệu toán học.
1/19/22
18
Ngơn ngữ cấp cao – High-level language
• Các loại 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,..
1/19/22
19
Ngơn ngữ cấp cao – High-level language
• Ví dụ: chương trình trên được viết bằng 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
1/19/22
20
Trình biên dịch - Compiler
• Là chương trình dịch dùng để chuyển một chương trình được viết bằng ngơn
ngữ cấp cao thành một chương trình bằng ngơn ngữ máy.
• Biên dịch thành một tập các chỉ thị của ngôn ngữ máy cho các chỉ thị trong
chương trình của ngơn ngữ cấp cao.
1/19/22
21
Trình biên dịch - Compiler
• Compiler:
1/19/22
22
Trình biên dịch - Compiler
• Một máy tính sẽ hỗ trợ các chương trình dịch khác nhau cho những ngơn ngữ
cấp cao khách nhau
1/19/22
23
Trình biên dịch - Compiler
• Chương trình viết bằng ngơn ngữ cấp cao độc lập với máy tính
1/19/22
24
Trình biên dịch - Compiler
• Kiểm tra lỗi cú pháp (Syntax errors)
• Trình biên dịch ngồi chức năng biên dịch từ ngơn ngữ cấp cao sang ngơn ngữ máy
cịn có chức năng kiểm tra lỗi cú pháp.
• Các loại lỗi cú pháp:
• Ký tự và kết hợp các ký tự khơng hợp lệ
• Trình tự của các lệnh trong chương trình khơng hợp lệ
• Sử dụng tên của các biến chưa được định nghĩa
1/19/22
25
Trình biên dịch - Compiler
• Quy trình kiểm lỗi của trình
biên dịch