Tải bản đầy đủ (.pdf) (50 trang)

Bài giảng Nhập môn Tin học: Chương 3 - Từ Thị Xuân Hiền

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.48 MB, 50 trang )

8/9/18

Chương
3: Ngôn ngữ máy
1

(Computer languages)


8/9/18
2

Phân loại ngôn ngữ máy
• Machine language
• Assembly language
• High-level language


8/9/18
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


8/9/18
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ẽ


8/9/18
5

Định dạng của lệnh trong ngôn ngữ máy


8/9/18
6

Ví dụ


8/9/18
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


8/9/18
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


8/9/18
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


8/9/18
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


8/9/18
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


8/9/18
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


8/9/18
13

Hợp ngữ -Assembly/Symbolic language
• Ví dụ: chương trình cộng 2 số và lưu kết quả


8/9/18

• 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


8/9/18
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


8/9/18
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ó.


8/9/18
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.


8/9/18
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,..


8/9/18
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


8/9/18
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.


8/9/18
21

Trình biên dịch - Compiler
• Compiler:


8/9/18
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


8/9/18
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


8/9/18
24

Trình biên dịch - Compiler
• Kiểm tra lỗi cú pháp (Syntax errors)
• Trình biên dịch ngoà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


8/9/18
25

Trình biên dịch - Compiler

• Quy trình kiểm lỗi của trình
biên dịch



×