Assembly - Giới thiệu
Hợp ngữ là gì?
Mỗi máy tính cá nhân đều 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ó bộ hướng dẫn riêng để xử lý các hoạt động khác nhau như lấy dữ liệu nhập từ bàn phím, hiển thị thông tin trên màn hình và thực hiện nhiều công việc khác. Tập hợp các hướng dẫn này được gọi là 'hướng dẫn ngôn ngữ máy'.
Bộ xử lý chỉ hiểu các lệnh ngôn ngữ máy, là các chuỗi của 1 và 0. Tuy nhiên, ngôn ngữ máy quá tối nghĩa và phức tạp để sử dụng trong phát triển phần mềm. Vì vậy, hợp ngữ cấp thấp được thiết kế cho một họ bộ xử lý cụ thể biểu thị các lệnh khác nhau dưới dạng mã tượng trưng và ở dạng dễ hiểu hơn.
Ưu điểm của Hợp ngữ
Có hiểu biết về hợp ngữ khiến người ta nhận thức được -
- Cách các chương trình giao tiếp với hệ điều hành, bộ xử lý và BIOS;
- Cách dữ liệu được biểu diễn trong bộ nhớ và các thiết bị bên ngoài khác;
- Cách bộ xử lý truy cập và thực hiện lệnh;
- Hướng dẫn truy cập và xử lý dữ liệu như thế nào;
- Cách một chương trình truy cập các thiết bị bên ngoài.
Các ưu điểm khác của việc sử dụng hợp ngữ là -
Nó yêu cầu ít bộ nhớ và thời gian thực thi hơn;
Nó cho phép các công việc phức tạp dành riêng cho phần cứng một cách dễ dàng hơn;
Nó phù hợp với những công việc cần thời gian;
Nó phù hợp nhất để viết các quy trình dịch vụ ngắt và các chương trình thường trú trong bộ nhớ khác.
Các tính năng cơ bản của phần cứng PC
Phần cứng bên trong chính của PC bao gồm bộ xử lý, bộ nhớ và thanh ghi. Thanh ghi là các thành phần bộ xử lý chứa dữ liệu và địa chỉ. Để thực thi một chương trình, hệ thống sẽ sao chép chương trình đó từ thiết bị bên ngoài vào bộ nhớ trong. Bộ xử lý thực hiện các lệnh của chương trình.
Đơn vị cơ bản của lưu trữ máy tính là một chút; nó có thể là BẬT (1) hoặc TẮT (0) và một nhóm 8 bit liên quan tạo thành một byte trên hầu hết các máy tính hiện đại.
Vì vậy, bit chẵn lẻ được sử dụng để làm cho số bit trong một byte là số lẻ. Nếu độ chẵn lẻ là chẵn, hệ thống sẽ giả định rằng đã xảy ra lỗi chẵn lẻ (mặc dù hiếm gặp), có thể do lỗi phần cứng hoặc nhiễu điện.
Bộ xử lý hỗ trợ các kích thước dữ liệu sau:
- Word: một mục dữ liệu 2 byte
- Doubleword: một mục dữ liệu 4 byte (32 bit)
- Quadword: một mục dữ liệu 8 byte (64 bit)
- Đoạn văn: vùng 16 byte (128 bit)
- Kilobyte: 1024 byte
- Megabyte: 1,048,576 byte
Hệ thống số nhị phân
Mọi hệ thống số đều sử dụng ký hiệu vị trí, nghĩa là mỗi vị trí mà chữ số được viết có một giá trị vị trí khác nhau. Mỗi vị trí là lũy thừa của cơ số, là 2 đối với hệ thống số nhị phân và các lũy thừa này bắt đầu từ 0 và tăng thêm 1.
Bảng sau đây cho thấy các giá trị vị trí cho một số nhị phân 8 bit, trong đó tất cả các bit đều được BẬT.
Giá trị bit | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
---|---|---|---|---|---|---|---|---|
Định vị giá trị dưới dạng lũy thừa của cơ số 2 | 128 | 64 | 32 | 16 | số 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 trên sự hiện diện của 1 bit và giá trị vị trí của chúng. Vì vậy, giá trị của một số nhị phân đã cho là -
1 + 2 + 4 + 8 +16 + 32 + 64 + 128 = 255
tương tự như 2 8 - 1.
Hệ thống số thập lục phân
Hệ thống số 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 từ 0 đến 15. Theo quy ước, các chữ cái từ A đến F được dùng để biểu thị các chữ số thập lục phân tương ứng với các giá trị thập phân từ 10 đến 15.
Số thập lục phân trong máy tính đượ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 đại diện cho một dữ liệu nhị phân bằng cách chia đôi mỗi byte và biểu thị giá trị của mỗi nửa byte. Bảng sau cung cấp các giá trị tương đương thập phân, nhị phân và thập lục phân:
Số thập phân | Biểu diễn nhị phân | Biểu diễn hệ 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 |
số 8 | 1000 | số 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 số tương đương với hệ thập lục phân, hãy chia nó thành các nhóm gồm 4 nhóm liên tiếp, mỗi nhóm bắt đầu từ bên phải và viết các nhóm đó trên các chữ số tương ứng của số thập lục phân.
Example - Số nhị phân 1000 1100 1101 0001 tương đương với hệ thập lục phân - 8CD1
Để chuyển đổi một số thập lục phân sang nhị phân, chỉ cần viết mỗi chữ số thập lục phân thành 4 chữ số nhị phân tương đương của nó.
Example - Số thập lục phân FAD8 tương đương với nhị phân - 1111 1010 1101 1000
Số học nhị phân
Bảng sau minh họa bốn quy tắc đơn giản cho phép cộng nhị phân:
(Tôi) | (ii) | (iii) | (iv) |
---|---|---|---|
1 | |||
0 | 1 | 1 | 1 |
+0 | +0 | +1 | +1 |
= 0 | = 1 | = 10 | = 11 |
Quy tắc (iii) và (iv) hiển thị một bit 1 vào vị trí bên trái tiếp theo.
Example
Thập phân | Nhị phân |
---|---|
60 | 00111100 |
+42 | 00101010 |
102 | 01100110 |
Giá trị nhị phân âm được biểu thị bằng two's complement notation. Theo quy tắc này, để chuyển một số nhị phân thành giá trị âm của nó là đảo ngược các giá trị bit của nó và thêm 1 .
Example
Số 53 | 00110101 |
Đảo ngược các bit | 11001010 |
Thêm 1 | 0000000 1 |
Số -53 | 11001011 |
Để trừ một giá trị cho một giá trị khác, hãy chuyển đổi số bị trừ sang định dạng phần bù của hai và cộng các số .
Example
Trừ 42 lấy 53
Số 53 | 00110101 |
Số 42 | 00101010 |
Đảo ngược các bit của 42 | 11010101 |
Thêm 1 | 0000000 1 |
Số -42 | 11010110 |
53 - 42 = 11 | 00001011 |
Phần tràn của 1 bit cuối cùng bị mất.
Giải quyết dữ liệu trong bộ nhớ
Quá trình mà bộ xử lý kiểm soát việc thực hiện các lệnh được gọi là fetch-decode-execute cycle hoặc là execution cycle. Nó bao gồm ba bước liên tục -
- Tìm nạp lệnh từ bộ nhớ
- Giải mã hoặc xác định hướng dẫn
- Thực hiện hướng dẫn
Bộ xử lý có thể truy cập một hoặc nhiều byte bộ nhớ tại một thời điểm. Chúng ta hãy xem xét một số thập lục phân 0725H. Con số này sẽ yêu cầu hai byte bộ nhớ. Byte bậc cao hoặc byte quan trọng nhất 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à byte bậc cao ở địa chỉ bộ nhớ cao. Vì vậy, nếu bộ xử lý mang giá trị 0725H từ thanh ghi đến bộ nhớ, nó sẽ chuyển 25 đầu tiên đến địa chỉ bộ nhớ thấp hơn và 07 đến địa chỉ bộ nhớ tiếp theo.
x: địa chỉ bộ nhớ
Khi bộ xử lý lấy dữ liệu số từ bộ nhớ để đăng ký, nó 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 (hoặc độ lệch) - địa chỉ bắt đầu của đoạn bộ nhớ có giá trị bù.