Lệnh MUL và IMUL

Một phần của tài liệu Giáo trình về hợp ngữ (Trang 65)

c) Vòng REPEAT

6.1 Lệnh MUL và IMUL

Nhân có dấu và nhân không dấu

Trong phép nhân nhị phân số có dấu và số không dấu phải được phân biệt một cách rõ ràng . Ví dụ chúng ta muốn nhân hai số 8 bit 1000000 và 1111111. Trong diễn dịch không dấu , chúng là 128 và 255 . Tích số của chúng là 32640 = 0111111110000000b. Trong diễn dịch có dấu , chúng là -128 và -1 . Do đó tích của chúng là 128 = 0000000010000000b .

Vì nhân có dấu và không dấu dẫn đến các kết qủa khác nhau nên có 2 lệnh nhân: MUL ( multiply) nhân không dấu

IMUL ( integer multiply) nhân có dấu

Các lệnh này nhân 2 toán hạng byte hoặc từ . Nếu 2 toán hạng byte được nhân với nhau thì kết qủa là một từ 16 bit .Nếu 2 toán hạng từ được nhân với nhau thì kết qủa là một double từ 32 bit . Cú pháp của chúng là :

MUL source ; IMUL source ;

Toán hạng nguồn là thanh ghi hoặc vị trí nhớ nhưng không được là một hằng

Phép nhân kiểu byte

Đối với phép nhân mà toán hạng là kiểu byte thì AX=AL*SOURCE ;

Phép nhân kiểu từ

Đối với phép nhân mà toán hạng là kiểu từ thì DX:AX=AX*SOURCE

Ảnh hưởng của các lệnh nhân lên các cờ . SF,ZF ,AF,PF : không xác định

sau lệnh MUL CF/OF = 0 nếu nửa trên của kết qủa(DX) bằng 0 =1 trong các trường hợp khác

sau lệnh IMUL CF/OF = 0 nếu nửa trên của kết qủa có bit dấu giống như bit dấu của nửa thấp .

= 1 trong các trường hợp khác Sau đây chúng ta sẽ lấy vài ví dụ .

Ví dụ 1 : Giả sử rằng AX=1 và BX=FFFFh

Ví dụ 2 : Giả sử rằng AX=FFFFh và BX=FFFFh

Ví dụ 3 : Giả sử rằng AX=0FFFh

Ví dụ 4 : Giả sử rằng AX=0100h và CX=FFFFh

Một phần của tài liệu Giáo trình về hợp ngữ (Trang 65)

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

(95 trang)
w