Home » 
        Embedded Systems
    
    Print the Table of a Given Number in 8086 Microprocessor 
    
    
    
    
        In this tutorial, we will learn how to print the table of a given number in 8086 Microprocessor?
        
            By Ayush Sharma Last updated : May 22, 2023
        
    
    Problem Statement
    Write an assembly language program in 8086 to print the table of a given integer.
    Assumptions: Suppose the inputted number is at memory location 500 and the table will be printed from starting location 600 till 609 in hexadecimal.
    
    Algorithm
    
        - Load input number address in SI and also load the address where we want output in DI . 
- Store 00 in CH register. 
- Increment value of CH by 1 and move the content of [SI] into AH register. 
- Multiply content of AL and CH and store it in AX and then move content of AL into [DI], then increment value of DI by 1. 
- Compare the value of CH and 0A, if not equal then go to step number 3 otherwise halt the program. 
8086 program to print the table of input integer
    
        
            | ADDRESS | MNEMONICS | COMMENTS | 
        
            | 400 | MOV SI, 500 | SI<-500 | 
        
            | 403 | MOV DI, 600 | DI<-600 | 
        
            | 406 | MOV CH, 00 | CH<-00 | 
        
            | 408 | INC CH | CH<-CH+1 | 
        
            | 409 | MOV AL, [SI] | AL<-[SI] | 
        
            | 40B | MUL CH | AX<-AL*CH | 
        
            | 40D | MOV [DI], AL | [DI]<-AL | 
        
            | 40F | INC DI | DI<-DI+1 | 
        
            | 410 | CMP CH, 0A | CH-0A | 
        
            | 413 | JNZ 408 | jump to address 408 if zero flag is 0 | 
        
            | 415 | HLT | Terminates the program | 
    
    Explanation
    
        - MOV SI, 500: load 500 in SI. 
- MOV DI, 600: load 600 in DI. 
- MOV CH, 00: load 00 data in CH register. 
- INC CH: increment the value inside CH register by 1. 
- MOV AL, SI: move the content of SI into AL register. 
- MUL CH: multiply the contents of AL and CH register and store in AX register. 
- MOV [DI], AL: move the contents of AL register into [DI]. 
- INC DI: increment the value of DI by 1. 
- CMP CH, 0A: subtract data inside CH register and 0A. 
- JNZ 408: jump to address 408 if zero flag is 0. 
- HLT: terminate the program.     
    
    
    
    
    
  
    Advertisement
    
    
    
  
  
    Advertisement