Tải bản đầy đủ - 78 (trang)
Nhãm lƯnh so s¸nh. CMP - Compare Byte or Word so s¸nh 2 byte hay 2 tõ.

Nhãm lƯnh so s¸nh. CMP - Compare Byte or Word so s¸nh 2 byte hay 2 tõ.

Tải bản đầy đủ - 78trang

Ngô Nh Khoa
Lệnh này dùng để quay toán hạng sang trái, MSB sẽ đợc đa qua cờ CF và LSB. CL phải chứa số lần quay mong muốn.
Sau lệnh ROL cờ CF mang giá trị cũ của MSB, vì vậy lệnh này cò dùng để 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òn cờ OF
1 nếu sau khi dịch 1 lần mà bit MSB bị thay đổi so với trớc khi dịch, cờ này
không đợc xác định sau nhiều lần dịch. Lệnh này tác động vào các cờ CF, OF. VÝ dơ:
ROL BX, 1 ; quay vßng sang trái thanh ghi BX.
MOV CL, 4 ; đặt số lần quay vào thanh ghi CL.
ROL AL, CL ; quay vòng sang trái thanh ghi AL 4 lần.
ROR - Rotate All Bit to the Right Quay vòng sang phải.
Viết lệnh: ROR Đích, CL
Mô tả:
Lệnh này dùng để quay toán hạng sang phải, LSB sẽ đợc đa qua cờ CF và MSB. CL phải chứa số lần quay mong muốn.

II.4. Nhóm lệnh so s¸nh. CMP - Compare Byte or Word so s¸nh 2 byte hay 2 từ.


