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
INSTRUCTION Dec product Hex Product DX AX CF/OF
MUL BX 65535 0000FFFF 0000 FFFF 0
IMUL BX -1 FFFFFFFF FFFF FFFF 0
Ví dụ 2 : Giả sử rằng AX=FFFFh và BX=FFFFh
49
MUL BX 4294836225 FFFE0001 FFFE 0001 1
IMUL BX 1 00000001 00000 0001 0
Ví dụ 3 : Giả sử rằng AX=0FFFh
INSTRUCTION Dec product Hex Product DX AX CF/OF
MUL BX 16769025 00FFE001 00FF E001 1 IMUL BX 16769025 00FFE001 00FF E001 1 Ví dụ 4 : Giả sử rằng AX=0100h và CX=FFFFh
INSTRUCTION Dec product Hex Product DX AX CF/OF
MUL BX 16776960 00FFFF00 00FF FF00 1
IMUL BX -256 FFFFFF00 FFFF FF00 0
Ví dụ 5 : Giả sử rằng AL=80h và BL=FFh
INSTRUCTION Dec product Hex Product DX AX CF/OF
MUL BL 128 7F80 7F 80 1
IMUL BL 128 00080 00 80 1