Assembly là gì? Sơ lược về ngôn ngữ máy

Assembly là gì? Sơ lược về ngôn ngữ máy

18/02/2021

Mọi thông tin khi đưa vào máy tính để xử lý đều phải được chuyển sang ngôn ngữ máy. Trong đó, Assembly là một dạng ngôn ngữ lập trình bậc thấp. Vậy cụ thể, Assembly là gì & nó có tác dụng như thế nào?

Assembly là gì?

Mỗi máy tính cá nhân có một bộ vi xử lý, quản lý các hoạt động số học, logic và điều khiển của máy tính.

Mỗi dòng bộ xử lý có một tập lệnh (instructions) xử lý các hoạt động khác nhau. Một số có thể đảm nhiệm việc lấy dữ liệu từ bàn phím. Trong khi số khác hiển thị thông tin trên màn hình và nhiều công việc khác. Tập hợp các tập lệnh này được gọi là ngôn ngữ máy (machine language).

Bộ xử lý chỉ hiểu được ngôn ngữ máy – gồm chuỗi các số 1 và 0. Tuy nhiên, ngôn ngữ máy quá tối nghĩa và phức tạp để sử dụng. Vì vậy, hợp ngữ (assembly) cấp thấp được thiết kế cho một bộ xử lý cụ thể. Chúng biểu thị các lệnh khác nhau dưới dạng mã tượng hình, dễ hiểu hơn.

Assembly là gì?

Assembly là gì?

Ưu điểm của Assembly là gì?

Hiểu được Assembly là gì đồng nghĩa với việc ta sẽ biết thêm về cách thức –

  • Chương trình giao tiếp với hệ điều hành, bộ xử lý, BIOS;
  • Dữ liệu được biểu diễn trong bộ nhớ và các thiết bị ngoại vi;
  • Bộ xử lý truy cập và thực hiện các chuỗi lệnh;
  • Các chuỗi lệnh truy cập và xử lý dữ liệu;
  • Một chương trình truy cập vào thiết bị ngoại vi.

Bên cạnh đó là cái nhìn khái quát về một số ưu điểm tiêu biểu của hợp ngữ như:

  • Yêu cầu ít bộ nhớ và thời gian thực thi hơn;
  • Đơn giản hóa các công việc phức tạp của phần cứng;
  • Phù hợp với những công việc phụ thuộc thời gian;
  • Đặc biệt phù hợp để viết các quy trình dịch vụ ngắt và các chương trình mặc định trong bộ nhớ.

Những tính năng cơ bản của phần cứng PC

Phần cứng chính trong trong một PC bao gồm: bộ xử lý, bộ nhớ và thanh ghi. Thanh ghi là các thành phần của bộ xử lý, chứa dữ liệu và địa chỉ. Để thực hiện một chương trình, hệ thống sẽ sao chép nó từ thiết bị bên ngoài vào bộ nhớ trong. Bộ xử lý thực hiện các chuỗi lệnh của chương trình.

Đơn vị cơ bản của bộ lưu trữ máy tính là bit; gồm ON (1) hoặc OFF (0). Cùng với đó là một nhóm 8 bit liên quan với nhau, tạo thành một byte.

Bộ xử lý có thể hỗ trợ các đơn vị dữ liệu sau:

  • Word: tương đương với dữ liệu 2-byte
  • Doubleword: tương ứng 4 byte (32 bit)
  • Quadword: 8 byte (64 bit)
  • Paragraph: 16 byte (128 bit)
  • Kilobyte: 1024 byte
  • Megabyte: 10242 byte

Hệ thống số nhị phân

Mọi hệ thống đều sử dụng ký hiệu vị trí. Tức là, mỗi vị trí mà chữ số được viết mang một giá trị vị trí khác nhau. Mỗi vị trí là lũy thừa cơ số 2 (với hệ nhị phân). Các lũy thừa này bắt đầu từ 0, tăng dần với gia số 1.

Lấy ví dụ, xét giá trị vị trí của một số nhị phân tương ứng với 8-bit. Cho rằng mọi bit đều nhận giá trị ON (1) – tương ứng với 11111111

Giá trị bit 1 1 1 1 1 1 1 1
Giá trị vị trí (lũy thừa cơ số 2) 128 64 32 16 8 4 2 1
Số bit 7 6 5 4 3 2 1 0

