DIV Unsigned Divide (Chia 2 số không có dấu)
SCASB SCASW
chuỗi byte hay chuỗi từ)
Viết lệnh: SCAS Chuỗiđích
SCASB SCASW SCASW
Mô tả:
AL - PhầntửChuỗiđích, DI ← DI ± 1 tuỳ theo DF, nếu lμ chuỗi byte, AX - PhầntửChuỗiđích, DI ← DI ± 2 tuỳ theo DF, nếu lμ chuỗi từ. (PhầntửChuỗiđích lμ do ES:DI hiện thời chỉ ra)
Lệnh SCAS so sánh AL hoặc AX với từng byte hay từng từ của xâu đích chỉ để tạo các cờ, không l−u kết quả so sánh, các toán hạng không bị thay đổi. Sau đó DI tự động tăng/giảm để chỉ vμo phần tử tiếp theo tuỳ theo cờ h−ớng. Khi dịch lệnh SCAS
Chuỗiđích, ch−ơng trình dịch dùng tên Chuỗiđích để xác định xem lúc khai báo thì Chuỗiđích có các phần tử lμ byte hay từ. Muốn chỉ rõ cho ch−ơng trình dịch hợp ngữ
rằng ta lμm việc với chuỗi byte (chứa các byte) hoặc chuỗi từ (chứa các từ), ta cũng có thể dùng lệnh SCASB hoặc SCASW. Các lệnh nμy còn th−ờng dùng kèm với REPNE/REPNZ để lặp lại việc quét một số lần hoặc quét cho tới khi tìm đ−ợc mẫu cần tìm.
Cập nhật: AF, CF,OF, PF, SF, ZP.
Ví dụ
CLD ;lμm việc với chuỗi theo chiều→, MOV AL,13 ; AL chứa mã ASCII của ký tự về
; đầu dòng (CR),
MOV CX,80 ; quét một dòng 80 ký tự,
LEA DI,STR1; DI chỉ vμo đầu chuỗi STR1 để ; tại đoạn dữ liệu ES
REPNE SCASB STR1 ; so AL với 1 phần tử ; của chuỗi để tìm CR.
SHL - Xem SAL
SHR - Shift (Logically) Right (Dịch phải logic)
Viết lệnh: SHR Đích,CL
Trong đó toán hạng đích có thể tìm đ−ợc theo các chế độ địa chỉ khác nhau.
Mô tả:
MSB LSB CF
0
Hình 3.15. Lệnh SHR.
Lệnh nμy dùng để dịch phải logic toán hạng. Sau mỗi lần dịch LSB sẽ đ−ợc đ−a qua cờ CF vμ 0 đ−a vμo MSB. Thao tác kiểu nμy đ−ợc gọi lμ dịch logic. CL phải
đ−ợc chứa sẵn số lần dịch mong muốn. Trong tr−ờng hợp dịch một lần có thể viết trực tiếp:
SHR Đích,1
(từ các bộ vi xử lý thế hệ sau nh− 80186, 80286... thì có thể viết trực tiếp kiểu nμy với số lần dịch lớn nhất lμ 255). Ta nhận thấy một lần dịch trái kiểu nμy t−ơng đ−ơng với một lần lμm phép chia cho 2 của số không dấu. Vì vậy ta có thể lμm phép chia một số không dấu cho một số không dấu t−ơng đ−ơng với 2i
bằng cách dịch phải logic số bị chia i lần.
Tác động vμo cờ:
Sau lệnh SHR cờ CF mang giá trị của cũ của LSB (vì vậy lệnh nμy còn dùng để tạo cờ CF từ giá trị của LSB 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ờ OF sẽ không đ−ợc xác định sau nhiều lần dịch.
Cập nhật: SF,ZF,PF. PF chỉ có ý nghĩa khi kết quả lμ 8 bit. Không xác định: AF.
Ví dụ
SHR BX,1 ; dịch phải logic thanh ghi BX. MOV CL,4 ; số lần dịch để trong CL,
SHR AL,CL ; dịch phải thanh ghi AL 4 lần, ; thanh ghi AL lúc nμy có 4 bit ; thấp bằng 4 bit cao ban đầu vμ
; 4 bit cao lμ 0.
STC - Set the Carry Flag (Lập cờ nhớ)
Mô tả: CF ← 1.
Không tác động đến các cờ khác.
STD - Set the Direction Flag (Lập cờ h−ớng)
Mô tả: DF ← 1.
Lệnh nμy định h−ớng thao tác cho các lệnh lμm việc với chuỗi theo chiều lùi (←). Các thanh ghi SI vμ DI liên quan sẽ đ−ợc tự động giảm khi lμm việc xong với một phần tử của chuỗi.
Không tác động đến các cờ khác.
STI - Set the Interrupt Flag (Lập cờ cho phép ngắt)
Mô tả: IF ← 1.
Lệnh nμy lập cờ cho phép ngắt để cho phép các yêu cầu ngắt tác động vμo chân INTR đ−ợc CPU nhận biết. Khi IF=1 nếu có tín hiệu INTR=1 thì 8088 sẽ bị ngắt, nó sẽ tự động cất thanh ghi cờ vμ địa chỉ trở về vμo ngăn xếp rồi chuyển sang chạy ch−ơng trình (con) phục vụ ngắt CTPVN. Tại cuối CTPVN sẽ có lệnh trở về CTC từ CTPVN (IRET) để 8088 lấy lại từ ngăn xếp giá trị của thanh ghi cờ vμ địa chỉ trở về.
Không tác động đến các cờ khác.