Saturday, 9 August 2014

8086 program to print out the multiplication table

This is an 8086 program to print out the multiplication table of a number. If you have any doubts, please let me know.
.MODEL SMALL
.DATA
MSG DB 0AH,0DH,'ENTER A NUMBER: ',0AH,'$'
NEW DB 0AH,0DH,24H
INP DB 10,0,10 DUP('$')
MULT DB 01H
MSG2 DB 0AH,0DH,'MULTIPLICATION TABLE:',0AH,'$'
.CODE
START:
MOV AX,@DATA
MOV DS,AX

LEA DX,MSG
MOV AH,09H
INT 21H

LEA DX,INP
MOV AH,0AH
INT 21H

ADD DX,02H
MOV SI,DX

LEA DX,MSG2
MOV AH,09H
INT 21H


LEA DI,MULT

MOV AH,00H
MOV CX,000AH
INC DI
MOV [DI],CX
DEC DI
MOV BL,[DI]
MOV BH,00H

AGAIN:
MOV [DI],BL
INC DI
MOV [DI],CL
DEC DI

MOV DL,[SI]
MOV AH,02H
INT 21H

MOV DL,'*'
MOV AH,02H
INT 21H

MOV DL,[DI]
CMP DL,0AH
JNE TEN
MOV DL,31H
MOV AH,02H
INT 21H
MOV DL,30H
MOV AH,02H
INT 21H

JMP EQUAL
TEN:ADD DL,30H
MOV AH,02H
INT 21H

EQUAL:MOV DL,'='
MOV AH,02H
INT 21H

MOV AL,[SI]
SUB AL,30H
MOV AH,00H
MUL BX
CALL DISPLAY
MOV BL,[DI]
MOV BH,00H
INC BX
INC DI
MOV CL,[DI]
MOV CH,00H
DEC DI
LOOP AGAIN
.EXIT

DISPLAY PROC
   MOV BX, 000AH  
   MOV DX, 0000H  
   MOV CX, 0000H  
   
L1:  MOV DX, 0000H  
   DIV BX    
   PUSH DX    
   INC CX    
   CMP AX, 0000H  
   JNE L1  
   
L2:  POP DX    
   ADD DX, 30H    
   MOV AH, 02H    
   INT 21H    
   LOOP L2
   LEA DX,NEW
   MOV AH,09H
   INT 21H
   RET      
DISPLAY ENDP
END START;

3 comments:

  1. can you write assembly language program that displays multiplication table upto 50 of a given input

    ReplyDelete
  2. https://engineering-lab.blogspot.com/2018/06/table-printing-in-8086-assembly-with.html here is complete program

    ReplyDelete