Giá trị của một số nhị phân dựa vào số lần xuất hiện của bit 1 và giá trị vị trí của nó. Vì vậy, giá trị của số nhị phân đã cho là: 1+2+4+8+16+32+64+128 = 255

Hệ thống số thập lục phân

Hệ thập lục phân sử dụng cơ số 16. Các chữ số trong hệ thống này nằm trong khoảng 0 đến 15. Theo quy ước, các kí tự từ A đến F được dùng để biểu thị các chữ chữ số thập lục phân. Tương ứng với đó là các giá trị thập phân từ 10 đến 15.

Số hệ thập lục phân được sử dụng để viết tắt các biểu diễn nhị phân dài dòng. Về cơ bản, hệ thống số thập lục phân biểu diễn một dữ liệu nhị phân bằng cách chia đôi mỗi byte. Sau đó biểu diễn mỗi nửa giá trị đó. Bảng sau cung cấp các giá trị thập phân, nhị phân, thập lục phân tương đương nhau:

Số thập phân Biểu diễn nhị phân Biểu diễn thập lục phân
0 0 0
1 1 1
2 10 2
3 11 3
4 100 4
5 101 5
6 110 6
7 111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F

Để chuyển đổi một số nhị phân sang dạng thập lục phân: Chia thành 4 nhóm liên tiếp, từ bên phải sang. Sau đó viết các nhóm trên các chữ số tương ứng của số thập lục phân.

Lấy ví dụ, số nhị phân 1000 1100 1101 0001 tương đương với 8CD1.

Ngược lại, để chuyển một số thập lục phân sang nhị phân: viết mỗi chữ số đó thành 4 chữ số nhị phân tương đương.

Ví dụ: FAD8 tương đương với số nhị phân 1111 1010 1101 1000.

Số học nhị phân

Có bốn quy tắc đơn giản cho phép cộng nhị phân, được biểu diễn qua bảng sau:

(i) (ii) (iii) (iv)
1
0 1 1 1
+0 +0 +1 +1
=0 =1 =10 =11

Trong đó, quy tắc (iii) và (iv) biểu diễn việc đưa 1 bit vào vị trí bên trái tiếp theo.

Giá trị nhị phân không dương được biểu thị bằng ký hiệu bổ sung của (ii). Theo đó, việc chuyển một số nhị phân thành giá trị âm của nó tương đương với việc đảo ngược các giá trị bit của nó, rồi thêm 1.

Truy cập dữ liệu trong bộ nhớ

Quá trình mà bộ xử lý kiểm soát việc thực thi các lệnh được gọi là chu trình tìm nạp – giải mã – thực thi (chu trình thực thi). Chu trình này gồm ba bước liên tiếp –

  • Tìm nạp lệnh từ bộ nhớ.
  • Giải mã hoặc xác định chuỗi lệnh.
  • Thực hiện lệnh.

Bộ xử lý có thể truy cập một hoặc nhiều byte bộ nhớ tại cùng một thời điểm. Hãy thử xét một số thập lục phân – 0725H. Số này yêu cầu 2 byte của bộ nhớ. Trong đó, byte bậc cao là 07 và byte bậc thập là 25.

Bộ xử lý lưu trữ dữ liệu theo chuỗi byte ngược. Tức là byte bậc thấp được lưu trong địa chỉ bô nhớ thấp và ngược lại. Vì vậy, nếu bộ xử lý mang giá trị 0725H từ thanh ghi đến bộ nhớ, nó sẽ chuyến 25 đến địa chỉ bộ nhớ thấp hơn. Sau đó đưa 07 đến địa chỉ bộ nhớ tiếp theo. Quá trình này có thể được biểu diễn như sau, trong đó x là địa chỉ bộ nhớ.

Khi bộ xử lý lấy dữ liệu số từ bộ nhớ, nó sẽ lại đảo ngược các byte. Có hai loại địa chỉ bộ nhớ

  • Địa chỉ tuyệt đối – một tham chiếu trực tiếp về vị trí cụ thể.
  • Địa chỉ đoạn (Segment address) – địa chỉ bắt đầu của bộ nhớ và giá trị offset

Theo tutorialspoint.

Bài viết liên quan
Không có bài viết liên quan
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments