Problem – Write an assembly language program in 8085 to print the table of input integer.
Assumption – Suppose the inputted number is at memory location 2050 and the table will be printed from starting location 3050.
- Load the value of input in accumulator from memory location 2050 and then copy it to another register say D.Also store 0A in register B.
- Store memory location 3050 in M using LXI instruction and take another register say C with its value 00.
- Now copy the content of D register to A and add the contents of A and C and store it in A then copy it to M.
- Increment value of M by 1.
- Copy content of A to C and decrements the content of B by 1 and if its value is 0 then halt otherwise again go to step number 3.
|2003||MOV D, A||D<-[A]|
|2004||MVI B 0A||B<-0A|
|2006||LXI H 3050||H<-30 & L<-50|
|2009||MVI C 00||C<-00|
|200B||MOV A, D||A<-[D]|
|200D||MOV M, A||M<-[A]|
|200F||MOV C, A||C<-[A]|
|2011||JNZ 200B||Jump to address 200B if ZF=0|
|2014||HLT||Terminates the program|
- LDA 2050: load the contents from 2050 memory location to accumulator(register A).
- MOV D, A: move the contents of accumulator to register D.
- MVI B 0A: store 0A data into register B.
- LXI H 3050: store 30 in H register and 50 in L register, hence M will contain 3050 inside it.
- MVI C 00: store 00 data in register C.
- MOV A, D: move the contents of D register into A.
- ADD C: add the contents of A and C register and store in A.
- MOV M, A: move the contents of A register into M.
- INX H: increments content of M by 1.
- MOV C, A: move the contents of A register into C.
- DCR B: decrements the content of B register by 1.
- JNZ 200B: jump to address 200B if Carry flag is not zero.
- HLT: terminate the program.