Trong đó toán hạng đích và nguồn có thể tìm được theo các chế độ địa chỉ khác nhau, nhưng phải chứa dữ liệu có cùng độ dài và không được phép đồng thời là 2 ô nhớ và cũng không được là c
Trang 1TẬP LỆNH CỦA BỘ VI XỬ LÝ 8088
Tập lệnh của bộ vi xử lí 8088 nói chung được chia thành 12 nhóm,với các nhóm thao tác dữ liệu và nhóm đặc biệt(gồm các chỉ thị điều khiển) Tập lênh của bộ vi
xử lí 8088 bao gồm 3 nhóm lệnh chính: Nhóm lệnh tính toán số học, nhóm lệnh rẽ nhánh, nhóm lệnh Logic.Nói chung một lệnh gồm có cấu chúc sau:
1 Nhóm lệnh tính toán số học
- Lệnh cộng không nhớ: ADD Đích, Nguồn
Đích ← Đích + Nguồn
Trong đó toán hạng đích và nguồn có thể tìm được theo các chế độ địa chỉ khác nhau, nhưng phải chứa dữ liệu có cùng độ dài và không được phép đồng thời là 2 ô nhớ và cũng không được là các thanh ghi đoạn
Cập nhật: AF, CF, OF, PF, SF, ZP
Ví dụ : ADD CX,SI ; CX ← CX + SI
ADD DH,BL ; DH ← DH + BL
ADD [1000h],BX ; [1001h,1000h] ← [1001h,1000h] + BX
ADD [2000h],CL ; [2000h] ← [2000h] + CL
ADD AL,[0000h] ; AL ← AL + [0000h]
ADD BYTE PTR [SI+8],5 ; [SI+8] ← [SI+8] + 05h
- Lệnh cộng có nhớ: ADC Đích, Nguồn
Đích ← Đích + Nguồn + CF
Trong đó toán hạng đích và nguồn có thể tìm được theo các chế độ địa chỉ khác nhau, nhưng phải chứa dữ liệu có cùng độ dài và không được phép đồng thời là 2 ô nhớ và cũng không được là các thanh ghi đoạn
Cập nhật: AF, CF, OF, PF, SF, ZP
Ví dụ : ADC BX,AX ; BX ← BX + AX + CF
ADC BYTE PTR [1000h],7Ah ; [1000h] ← [1000h]+7Ah+CF
- Lệnh tăng: INC Đích
Đích ← Đích + 1
Trong đó toán hạng đích có thể tìm được theo các chế độ địa chỉ khác nhau Nếu đích = FFH ( hoặc FFFFH) thì đích+1 = 00H ( hoặc 0000H) mà không ảnh hưởng đến cờ CF Lệnh này cho kết quả tương đương như lệnh ADD đích,1 nhưng chạy nhanh hơn
Cập nhật: AF, OF, PF, SF, ZP Không tác động: CF
Ví dụ : INC CH
INC WORD PTR [1000h]
- Lệnh giảm: DEC Đích
Đích ← Đích - 1
Trong đó toán hạng đích có thể tìm được theo các chế độ địa chỉ khác nhau Nếu đích = 00H ( hoặc 0000H) thì đích-1 = FFH ( hoặc FFFFH) mà không làm ảnh hưởng đến cờ CF Lệnh này cho kết quả tương đương như lệnh SUB đích,1 nhưng chạy nhanh hơn
Trang 2Cập nhật: AF, OF, PF, SF, ZP Không tác động: CF.
- Lệnh trừ không mượn: SUB Đích
Mô tả: Nguồn Đích ← Đích - Nguồn
Trong đó toán hạng đích và nguồn có thể tìm được theo các chế độ địa chỉ khác nhau, nhưng phải chứa dữ liệu có cùng độ dài và không được phép đồng thời là 2 ô nhớ và cũng không được là các thanh ghi đoạn
Cập nhật: AF, CF, OF, PF, SF, ZP
Ví dụ : SUB DL,AL ; DL ← DL - AL
SUB CX,[DI] ; CX ← CX - [DI+1,DI]
SUB BP,4 ; BP ← BP - 4
- Lệnh trừ có mượn: SBB Đích, Nguồn
Mô tả: Đích ← Đích - Nguồn – CF
Trong đó toán hạng đích và nguồn có thể tìm được theo các chế độ địa chỉ khác nhau, nhưng phải chứa dữ liệu có cùng độ dài và không được phép đồng thời là 2 ô nhớ và cũng không được là các thanh ghi đoạn
Cập nhật: AF, CF, OF, PF, SF, ZP
Ví dụ : SBB SI,BX ; SI ← SI - BX -CF
SBB BYTE PTR [BX],2 ; [BX+1,BX] ← [BX+1,BX] - 2 - CF
- NEG Đích: Lấy bù hai của một toán hạng, đảo dấu của một toán hạng.
Mô tả: Đích ← 0 – (Đích)
Lệnh này hoàn toàn tương đương với việc lấy (NOT đích +1) làm kết quả Nếu ta lấy bù hai của -128 hoặc -32768 thì sẽ được kết quả không đổi nhưng cờ OF =1 để báo là kết quả bị tràn
Cập nhật: AF, CF, OF, PF, SF, ZF
- Lệnh nhân không dấu: MUL Nguồn
Trong đó số hạng nguồn là số nhân và có thể tìm được theo nhiều chế độ địa chỉ khác nhau
Mô tả: Tùy theo độ dài của toán hạng nguồn ta có 2 trường hợp tổ chức phép nhân, chỗ để ngầm định cho số bị nhân và kết quả
+ Nếu nguồn là số 8 bit: AL x Nguồn, số bị nhân phải là số 8 bit để trong AL, sau khi nhân: AX Tích
+ Nếu nguồn là số 16 bit: AX x Nguồn, số bị nhân là số 16 bit để trong AX, sau khi nhân: DXAX Tích
Nếu byte cao ( hoặc 16 bit cao) của 16 ( hoặc 32) bit kết quả chứa 0 thì CF=OF=0
Như vậy các cờ CF và OF sẽ báo cho ta biết có thể bỏ đi bao nhiêu số 0 trong kết quả
Ví dụ : Nếu AL=5, CH=4, sau khi thực hiện lệnh
MUL CH
Trang 3ta có AX = AL*CH = 0014h.
Nếu AX=500h, [1001h,1000h]=401h, sau khi thực hiện lệnh
MUL WORD PTR [1000h]
ta có DXAX = AX * [1001h,1000h] = 500h * 401h = 00140500h Nghĩa là DX=0014h và AX=0500h
- Lệnh nhân có dấu: IMUL Nguồn
Trong đó toán hạng nguồn là số nhân và có thể tìm được theo các chế độ địa chỉ khác nhau
Mô tả: Tùy theo độ dài của các toán hạng nguồn ta có 2 trường hợp bố trí phép nhân , số để ngầm định cho số bị nhân và kết quả
+ Nếu nguồn là số 8 bit: AL x Nguồn, số bị nhân là số có dấu 8 bit trong AL, sau khi nhân: AX Tích
+ Nếu nguồn là số 16 bit: AX x Nguồn, số bị nhân phải là số có dấu 16 bit để trong
AX, sau khi nhân: DXAX Tích
Nếu tích thu được nhỏ, không đủ lấp đầy hết được các chỗ dành cho nó thì cácbit không dùng đến được thay bằng bit dấu
Nếu byte cao ( hoặc 16 bit cao) của 16 bit ( hoặc 32 bit) kết quả chỉ chứa các giá trị của dấu thì CF=OF=0
Nếu byte cao ( hoặc 16 bit cao) của 16 bit ( hoặc 32 bit) kết quả chứa một phần kết quả thì CF=OF=1
Như vậy CF và OF sẽ báo cho ta biết kết quả cần độ dài thực chất là bao nhiêu
- Lệnh chia không dấu: DIV Nguồn
Trong đó toán hạng nguồn là số chia và có thể tìm được theo các chế độ địa chỉ khác nhau
Mô tả: Tùy theo độ dài của toán hạng gốc ta có 2 trường hợp bố trí phép chia, các chế độ ngầm định cho số bị chia và kết quả
+ Nếu nguồn là số 8 bit:
Lấy AX chia cho Nguồn_8bit, thương để trong AL, số dư để trong AH, số bị chia phải là số không dấu 16 bit
Sau khi chia: AL Thương, AH Số dư
+ Nếu nguồn là số 16 bit:
Lấy DXAX chia cho Nguồn_16bit, thương để trong AX, số dư để trong DX, số bị chia phải là số không dấu 3 bit
Sau khi chia: AX Thương, DX Số dư
Nếu thương không phải là số nguyên nó được làm tròn theo số nguyên sát dưới
Nếu nguồn = 0 hoặc thương thu được lớn hơn FFH hoặc FFFFH thì 8088 thực hiện lệnh ngắt INT 0
Không xác định: AF, CF, OF, PF, SF, ZP
Ví dụ : Nếu AX=0024h, [2000h]=05 thì sau khi thực hiện lệnh
DIV BYTE PTR [2000h]
Trang 4ta có AL=07 và AH=01.
Nếu DX=0001h, AX=0024h, BX=0200h thì sau khi thực hiện lệnh DIV BX
ta có AX=0008 và DX=0024h.
- Lệnh chia có dấu: IDIV Nguồn
Trong đó toán hạng nguồn là số chia và có thể tìm được theo các chế độ địa chỉ khác nhau Đây là lệnh dùng để chia các số nguyên có dấu Chỗ để ngầm định của
số chia, số bị chia, thương và số dư giống ở DIV Nhưng có điều khác là:
+ Sau phép chia AL chứa thương, AH chứa số dư
+ Dấu của số dư sẽ trùng với dấu của số bị chia
+ Nếu gốc =0 hoặc thương nằm ngoài dải -128… +127 hoặc -32768…+32768 thì 8088 thực hiện lệnh ngắt INT 0
Tương tự DIV - Các lệnh hiệu chỉnh khi thực hiện phép toán với mã BCD và ASCII:DAA, DAS, AAA,
AAD, AAM, AAS
2 Nhóm lệnh tính toán logic
- AND Đích, Nguồn
Mô tả: Đích ← Đích Nguồn
Trong đó toán hạng đích và nguồn có thể tìm được theo các chế độ địa chỉ khác nhau, nhưng phải chứa dữ liệu có cùng độ dài và không được phép đồng thời là 2 ô nhớ và cũng không được là các thanh ghi đoạn Phép And thường dùng để che đi/giữ lại một vài bit nào đó của một toán hạng bằng cách nhân logic toán hạng đó với các toán hạng tức thì có các bit 0/1 ở các chỗ cần che đi/giữ nguyên tương ứng
- OR Đích, Nguồn.
Mô tả: Đích ← Đích Nguồn
Trong đó toán hạng đích và nguồn có thể tìm được theo các chế độ địa chỉ khác nhau, nhưng phải chứa dữ liệu có cùng độ dài và không được phép đồng thời là 2 ô nhớ và cũng không được là các thanh ghi đoạn Phép Or thường được dùng để lập một vài bit nào đó của toán hạng bằng cách cộng logic toán hạng đó với toán hạng tức thời có các bit 1 tại các vị trí tương ứng cần thiết lập
- XOR Đích, Nguồn
Mô tả: Đích ← Đích Nguồn
Trong đó toán hạng đích và nguồn có thể tìm được theo các chế độ địa chỉ khác nhau, nhưng phải chứa dữ liệu có cùng độ dài và không được phép đồng thời là 2 ô nhớ và cũng không được là các thanh ghi đoạn Từ tính chất của phép hoặc loại trừ
ta thấy nếu toán hạng đích trùng với toán hạng nguồn thì kết quả bằng 0, do đó lệnh này còn được dùng để xóa về 0 một thanh ghi nào đó kèm theo các cờ CF và OF cũng bị xóa
Xóa: CF, OF
- NOT Đích : Lấy bù của một toán hạng, đảo bit của một toán hạng.
Mô tả: Đích ← NOT Đích
Trang 5Lệnh này không tác dụng đến các cờ
- TEST Đích, Nguồn
Mô tả: Đích Nguồn
Trong đó toán hạng đích và nguồn có thể tìm được theo các chế độ địa chỉ khác nhau, nhưng phải chứa dữ liệu có cùng độ dài và không được phép đồng thời là 2 ô nhớ và cũng không được là các thanh ghi đoạn Sau lệnh này các toán hạng không
bị thay đổi và kết quả không được lưu giữ Các cờ được tạo ra sẽ được dùng làm điều kiện cho các lệnh nhảy có điều kiện Lệnh này cũng có tác dụng che như một mặt nạ
Xóa: CF, OF
Cập nhật: PF, SF, ZP
Không xác định: AF
3 Nhóm lệnh rẽ nhánh(nhảy)
Việc sử dụng các nhóm lệnh nhảy có thể làm thay đổi tính tuần tự của các câu lệnh hợp ngữ
-
Lệnh nhảy không điều kiện :
JMP Nhãn (uncondition Jump to Specifled Destination)
Nhảy(vô điều kiện đến đích Nhãn
Lệnh mới bắt đầu tại địa chỉ ứng với nhãn ’Nhãn’ Lệnh JMP có thể nhảy lên(về phía địa chỉ thấp) hoặc nhảy xuống (về phía địa chỉ cao) và có thể xảy ra được tối
đa ½ đoạn (64kbyte)
Lệnh này không tác đọng đến các cờ
-Lệnh nhảy có điều kiện
- Dạng lệnh : Jcond shortlabel
- Giải thích : Nếu thỏa điều kiện thì nhảy tương đối
IP ← địa chỉ lệnh kế + độ dời (mở rộng dấu 16 bit)
ngược lại không làm gì cả (qua lệnh kế).
- Tác động cờ :
- Lệnh nhảy có điều kiện dùng trạng thái các cờ để làm điều kiện
- Sau đây là bảng mã lệnh nhảy có điều kiện cùng với điều kiện nhảy
Mã lệnh Giải thích Điều kiện
JE/JZ Nhảy nếu bằng/không ZF = 1
JL/JNGE Nhảy nếu nhỏ hơn/không lớn hơn hoặc bằng (SF xor OF) = 1
JLE/JNG Nhảy nếu nhỏ hơn hoặc bằng /không lớn hơn ((SF xor OF)
or ZF) = 1
JB/JNAE/JC Nhảy nếu dưới /không trên hoặc bằng/nhớ CF = 1
JBE/JNA Nhảy nếu dưới hoặc bằng /không trên (CF or ZF) = 1
JP/JPE Nhảy nếu kiểm tra / kiểm tra chẳn PF = 1
JO Nhảy nếu tràn OF = 1
Trang 6JS Nhảy nếu dấu SF = 1
JNE/JNZ Nhảy nếu không bằng/khác không ZF = 0
JNL/JGE Nhảy nếu không nhỏ hơn/lớn hơn hoặc bằng (SF xor OF) = 0
JNLE/JG Nhảy nếu không nhỏ hơn hoặc bằng /lớn hơn ((SF xor OF)
or ZF) = 0
JNB/JAE/JNC Nhảy nếu không dưới /trên hoặc bằng/không nhớ CF = 0
JNBE/JA Nhảy nếu không dưới hoặc bằng /trên (CF or ZF) = 0
JNP/JPO Nhảy nếu không kiểm tra / kiểm tra lẻ PF = 0
JNO Nhảy nếu không tràn OF = 0
JNS Nhảy nếu không dấu SF = 0
-
Ví dụ : MOV CX,3 ; thực hiện một vòng lặp làm 3 lần.
MOV AX,0
Nhan: ADD AX,12
DEC CX
JNZ Nhan ; nhảy đến lệnh tại vị trí “Nhan” nếu CX ≠ 0
MOV [3000h],AX
4 Nhóm lệnh dịch và quay bit
+SAL đích, CL: Dịch trái số học
+SHL đích, CL: Dịch trái logic
Toán hạnh đích tìm được theo các chế độ địa chỉ Hai lệnh này có tác động là dịch trái số học Mỗi lần dịch MSB được đưa qua cờ CF và giá trị 0 được đưa vào LSB, Thao tác như vậy được gọi là dcihj logic Cl phải chứa sẵn số lần dịch mong muốn
Trong trường hợp muốn dịch một lần, ta viết lệnh trực tiếp: SAL đích, 1 ứng dụng: Mỗi lần dịch tương đương việc nhân toán hạng với 2 của số không dấu Vậy nếu muốn nhân một số không dấu với 2i thì ta dịch trái số bị nhân đi i lần
CF MSB LBS
Cờ OF 1 nếu khi dịch một lần mà MSb thay đổi Không xác định sau nhiều lần dịch
CF MSB sau mỗi lần dịch , vì vậy lệnh nhảy này còn dung để tạo cờ CF từ giá trị của MSB làm điều kiện cho các lệnh nhảy có điều kiện
Cập nhật: SF, PF, ZF không xác định AF
+ SAR đích, CL: Dịch phải số học
Trang 7Toán hạng đích tìm được theo các chế độ địa chỉ.Lệnh có tác dụng dịch phải số học toán hạnh Sau nỗi lần dịch MSB được giữ lại, LSB được đưa vào cờ CF Cl chứa sẵn số lần dịch
Trong trường hợp muốn dịch một lần, ta viết trực tiếp: SAR đích, 1 ứng dụng sau mỗi lần dịch, tương đương việc chia toán hạng với 2 của số có dấu.Vậy nếu muốn chia một số có dấu với 2i ta phải dịch chuyển số bị chia đi i lần
MSB LBS CF
Cờ OF 1 nếu khi dịch một lần mà LSB thay đổi Không xác định sau nhiều lần dịch
CF LSB sau mỗi lần dịch Vì vậy lệnh này còn dung để tạo cờ CF từ giá trị của LSB làm điều kiện các lệnh nhảy có điều kiện
Cập nhật: SF, PF, ZF không xác định AF
+SHR đích, CL: Dịch phải logic
MSB LBS CF
Toán hạng đích được tìm theo các chế độ địa chỉ Lệnh có tác động giống các lệnh SAL, SHL nhưng theo chiều ngược lại
+ ROL đích, CL: Quay vòng sang trái
Toán hạng đích tìm được theo các chế độ địa chỉ
Lệnh có tác dụng quay vòng toán hạng sang trái MSB được đưa qua cờ CFZ là LSB ZCl chứa sẵn số lần quay
CF MSB LSB
Trong trường hợp muốn quay một lần ta viết lệnh: ROL đích, 1
Ta thấy, Nếu Cl = 8 và toán hạng đích là 8 bít thì kết quả không bị thay đổi vì toán hạng quay tròn đúng một vòng, còn nếu CL = 4 thì 2 nibble của toán hạng bị đổi chỗ cho nhau
Cờ OF 1 nếu khi quay một lần mà MSB thay đổi.Không xác đínhau nhiều lần quay
Trang 8CF MSB sau mỗi lần quay, vì vậy lệnh nheyr còn dung để tạo cờ CF từ giá trị của MSB làm điều kiện cho các lệnh nhảy có điều kiện
Cập nhật: CF, OF không xác định AF
+ ROR đích, CL: Quay vòng sang phải
Toán hạng đích tìm được theo các chế đọ địa chỉ Lệnh có tác dụng quay vòng toán hạng sang phải LSB được quay qua cờ CF và MSB CL phải chứa sẵn số lần quay
MSB LBS CF
+ RCL đích, CL: Quay trái qua cờ CF
Lệnh này có thể quay toán hạng sang trái thong qua cờ CF, CL phải chứa sẵn số lần quay
CF MSB LBS
Trong trường hợp muốn quay một lần, ta viết lệnh trực tiếp: RCL đích, 1
Ta thấy CL = 9 và toán hạng đích bằng 8 bit thì kết quả không bị thay đổi vì CF cùng với toán hạng thanh ghi(8 bit) quay đúng một vòng
Cờ CF 1 neeus khi quay một lần mà LSB thay đổi Không xác định sau nhiều lần quay
CF MSb sau mỗi lần quay
Cập nhật: CF, OF ( Chỉ có hai cờ này ảnh hưởng)
+ RCR đích, CL: Quay phải cờ CF
Lệnh này có thể quay toán hạng sang phải thong qua cờ CF, CL phải chứa sẵn
số lần quay
MSB LBS CF
Trong trường hợp muốn quay 1 lần ta viết trực tiếp lệnh: RCR đích, 1
Trang 9Ta thấy, nếu CL =9 và toán hạng đích là 8 bit thì kết quả không bị thay đổi vì
CF cùng với toán hạng thanh ghi (8 bit) quay đúng một vòng
CF LSB sau mỗi lần quay
Cập nhật: CF, OF (Chỉ hai cờ này bị ảnh hưởng)
5 Nhóm lệnh chuyển dữ liệu
Nhóm này thực hiện vận chuyển dữ liệu từ nơi này đến nơi khác
- MOV Đích, Nguồn : Sao chép dữ liệu Nguồn vào đích
Mô tả: Đích Nguồn
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ờ
- XCHG Đích, Nguồn : Hoán đổi nội dung của 2 toán hạng đích và nguồn
Mô tả: Đích <->Gốc
Trong đó toán hạng gốc và đích có thể tìm được theo các chế độ địa chỉ khác nhau, nhưng phải chứa dữ liệu có cùng độ dài và không được phép đồng thời là 2 ô nhớ
và cũng không được là thanh ghi đoạn Sau lệnh XCHG toán hạng này chứa nội dung cũ của toán hạng kia và ngược lại Lệnh này không tác động đến các cờ
- LDS đích, nguồn (Load Register ang DS with word from memory)
Lệnh thực hiên nạp một word từ bộ nhớ vào thanh ghi cho trong lệnh và một word tiếp theo vào thanh ghi DS(nguồn đến đích, nguồn+2 đến DS)
Ứng dụng chỉ đầu của vùng nhớ chứa chuỗi nguồn vào SI và DS trước khi dung lệnh thao tác chuỗi Lệnh này không tác động đến các cờ
Ví dụ:
LDS,Str ;Lệnh nạp vào Sl nội dung 2 ô nhớ Str và Str+1, rồi nạp vào
;DS nội dung 2 ô nhớ Str+2 và Str+3, các ô nhớ nằm trong DS
- PUSH Nguồn
Cất nội dung của một thanh ghi hoặc một ô nhớ 16 bit vào ngăn xếp
- POP Đích
Lấy dữ liệu 16 bit trong ngăn xếp để vào Đích
- XLAT
Chuyển nội dung của ô nhớ nằm trong một bảng các ô nhớ 8 bit vào thanh ghi
AL Địa chỉ
bắt đầu của bảng được xác định bởi DS:BX Địa chỉ lệch của ô nhớ trong bảng được xác định
bởi AL
6 Nhóm lệnh chuyển địa chỉ
- LEA Đích, Nguồn (Load Eff ective Address):
Trang 10Lệnh thực hiện nạp địa chỉ hiệu dụng vào thanh ghi.Toán hạng ‘đích’ thường là một trang các thanh ghi: BX, CX,DX, BP,SI,DI Toán hạng ‘nguồn’ là tên biến trong đoạn DS được chỉ ra trong lệnh hoặc ô nhớ cụ thể
Ví dụ:
LEA DX, Str ;Lệnh nạp địa chỉ offset của Str vào DX
LEA CX,[BX] ;Lệnh nạp địa chỉ hiệu dụng (EA-Effective Adress)
;EA=BX
LEA CX,[BX],[DI];Lệnh nạp địa chỉ hiệu dụng EA=BX+DI
- LDS Đích, Nguồn
Chuyển nội dung của ô nhớ Nguồn 32 bit vào cặp thanh ghi 16 bit, 16 bit cao của Nguồn
được nạp vào DS, 16 bit thấp được nạp vào thanh ghi Đích 16 bit
- LES Đích, Nguồn
Lệnh này giống lệnh LDS nhưng 2 byte tiếp theo được nạp vào thanh ghi ES
Ứng dụng: thường nạp vào DI và ES địa chỉ đầu của vùng nhớ chứa chuỗi trước khi thực hiện các lệnh thao tác chuỗi.lệnh này không tác đọng đến các cờ
Ví dụ:
LES DI,Str ;Lệnh nạp địa chỉ oíset của Str vào DX
7 Nhóm lệnh chuyển thanh ghi cờ
- LAHF
Chuyển phần thấp của thanh ghi cờ vào AH
- SAHF
Chuyển nội dung của AH vào 8 bit thấp của thanh ghi cờ
- POPF
Chuyển phần tử đỉnh ngăn xếp (16 bit) vào thanh ghi cờ Tức là Pop Word from top
ò Stack to Flag register: lấy I word từ đỉnh ngăn xếp vào thanh ghi cờ
- PUSHF
Đưa nội dung thanh ghi cờ vào ngăn xếp
8 Nhóm lệnh chuyển dữ liệu qua cổng
- IN AL, port hoặc IN AL,DX
Đọc 8 bit từ cổng vào AL Nếu địa chỉ cổng có giá trị từ 0H đến FFH thì có thể viết trực
tiếp, còn nếu địa chỉ của cổng có giá trị lớn hơn FFH thì phải đặt vào DX
- OUT port,AL hoặc OUT DX,AL
Đưa 8 bit từ thanh ghi AL ra cổng
9 Lệnh so sánh
CMP Left, Right
Left có thể là thanh ghi hoặc ô nhớ, Right có thể là thanh ghi hoặc ô nhớ hoặc hằng
số
Lệnh này so sánh Left và Right, kết quả phản ánh trong các cờ trạng thái nhưng