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