1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

11 487 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 11
Dung lượng 147,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

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

Trang 2

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

Trang 3

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]

Trang 4

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

Trang 5

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

Trang 6

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

Trang 7

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

Trang 8

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

Trang 9

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):

Trang 10

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

Ngày đăng: 09/06/2016, 14:53

TỪ KHÓA LIÊN QUAN

w