Two 16-bit numbers are stored in register bank 2 as follows.
R0 – LSB of first number
R1 – MSB of first number
R2 – LSB of second number
R3 – MSB of second number
Write an assembly language program for 8051 microcontroller to subtract second number from first and store the result in same register bank as follows.
R4 – LSB of result
R5 – MSB of result.
Step 1: Select register bank 2.
Step 2: Load LSB of first number in Accumulator.
Step 3: Subtract LSB of Second number from LSB of first number.
Step 4: Store LSB of result.
Step 5: Load MSB of first number in Accumulator.
Step 6: Subtract MSB of second number from MSB of first Number.
Step 7: Store MSB of result.
Step 8: Stop.
SETB PSW.4 ; Set 4th bit of PSW.
CLR PSW.3 ; Clear 3rd bit of PSW.
; Above steps are performed to select register bank 2.
CLR PSW.7 ; Clear carry flag.
MOV A, R0 ; Load LSB of first number in accumulator.
SUBB A, R2 ; Subtract LSB of second number from accumulator.
MOV R4, A ; Store the LSB of result into R4.
MOV A, R1 ; Load MSB of first number in accumulator.
SUBB A, R3 ; Subtract MSB of second number from accumulator.
MOV R5, A ; Store MSB of result to R5.
LOOP: AJMP LOOP ; Stop.