Nhóm lệnh số học

Một phần của tài liệu Bài giảng Vi xử lý 1 - ĐH Sư Phạm Kỹ Thuật Nam Định (Trang 32 - 35)

Các lệnh tiêu biểu như: ADD, ADC, SUB, SUBB, MUL, DIV, INC, DEC...

- Lệnh cộng: ADD ( cộng 2 toán hạng).

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

+ Mô tả: Đích = Đí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. 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.

+ Tác động lên cờ: AF, CF, PF, SF, ZP/

+ VÝ dô: MOV AL,100

ADD AL,10 ;AL=100+10=110 - Lệnh cộng có nhớ: ADC-Add With Carry ( cộng có nhớ )

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

+ Mô tả: Đích = Đích + Gốc + CF

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 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. Điều hạn chế này cũng áp dụng cho các lệnh khác có ngữ pháp tương tự.

+ CËp nhËt: AF, CF, OF, PF, SP, ZP.

+ VÝ dô: MOV AL,100

ADD AL,200 ;AL=100+200-256=44 ( tràn, CF=1)

ADC AL,2 ;AL=44+2+1=47 - Lệnh trừ: SUB - Substract ( trừ hai toán hạng không dấu)

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

+ Mô tả : Đích = Đí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, 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ập nhật : AF, CF, OF, PF, SF, ZP ( AF và PF chỉ liên quan đến 8 bit thấp).

+ VÝ dô: MOV AL,100

SUB AL,10 ;AL=100+10=90 - Lệnh trừ có mượn: SBB - Substract with Brrow (trừ có mượn)

+ Viết lệnh : SBB Đích,Gốc + Mô tả : Đích = Đích - Gốc - CF

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

- Lệnh nhân: MUL - Multiply Unisigned Byte or Word (nhân số không dấu)

Trong đó toán hạng Gốc là số nhân và có thể tìm được theo các chế độ địa chỉ khác nhau.

+ Mô tả : tuỳ theo độ dài của toán hạng Gốc 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 Gốc là số 8 bit : ALGốc

Số bị nhân phải là số 8 bit để trong AL.

Sau khi nh©n : AX  tÝch.

Nếu Gốc là số 16 bit : AXGốc

Số bị nhân phải 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ô :

MOV AL,10

MUL 100 ;AX=1000 ;AL=low(1000); AH=high(1000).

Nếu ta cần nhân một số 8 bit với một số 16 bit , ta để số 16 bit tại Gốc và số 8 bit ở AL. Số 8 bit này ở AL cần phải được mở rộng sang AH bằng cách gán AH=0 để làm cho số bị nhân nằm trong AX. Sau cùng chỉ việc dùng lệnh MUL Gốc và kết qủa có trong cặp DXAX.

+ Cập nhật : CF, OF. Không xác định : AF, PF, SF, ZP.

- Lệnh chia số không dấu: DIV - Unsingned Divide ( chia 2 số không có dấu ) + Viết lệnh: DIV Gốc

Trong đó toán hạng Gốc là số chia và có thể tìm được theo các chế độ địa chỉ khác nhau.

+ Mô tả: Tuỳ 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 Gốc là số 8 bit: AX/Gốc. Số bị chia phải là số không dấu 16 bit để trong AX.

Nếu Gốc là số 16 bit: DXAX/Gốc. Số bị chia phải là số không dấu 32 bit để trong cặp thanh ghi DXAX.

Nếu thương không phải là số nguyên nó được làm tròn theo số nguyên sát

đuôi.

Nếu Gốc = 0 hoặc thương thu được lớn hơn FFH hoặc FFFFH ( tuỳ theo độ dài của toán hạng Gốc ) thì 8086 thực hiện lệnh ngắt INT 0.

+ Không xác định: AF, CF, OF, PF, SF, ZP.

+ VÝ dô:

MOV AX,125 MOV BL,10

DIV BL ;AL=12, AH=5

- Lệnh tăng: Inc-Increment Destination Register or Memory ( Tăng toán hạng

đích thêm 1 ).

+ Viết lệnh : Inc Đích

+ Mô tả: Đích = Đích+1.

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

Lưu ý là nếu đích = FFH ( hoặc FFFFH ) thì Đích+1 = 00H (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.

- Lệnh giảm: DEC – Decrement Destination Register or Memory ( Giảm toán hạng đi 1).

+ Viết lệnh : DEC Destination + Mô tả: Đích = Đích -1.

Trong đó toán hạng đích có thể tìm đựoc thưo các chế độ địa chỉ khác nhau.

Lưu ý là 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 nhưng chạy nhanh hơn.

+ Cập nhật: AF, OF, PF, SF, ZP. Không tác động: CF/

Một phần của tài liệu Bài giảng Vi xử lý 1 - ĐH Sư Phạm Kỹ Thuật Nam Định (Trang 32 - 35)

Tải bản đầy đủ (PDF)

(210 trang)