Assembly Language – Lab 5 MUL, DIV, Stack, INDEC, OUTDEC MUL/IMUL Instructions • The MUL (Multiply) instruction handles unsigned data and the IMUL (Integer Multiply) handles signed data. • Example - 8-bit unsigned multiplication (5 * 10h): MOV AL,5H MOV BL,10H MUL BL ; CF=0 Example 1 • Program to multiply two 8 bit numbers. DIV/IDIV Instructions • The division operation generates two elements - a quotient and a remainder. • The DIV instruction is used or unsigned data and the IDIV is used or signed data. DIV/IDIV Instructions (Example) • Divide 8003h by 100h, using 16-bit operands: MOV MOV MOV DIV DX,0 AX,8003H CX,100H CX ; ; ; ; clear dividend, high dividend, low divisor AX = 0080h, DX = 3 CBW, CWD Instructions • CBW (convert byte to word) extends AL into AH − If bit 7 of AL is a 1, the instruction will place FF in AH. − If bit 7 of AL is a 0, the instruction will place 00 in AH. • CWD (convert word to doubleword) extends AX into DX − If bit 15 of AX is a 1, the instruction will place FFFF in DX. − If bit 15 of AX is a 0, the instruction will place 0000 in DX. • NOTE: Use this instruction only with signed arithmetic. Example 2 • Divide 16 bit numbers by an 8 bit numbers. PUSH/POP Instructions (Stack) • LIFO (Last-In, First-Out) data structure, items are added and removed from one end of the structure. • To ‘push’ an item means to insert it, and to ‘pop’ an item means to remove it. • Managed by the CPU, using two registers: • SS (stack segment) • ESP (stack pointer): point to the top of the stack. SS stack segment ESP memory Example 3 • Program to swap the content of AX and BX. Procedures • The procedure start with the name of the procedure followed by PROC (reserved word), at the end of procedure write RET, also the procedure name followed with ENDP. name PROC . . RET name ENDP • To invoke a procedure, the CALL instruction is used. INDEC / OUTDEC Procedures • Procedures used to read and print decimal data. • INDEC Code of INDEC exist in file PGM9_3.ASM • OUTDEC Code of OUTDEC exist in file PGM9_1.ASM • Include the two files using INCLUDE directive. • Syntax: INCLUDE C:\emu8086\MySource/PGM9_3.ASM INCLUDE C:\emu8086\MySource/PGM9_1.ASM OUTDEC Procedure PGM9_1.ASM INDEC Procedure PGM9_3.ASM INDEC Procedure PGM9_3.ASM INDEC / OUTDEC Procedures MAIN PROGRAM