CHƯƠNG 4:LẬP TRÌNH HỢP NGỮ EMU 8086
4.4. MỘT SỐ LỆNH ASEMBLY CƠ SỞ
- Cú pháp lệnh:
Mov [Toán hạng mục đích],[Toán hạng nguồn]
-Trong đó:
+ [Toán hạng đích]: Có thể là thanh ghi (8 bít hay 16 bít), ô nhớ (chính xác h¢n là địa chỉ của một ô nhớ) hay một biến nào đó. [Toán hạng đích] không thể là hằng số.
+ [Toán hạng nguồn]: Có thể là hằng số, biến, thanh ghi, ô nhớ (chính xác h¢n là địa chỉ của một ô nhớ) nào đó.
Tác dụng: Lấy nội dung (giá trị) của [Toán hạng nguồn] đặt vào [Toán hạng đích]. Nội dung của [Toán hạng nguồn] không bị thay đổi.
-Ví dụ:
4.4.2 Các lệnh Inc-Dec-Add và Sub
-Cú pháp lệnh:
Inc [Toán hạng đích]
Add [Toán hạng đích],[Toán hạng nguồn]
Dec [Toán hạng đích]
Sub [Toán hạng đích],[Toán hạng nguồn]
Inc [Toán hạng đích]
Add [Toán hạng đích],[Toán hạng nguồn]
Dec [Toán hạng đích]
Sub [Toán hạng đích],[Toán hạng nguồn]
Inc [Toán hạng đích]
Add [Toán hạng đích],[Toán hạng nguồn]
Dec [Toán hạng đích]
Sub [Toán hạng đích],[Toán hạng nguồn]
-Trong đó: [Toán hạng đích], [Toán hạng nguồn]: tư¢ng tự lệnh Mov.
-Tác dụng:
Lệnh Inc (Increment): làm tăng giá trị của [Toán hạng đích] lên 1 đ¢n vị.
Lệnh Dec (Decrement): làm giảm giá trị của [Toán hạng đích] xuống 1 đ¢n vị.
Lệnh Add (Addition): lấy giá trị/nội dung của [Toán hạng nguồn] cộng vào giá trị/nội dung của [Toán hạng đích], kết quả này đặt vào lại [Toán hạng đích].
Lệnh Sub (Subtract): lấy giá trị/nội dung của [Toán hạng đich] trừ đi giá trị/nội dung của [Toán hạng nguồn], kết quả này đặt vào lại [Toán hạng đích].
Ví dụ:
4.4.3 Lệnh LOOP
-Cú pháp:
Loop <Nhãn đích>
Trong đó: <Nhãn đích> là một nhãn lệnh và nó phải đứng trước lệnh lặp Loop không quá 126 byte
Tác dụng:
- Khi gặp lệnh này chư¢ng trình sẽ lặp lại việc thực hiện các lệnh sau <Nhãn lệnh> đủ n lần, với n được đặt trước trong thanh ghi CX. Sau mỗi lần lặp CX tự động giảm 1 đ¢n vị (Cx = Cx - 1) và lệnh lặp sẽ dừng khi Cx = 0.
- Lệnh Loop thường được sử dụng để cài đặt các đoạn chư¢ng trình lặp với số lần lặp xác định, được cho trước trong thanh ghi Cx (tư¢ng tự các vòng lặp For trong các ngôn ngữ lập trình bậc cao).
Ví dụ:
4.4.4 Lệnh LEA(LoadEffectiveAddress)
-Cú pháp:
LEA [Toán hạng đích],[Toán hạng nguồn]
-Trong đó: [Toán hạng đích]: Là các thanh ghi 16 bit. [Toán hạng nguồn]:Là địa chỉ của một vùng nhớ hay tên của một biến.
-Tác dụng: Lệnh LEA có tác dụng chuyển địa chỉ offset của [Toán hạng nguồn] vào [Toán hạng đích]. Lệnh này thường được sử dụng để lấy địa chỉ offset của một biến đã được khai báo trong chương trình. Thanh ghi được sử dụng trong trường hợp này là thanh ghi cơ sở (BX) và thanh ghi chỉ mục (SI và DI).
Ví dụ:
4.4.5 Lệnh Mul và Div
-Cú pháp:
Mul [Toán hạng nguồn]
Imul [Toán hạng nguồn]
Div [Toán hạng nguồn]
Idiv [Toán hạng nguồn]
-Tác dụng:
MUL: Thực hiện phép nhân và lưu kết quả vào thanh ghi (thường là AX, AL hoặc AX:DX cho số nguyên lớn hơn 16 bit).
DIV: Thực hiện phép chia và lưu kết quả vào thanh ghi (thường là AX cho số nguyên 16 bit và AX:DX cho số nguyên lớn hơn).
4.4.6 Lệnh logic: NOT – AND – OR – XOR – TEST
a.NOT -Cú pháp:
NOT toán_hạng -Tác dụng:Được sử dụng để đảo ngược các bit trong toán hạng -Ví dụ:
MOV AX, 01010101b ; AX = 01010101 (trong hệ cơ số 2) NOT AX ; Đảo ngược tất cả các bit trong AX b.AND
-Cú pháp:
AND toán_hạng_đích, toán_hạng_nguồn -Tác dụng: AND thực hiện phép toán logic "và" bit-wise giữa các bit của hai toán hạng và lưu kết quả vào toán hạng đích.
-Ví dụ: MOV AX, 11001100b ; AX = 11001100 (trong hệ cơ số 2) MOV BX, 10101010b ; BX = 10101010 (trong hệ cơ số 2) AND AX, BX ; Thực hiện phép toán AND bit-wise giữa AX và BX, kết quả lưu vào AX
c.OR -Cú pháp:
OR toán_hạng_đích, toán_hạng_nguồn -Tác dụng: OR thực hiện phép toán logic "hoặc" bit-wise giữa các bit của hai toán hạng và lưu kết quả vào toán hạng đích.
-Ví dụ: MOV AX, 11001100b ; AX = 11001100 (trong hệ cơ số 2) MOV BX, 10101010b ; BX = 10101010 (trong hệ cơ số 2)
OR AX, BX ; Thực hiện phép toán OR bit-wise giữa AX và BX, kết quả lưu vào AX
d.XOR -Cú pháp: XOR toán_hạng_đích, toán_hạng_nguồn -Tác dụng: XOR thực hiện phép toán logic "XOR" (hoặc còn gọi là phép toán loại trừ) bit-wise giữa các bit của hai toán hạng và lưu kết quả vào toán hạng đích.
e.TEST -Cú pháp: TEST toán_hạng_1, toán_hạng_2 -Tác dụng: TEST thực hiện phép toán AND logic bit-wise giữa hai toán hạng mà không lưu kết quả, chỉ thiết lập các cờ (flags) dựa trên kết quả của phép toán.
-Ví dụ: MOV AX, 11001100b ; AX = 11001100 (trong hệ cơ số 2) MOV BX, 10101010b ; BX = 10101010 (trong hệ cơ số 2) TEST AX, BX ; Thực hiện phép toán AND bit-wise giữa AX và BX, không lưu kết quả, chỉ thiết lập các cờ
4.4.7 Lệnh chuyển dữ liệu qua cổng: IN và OUT
-Cú pháp:
OUT cổng, toán_hạng_nguồn
IN toán_hạng_đích, cổng -Trong đó:<Địa chỉ cổng> chính là số hiệu cổng (port) mà lệnh nhận nhiệm
vụ trao đổi dữ liệu qua nó. Địa chỉ cổng có thể được ghi trực tiếp dưới dạng một hằng số hoặc được ghi thông qua thanh ghi Dx.
-Tác dụng:
LênhIn (Input): Đọc một lượng dữ liệu 8 bít từ cổng được chỉ ra ở
<Địa chỉ cổng> đưa vào lưu trữ trong thanh ghi AL.
Nếu địa chỉ cổng nằm trong giới hạn từ 0 đến FF (hệ thập lục phân) thì có thể viết trực tiếp trong câu lệnh, nếu địa chỉ cổng lớn h¢n FF thì ta phải dùng thanh ghi Dx để chỉ định địa chỉ cổng.
LệnhOut (Output): Gởi một lượng dữ liệu 8 bít từ thanh ghi AL ra cổng được chỉ ra ở <Địa chỉ cổng>. Tương tự lệnh In, địa chỉ cổng có thể được viết trực tiếp trong câu lệnh hoặc thông qua thanh ghi Dx.
TỔNG KẾT - Kiến trúc và tổ chức máy tính liên quan đến cách mà các thành phần vật lý và
logic của một hệ thống máy tính được thiết kế, kết nối và hoạt động cùng nhau để thực hiện các chức năng cụ thể.
- Kiến trúc máy tính bao gồm:
- Bộ xử lý (CPU): Trung tâm điều khiển của máy tính, thực hiện các phép tính và quản lý hoạt động của hệ thống.
- Bộ nhớ: Bao gồm bộ nhớ chính (RAM) dùng để lưu trữ dữ liệu tạm thời và bộ nhớ lưu trữ dài hạn (ổ cứng, ổ SSD) để lưu trữ dữ liệu lâu dài.
- Bus System: Hệ thống truyền dẫn dữ liệu trong máy tính, cho phép các thành phần khác nhau giao tiếp với nhau.
- Thiết bị ngoại vi: Bao gồm các thành phần như bàn phím, chuột, màn hình và các thiết bị khác để tương tác với người dùng.
- Tổ chức máy tính liên quan đến cách thông tin được tổ chức, xử lý và truyền tải trong máy tính. Điều này bao gồm:
- Kiến trúc Von Neumann: Mô hình cơ bản của máy tính hiện đại, với bộ vi xử lý, bộ nhớ và thiết bị giao tiếp được kết hợp trong một hệ thống đơn lẻ.
- Cấu trúc bộ nhớ: Quản lý và tổ chức cách dữ liệu được lưu trữ và truy cập.
- Các giao thức và chuẩn truyền thông: Đảm bảo rằng các thiết bị và thành phần trong hệ thống có thể tương tác và truyền thông với nhau một cách hiệu quả.