 GeeksforGeeks App
Open App Browser
Continue

# Interface 8255 with 8085 microprocessor for 1’s and 2’s complement of a number

Introduction :

The 8255 is a programmable peripheral interface chip that can be interfaced with the 8085 microprocessor to perform various input/output operations. One of the operations that can be performed using the 8255 and the 8085 microprocessor is finding the 1’s and 2’s complement of a number.

The 1’s complement of a binary number is obtained by changing all the 0s to 1s and all the 1s to 0s. For example, the 1’s complement of 1010 is 0101.

The 2’s complement of a binary number is obtained by taking the 1’s complement of the number and adding 1 to the result. For example, the 2’s complement of 1010 is 0110 (1’s complement is 0101, add 1 to get 0110).

To interface the 8255 with the 8085 microprocessor to find the 1’s and 2’s complement of a number, you can follow these steps:

1. Initialize the 8255 in mode 0 to enable simple input/output operations.
2. Assign a port to input the binary number.
3. Load the binary number into the accumulator of the 8085 microprocessor.
4. Find the 1’s complement of the binary number using the CPL instruction of the 8085 microprocessor.
5. Store the result in a second port.
6. Find the 2’s complement of the binary number using the ADD instruction of the 8085 microprocessor.
7. Store the result in a third port.

Here is a step-by-step guide to implementing these steps in code:

1. Initialize the 8255 in mode 0: The 8255 has three control registers: Control Register A (CRA), Control Register B (CRB), and Control Register C (CRC). To initialize the 8255 in mode 0, you need to set the appropriate bits in Control Register A.

## CSS

 `MOV A, ``00``H   ; Initialize control register A for mode ``0``OUT ``00``H, A   ; Send the initialization value to the ``8255`

2. Assign a port to input the binary number: You need to assign a port for the input binary number. In this example, we will use Port A for the input value.

## CSS

 `MOV A, ``00``H   ; Port A``OUT ``01``H, A   ; Assign Port A to the ``8255`

3. Load the binary number into the accumulator: You need to load the binary number from Port A into the accumulator of the 8085 microprocessor.

## C++

 `IN A, 01H   ; Load data from Port A into accumulator`

4. Find the 1’s complement of the binary number: Use the CPL instruction of the 8085 microprocessor to find the 1’s complement of the binary number.

## CSS

 `CPL   ; Find the ``1``'s complement of the binary number`

5. Store the result in a second port: Store the result of the 1’s complement in Port B.

## CSS

 `OUT ``02``H, A   ; Store the ``1``'s complement in Port B`

6. Find the 2’s complement of the binary number: Use the ADD instruction of the 8085 microprocessor to find the 2’s complement of the binary number.

## CSS

 `ADD A, #``01``H   ; Find the ``2``'s complement of the binary number`

7. Store the result in a third port: Store the result of the 2’s complement in Port C.

## C++

 `OUT 03H, A   ; Store the 2's complement in Port C`````

Problem – Interface 8255 with 8085 microprocessor and write an assembly language program to display 99 in Port A, 1’s complement of 99 in Port B, and 2’s complement of 99 in Port C. If Port addresses are 30H, 32H, and 33H resp. Example –

Algorithm –

1. Construct the control word register.
2. Input value of accumulator A.
3. Display value of A in Port A.
4. Now 1’s complement of A is calculated and result is displayed in Port B.
5. Now 2’s complement of A is calculated by adding 1 to 1’s complement of A. The result is displayed in Port C.

Program –

Explanation –

1. .MVI A, 80: Value of control register is 80.
2. OUT 33: Putting the value of A in 33H which is port number of port control register.
3. .MVI A, 99: Value of A is equals to 99.
4. OUT 30: Displaying the value of A in 30H which is port number of Port A.
5. CMA: Calculates 1’s complement of A.
6. OUT 31: Displaying 1’s complement of A in 31H which is port number of Port B.
7. INR A: 1’s complement of A is incremented by 1 i.e. 2’s complement of A is calculated.
8. OUT 32: Displaying 2’s complement of A in 32 H which is port number of Port C.
9. RET: Return.

My Personal Notes arrow_drop_up