150 likes | 566 Views
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.
E N D
Assembly Language – Lab5 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 DX,0 ; clear dividend, high MOV AX,8003H ; dividend, low MOV CX,100H ; divisor DIV CX ; 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. • To invoke a procedure, the CALL instruction is used. • name PROC • . • . • RET • name ENDP
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