### Assembly Language * Lab 5

```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
```