Khơng xác địn h: AF.

Một phần của tài liệu Vi xử lý máy vi tính - Chương 3 pps (Trang 48 - 52)

Ví dụ :

SAL BX,1 ; dịch trái số học thanh ghi BX MOV CL,4 ; số lần dịch để trong CL, SLH AL, CL ; dịch trái thanh ghi AL 4 lần,

; thanh ghi AL lúc này cĩ giá

; trị bằng 1/16 thanh ghi AL ban đầu. SBB - Substract with Brrow (trừ cĩ mượn)

Viết lệnh : SBB Đích,Gốc

Mơ tả : Đích ← Đích - Gốc - CF

Trong đĩ tố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 chứa cùng một loại dữ liệu và khơng được phép đồng thời là 2 ơ nhớ và cũng khơng được là thanh ghi đoạn.

Cập nhật : AF, CF, OF, PF, SF, ZP (AF và PF chỉ liên quan đến 8bit thấp).

Ví dụ : Các ví dụ sau đây cĩ thể đại diện cho các chế độ địa chỉ cĩ thể cĩ trong lệnh trừ này cũng như một số các lệnh khác với ngữ pháp tương tự.

SBB AL,74H ; AL ← AL - 47 - CF SBB CL,BL ; CL ← CL - BL - CF SBB DL,[SI] ; DL ← DL - {DS:SI} - CF

SBB AL,Table[BX] ; AL ← AL - {DS:(Table+BX)} - CF SCAS/SCASB/CASW - Scan a String Byte or a String Word (Quét chuỗi byte hay chuỗi từ)

Viết lệnh : SCAS Chuỗiđích

SCASB SCASW Mơ tả :

AL : Phầntửchuỗiđích, DI ← DI ± 1 tuỳ theo DF, nếu là chuỗi Byte,

AL : 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 tố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ên 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 chi 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 BX,1 ; lamf 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 ; dịch 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 một 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 : SHL Đích,CL

SHL Đích,CL

Trong đĩ tốn hạng đích cĩ thể tìm được theo các chế độ địa chỉ khác nhau.

Mơ tả :

MSB LSB CF

Hình 3.15. Lệnh SHR.

Lệnh này dùng để dịch phải logíc tố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ịc

logíc. CL phải được chứa sẵn số lần quay mong muốn. Trong trường hợp quay 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 quay lớn nhất là 32). 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 logíc số bị chia i lần.

Tác động vào cờ :

Sau lệnh SHR cờ CF mang giá trị 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 một 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 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 lơgíc 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.

SET - Set the Interrupt Flasg (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 ngắ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 chuỗ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.

STOS/STOSB/STOSW - Store AL/AX in String Byte/Word (cất AL/AX vào mỗi phần tử của chuỗi byte/từ)

Viết lệnh : STOS Chuỗiđích

STOSB STOSW Mơ tả :

AL : Phầntửhiệnthời, DI ← DI ± 1 tuỳ theo DF, nếu là chuỗi Byte,

AL : Phầntửhiệnthời, DI ← DI ± 2 tuỳ theo DF, nếu là chuỗi từ. (Phầntửhiệnthời của chuỗi là do ES:DI hiện thời chỉ ra)

Lệnh STOS cất AL/AX vào 1 byte/từ (1 phần tử của chuỗi đã được định nghĩa trước là chuỗi gồm các byte hoặc từ. Do DI chỉ ra trong đoạn ES, 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ên STOS 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 chi rõ cho chương trình dịch hợp ngữ rằng ta làm việc với chuỗi các byte hoặc các từ ta cũng cĩ thể dùng lệnh STOSB hoặc STOSW.

Lệnh này khơng tác động đến các cờ. Ví dụ :

MOV DI,OFFSET STR1 ; DI chỉ vào đầu chuỗi MOV CL,4 ; STR1 để tại đoạn dữ liệu

; phụ ES,

STOS STR1 ; Cất Acc vào 1

Trong thí dụ trên chương trình dịch hợp ngữ sẽ dùng tên STR1 để xác định kiểu của STR1 là byte hay là từ rồi tự động cất AL hay AX vào chuỗi.

MOV DI,OFFSET STR1 ; DI chỉ vào đầu chuỗi MOV CL,4 ; STR1 để tại đoạn

; dữ liệu phụ ES,

STOS STR1 ; Cất Acc vào 1 phần tử của

; chuỗi

Trong thí dụ thứ 2 chương trình dịch hợp ngữ sẽ hiểu là chữ “B” trong lệnh STOSB xác định kiểu của STR1 là byte và tự động cất AL vào chuỗi.

SUB - Substract ( trừ hau tốn hạng)

Viết lệnh : SUB Đích,Gốc.

Mơ tả : Đích ← Đích - Gốc

Trong đĩ tố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 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. Cĩ thể tham khảo các ví dụ của lệnh SBB.

Cập nhật : AF, CF, OF, PF, SF, ZP ( AF và PF chỉ liên quan đến 8bit thấp). bit thấp).

Một phần của tài liệu Vi xử lý máy vi tính - Chương 3 pps (Trang 48 - 52)