Tải bản đầy đủ (.doc) (11 trang)

Bài tập lớn vi xử lý

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (143.14 KB, 11 trang )

TẬ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.


Cậ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


ta 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]
ta 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.
Lệ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
JS 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
Toá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.
CF  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
Ta 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):


Lệ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



không làm
thay đổi nội dung của Left.
10. Nhóm lệnh lặp
- LOOP Nhãn_gần
Giảm CX đi 1 đơn vị và nhảy đến Nhãn_gần nếu CX khác 0.
- LOOPE Nhãn_gần
Giảm CX đi 1 đơn vị và nhảy đến Nhãn_gần nếu ZF=1 và CX ≠ 0
- LOOPZ Nhãn_gần
Tương tự LOOPE
- LOOPNE Nhãn_gần
Giảm CX đi 1 đơn vị và nhảy đến Nhãn_gần nếu ZF=0 và CX ≠ 0
- LOOPNZ Nhãn_gần
Tương tự LOOPNE
11. Lệnh gọi chương trình con
- Gọi CTC: CALL Nhãn
- Trở về từ CTC: RET
12. Nhóm lệnh xử lý chuỗi
- Lệnh chuyển chuỗi: MOVS, MOVSB, MOVSW
- Lệnh so sánh chuỗi: CMPS, CMPSB, CMPSW
- Lệnh quét chuỗi: SCAS, SCASB, SCASW
- Lệnh nạp chuỗi: LODS, LODSB, LODSW
- Lệnh lưu chuỗi: STOS, STOSB, STOSW



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×