8085 program to find 1’s and 2’s complement of 16-bit number
Prerequisite – 8085 program to find 1’s and 2’s complement of 8-bit number
Problem – – Write a program to find 1’s and 2’s complement of 16-bit number where starting address is 2000 and the number is stored at 3000 memory address and store result into 3002 and 3004 memory address.
Example –
Algorithm –
- Load a 16-bit number from memory 3000 into a register pair (H-L)
- Move content of register L to accumulator
- Complement content of accumulator
- Move content of accumulator to register L
- Move content of register H to accumulator
- Complement content of accumulator
- Move content of accumulator to register H
- Store content of register pair in memory 3002 (1’s complement)
- Increment content of register pair by 1
- Store content of register pair in memory 3004 (2’s complement)
- Stop
Program –
Memory | Mnemonics | Operands | Comment |
---|---|---|---|
2000 | LHLD | [3000] | [H-L] <- [3000] |
2003 | MOV | A, L | [A] <- [L] |
2004 | CMA | [A] <- [A^] | |
2005 | MOV | L, A | [L] <- [A] |
2006 | MOV | A, H | [A] <- [H] |
2007 | CMA | [A] <- [A^] | |
2008 | MOV | H, A | [H] <- [A] |
2009 | SHLD | [3002] | 1’s complement |
200C | INX | H | [H-L] <- [H-L] + 1 |
200D | SHLD | [3004] | 2’s complement |
2010 | HLT | Stop |
Explanation –
- A is an 8-bit accumulator which is used to load and store the data
- LHLD is used to load register pair H-L direct using 16-bit address (3 Byte instruction)
- MOV is used to transfer the data from accumulator to register(any) or register(any) to accumulator (1 Byte)
- CMA is used to complement content of accumulator (1 Byte instruction)
- SHLD is used to store data from register pair H-L into memory direct using 16-bit address (3 Byte instruction)
- INX is used to increase H-L register pair by 1 (1 Byte instruction)
- HLT is used to halt the program
Please Login to comment...