3. TẬP LỆNH CỦA 8086
3.3.1 Các lệnh trao đổi dữ liệu
Các câu lệnh trong nhóm cho phép trao đổi dữ liệu giữa thanh ghi và ô nhớ hay giữa thiết bị vào/ra với ô nhớ hoặc thanh ghi. Kích cỡ dữ liệu cho phép với các câu lệnh này là byte (8 bít) hoặc word (16 bít). Như vậy các câu lệnh trao đổi dữ liệu giúp nạp dữ liệu cần thiết cho các thao tác tính toán của vi xử lý. Ngoài ra các lệnh này cho phép lưu các kết quả tính toán ra bộ nhớ hoặc các thiết bị ngoại vi.
Bảng 2-2. Các lệnh trao đổi dữ liệu
Mã gợi nhớ Chức năng
MOV Di chuyển byte hay word giữa thanh ghi và ô nhớ
IN, OUT Đọc, ghi một byte hay word giữa cổng và ô nhớ
LEA Nạp địa chỉ hiệu dụng
PUSH, POP Nạp vào, lấy ra một word trong ngăn xếp. XCHG Hoán đổi byte hay word
3.3.1.aMOV – Chuyển 1 byte hay word
Viết lệnh: MOV Đích, Gốc. Mô tả: Đích Gốc
Trong đó toán hạng đích và gốc có thể tìm được theo các chế độ địa chỉ khác nhau nhưng phải có cùng độ dài và không được phép đồng thời là 2 ô nhớ hoặc 2 thanh ghi đoạn.
Lệnh này không tác động đến các cờ. Ví dụ:
MOV AL, 74H ; AL 74
MOV DL, [SI] ; DL [DS:SI]
MOV AL, Table [BX] ; AL [DS:(Table+BX)]
3.3.1.bLEA - Nạp địa chỉ hiệu dụng vào thanh ghi Viết lệnh: LEA Đích, Gốc
Trong đó:
+ Đích thường là một trong các thanh ghi: BX, CX, DX, BP, SI, DI. + Gốc là tên biến trong đoạn DS được chỉ rõ trong lệnh hoặc ô nhớ cụ thể. Mô tả: Đích Địa chỉ lệch của Gốc, hoặc
Đích Địa chỉ hiệu dụng của Gốc
Đây là lệnh để tính địa chỉ lệch của biến hoặc địa chỉ của ô nhớ chọn làm gốc rồi nạp vào thanh ghi đã chọn.
Lệnh này không tác động đến các cờ. Ví dụ:
LEA DX, MSG ; nạp địa chỉ lệch của bản tin MSG vào DX. LEA CX, [BX] [DI] ; nạp vào CX địa chỉ hiệu dụng
; do BX và DI chỉ ra: EA =BX+DI
3.3.1.c IN- Đọc dữ liệu từ cổng vào thanh ghi ACC. Viết lệnh: IN ACC, Port
Mô tả: ACC <- [Port]
Trong đó [Port ] là dữ liệu của cổng có địa chỉ là Port. Port là địa chỉ 8 bít của cổng, nó có thể có các giá trị trong khoảng 00H…FFH. Như vậy có thể có các khả năng sau:
+Nếu ACC là AL thì dữ liệu 8 bít được đưa vào từ cổng Port.
+Nếu ACC là AX thì dữ liệu 16 bít được đưa vào từ cổng Port và cổng Port+1. Địa chỉ cổng có thể được lưu trong thanh ghi DX. Cách này địa chỉ cổng hoá mềm dẻo hơn. Lúc này địa chỉ cổng nằm trong dải 0000H. . FFFFH và câu lệnh có dạng:
IN ACC, DX
Trong đó DX phải được gắn từ trước giá trị ứng với địa chỉ cổng. Lệnh này không tác động đến các cờ.
CHƯƠNG 2. BÔ XỬ LÍ INTEL 8086/8088
3.3.1.dOUT - Ghi dữ liệu từ Acc ra cổng) Viết lệnh: OUT Port, Acc Mô tả: Acc [port]
Trong đó [port]là dữ liệu của cổng có địa chỉ là Port. Port là địa chỉ 8 bít của cổng, nó có thể có các giá trị trong khoảng 00H. . . FFH. Như vậy ta có thể có các khả năng sau:
+ Nếu Acc là AL thì dữ liệu 8 bít được đưa ra cổng port.
+ Nếu Acc là AX thì dữ liệu 16 bít được đưa ra cổng port và cổng port +1. Có một cách khác để biểu diễn địa chỉ cổng là thông qua thanh ghi DX theo dạng: OUT DX, Acc
Trong đó DX phải được gán từ trước giá trị ứng với địa chỉ cổng. Lệnh này không tác động đến các cờ.