Viết lệnh: CMP Đí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, nhng phải chữa dữ liệu có cùng độ dài và không đợc phép đồng thời là 2 ô nhớ.
Lệnh này chỉ tạo các cờ, không lu kết quả so sánh; sau lệnh so sánh, các toán hạng không bị thay đổi. lệnh này thờng đợc dùng để tạo cờ cho các lệnh nhảy có điều
kiện. Các cờ chính theo quan hệ đích và nguồn khi so sánh 2 số không dấu:
CF ZF
Đích = Nguån 1
§Ých Nguån §Ých Nguån
1 0.
Photocopyable
30
CF MSB
LSB
CF MSB
LSB
Ngô Nh Khoa
TEST - And Operands to Update Flag và 2 toán hạng để tạo cờ. Viết lệnh:
TEST Đí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, nhng phải chứa dữ liệu 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 này các toán hạng không bị thay đổi và
kết quả không đợc lu 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ạ.
Tác động: Xo¸: CF, OF CËp nhËt: PF, SF, ZF PF chỉ liên quan đến 8 bit thấp
Không xác định: AF. Ví dụ:
TEST AH, AL ; Và AH với AL để t¹o cê.
TEST AH, 01H ; Bit 0 cđa AH = 0?
TEST BP, [BX][DI]; Và BP với ô nhớ DS:BX+DI.
II.5 Các lệnh điều khiển chơng trình. - Lệnh nhảy không điều kiện: Lệnh này khiến bộ vi xử lý bắt đầu thực hiện
một lệnh mới tại địa chỉ đợc mô tả trong lệnh. Viết lệnh:
JMP Nhãn Lệnh mới bắt đầu tại địa chỉ ứng với nhãn. Chơng trình dịch sẽ căn cứ vào vị
trí nhãn để xác định giá trị dịch chuyển.
- Lệnh nhảy có điều kiện: Lệnh này biểu diễn thao tác: nhảy có điều kiện
tới nhãn, tức là chỉ thực hiện nhảy tới nhãn nếu điều kiện chỉ ra đúng. Nhãn phải nằm cách xa dịch đi một kho¶ng -128.. +127 byte so víi lƯnh tiÕp theo sau lệnh nhảy có
điều kiện. Chơng trình dịch sẽ căn cứ vào vị trí của nhãn để xác định giá trị dịch chuyển.
Các lệnh này không tác động đến cờ. Ngời ta phân biệt các kiểu nhảy có điều kiện:
+ Nhảy theo kiĨu kh«ng dÊu:
JAJNBE - Jump if Above Jump if Not Below or Equal.
ViÕt lÖnh: JA Nh·n
JNBE Nh·n
JAEJNB- Jump if Above or Equal Jump if Not Below. ViÕt lÖnh:
JAE Nh·n JNB Nh·n
JBJNAE- Jump if Below Jump if Not Above or Equal.
ViÕt lƯnh: JB Nh·n
JNAE Nh·n.
VÝ dơ 1: CMP AL, 10H
; so sánh AL với 10H. JA MEM1
; nhảy đến nhãn MEM1 nếu AL cao hơn 10H.
Photocopyable
31
Ngô Nh Khoa
JB MEM2 ;nhảy đến nhãn MEM2 nếu AL thấp hơn 10H.
+ Nhảy theo kiÓu cã dÊu:
JGJNLE- Jump if Greater than Jump if Not Less than or Equal.
ViÕt lÖnh: JG Nh·n
JNLE Nh·n.
JGEJNL- Jump if Greater than or Equal Jump if Not Less than. ViÕt lÖnh:
JGE Nh·n JNL Nh·n.
JLJNGE- Jump if Less than Jump if Not Greater than or Equal. JLEJNG- Jump if Less than or Equal Jump if Not Greater than.
+ Nh¶y theo kiĨu ®¬n.
JEJZ- Jump if Equal Jump if Zero. JNEJNZ- Jump if Not Equal Jump if Not Zero.
JC- Jump if Carry JNC- Jump if Not Carry
JO- Jump if Overflow JNO- Jump if Not Overflow
JS- Jump if Sign JNS- Jump if Not Sign
JPJPE- Jump if Parity Jump if Parity Even JNPJPO- Jump if Not Parity Jump if Parity Odd
- Lệnh lặp: Lệnh này dùng để lặp lại đoạn chơng trình bao gồm các lệnh nằm trong khoảng tử nhãn đến hết lệnh
LOOP Nhãn cho đến khi số lần lặp CX=0. Điều
này có nghĩa là trớc khi vào vòng lặp, ta phải đa số lần lặp mong muốn vào thanh ghi CX và sau mỗi lần thực hiện lệnh
LOOP Nhãn thì CX tự động giảm đi 1.
Nhãn phải nằm cách xa dịch một khoảng -128 byte so víi lƯnh tiÕp theo sau lƯnh LOOP.
LƯnh này không tác động đến cờ. Viết lệnh:
LOOP Nhãn Ví dụ:
XOR AL, Al; xoá AL MOV CX, 16
; số lần lặp đa vào CX Lap: INC AL
; tăng AL lên 1 LOOP Lap
; lặp lại 16 lần, AL =16. -
LƯnh JCXZ- Jump if CX is Zero nh¶y nÕu CX = 0.
Viết lệnh: JCXZ Nhãn Đây là lệnh nhảy có điều kiện tới nhãn nếu nội dung thanh đếm bằng 0 và
không có liên hệ gì với cò ZF. Nhãn phải nằm cách xa dịch đi một khoảng -128..
Photocopyable
32
Ng« Nh Khoa
+127 byte so víi lƯnh tiÕp theo sau lệnh JCXZ. Chơng trình dịch sẽ căn cứ vào vị trí nhãn để xác định giá trị dịch chuyển.
- Lệnh gọi chơng trình con CALL: Lệnh này dùng để chuyển hoạt động của
bộ vi xử lý từ chơng trình chính CTC sang chơng trình con ctc. Nếu ctc ở cùng một đoạn mã với CTC thì ta có gọi gần. Nếu CTC và ctc nằm trong hai đoạn mã khác
nhau thì ta có gọi xa. Gọi gần và gọi xa khác nhau về cách tạo địa chỉ trở về. Địa chỉ trở về là địa chỉ tiếp theo ngay sau lệnh CALL. Khi gọi gần thì chỉ cần cất IP của địa
chỉ trở về, khi gọi xa thì phải cất cả CS và IP của địa chỉ trở về. Địa chỉ trở về đợc tự động cất vào ngăn xếp khi bắt đầu thựuc hiện lệnh gọi và đợc tự ®éng lÊy ra khi gỈp
lƯnh trë vỊ RET.
-RET - Return from Procedure to Calling Program Trë vÒ CTC tõ ctc.
ViÕt lƯnh: RET
Khi gỈp lƯnh trë vỊ RET, vi xư lý kết thúc ctc lấy lại địa chỉ trở về, bao gồm địa chỉ IP trờng hợp gọi gần hoặc IP và CS trong trờng hợp gọi xa của lệnh tiếp
theo sau lệnh CALL, đợc đặt trong ngăn xếp.
- INT - Interrupt Program Excution Ngắt, gián đoạn chơng trình đang
chạy. Viết lệnh:
INT N, N = 0.. FFH Mô tả: Các thao tác của bộ vi xử lý khi chạy lệnh INT :
1. SP ←
SP - 2. {SP} ←
FR 2. IF
← 0 cấm các ngắt khác tác động, TF
0 chạy suèt.
3. SP ←
SP - 2, {SP} ←
CS. 4. SP
← SP - 2, {SP}
← IP.
5. {N x 4} →
IP, {5N x 4 + 2}
CS. Mỗi lệnh ngắt ứng với một chơng trình phục vụ ngắt khác nhau có địa chỉ lấy
từ bảng véc tơ ngắt. Bảng này gômg 256 vec tơ, chứa địa chỉ của các chơng trình phục vụ ngắt tơng ứng và chiếm 1 Kb RAM có địa chØ thÊp nhÊt.
VÝ dơ nh c¸c chơng trình phục vụ ngắt cña BIOS, cña DOS nh IO.SYS, MSDOS.SYS.
Ví dụ: INT 21H

III. Các chế độ ®Þa chØ


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

Nhãm lƯnh so s¸nh. CMP - Compare Byte or Word so s¸nh 2 byte hay 2 tõ.

Tải bản đầy đủ ngay(78 tr)

×
x