0% found this document useful (0 votes)
79 views

Assembly Language Lab 5 Compress

This document discusses assembly language instructions for multiplication, division, and using the stack. It includes examples of using the MUL, DIV, IMUL, and IDIV instructions to multiply and divide 8-bit and 16-bit numbers. It also covers the PUSH and POP instructions for adding and removing from the stack in a LIFO manner. Procedures for reading and printing decimal data with the INDEC and OUTDEC procedures are presented.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
79 views

Assembly Language Lab 5 Compress

This document discusses assembly language instructions for multiplication, division, and using the stack. It includes examples of using the MUL, DIV, IMUL, and IDIV instructions to multiply and divide 8-bit and 16-bit numbers. It also covers the PUSH and POP instructions for adding and removing from the stack in a LIFO manner. Procedures for reading and printing decimal data with the INDEC and OUTDEC procedures are presented.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 15

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

ESP stack
segment

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

You might also like