Skip to main content

Program to exchange the contents of two memory locations

Statement: Exchange the contents of memory locations 2000H and 2001H.

Example: 

Initially,
(2000H) = 34H
(2001H) = 20H

After exchanging,
(2000H) = 20H
(2001H) = 34H

Program 1 using direct addressing instructions:

LDA 2000H               ; Get the contents of location 2000H into accumulator
MOV B, A                  ; Move the contents of accumulator into register B
LDA 2001H                ; Get the contents of location 2001H into accumulator
STA 2000H                 ; Store the contents of accumulator into location 2000H
MOV A, B                  ; Move the contents of register B into accumulator
STA 2001H                 ; Store the contents of accumulator into location 2001H
HLT                             ; Terminate program execution

Program 2 using indirect addressing instructions:

LXI H, 2000H               ; HL points to location 2000H
LXI D, 2001H               ; DE points to location 2001H
MOV B, M                    ; Get the contents of location 2000H into register B
LDAX D                        ; Get the contents of location 2001H into accumulator
MOV M, A                    ; Move the contents of accumulator into location 2000H
MOV A, B                     ; Move the contents of register B into accumulator
STAX D                         ; Store the contents of accumulator into loaction 2001H
HLT                                ; Terminate program execution

Comments

Popular posts from this blog

Program to pack the two unpacked BCD numbers

Statement: Pack the two unpacked BCD numbers stored in memory locations 2000H and 2001H and store the result in memory location 2002H. The least significant digit is stored at 2000H. Example: (2000H) = 04H (2001H) = 09H Result = (2002H) = 94H Program: LDA 2001H                        ; Obtain the most significant BCD digit RLC                                    ; Rotate left  RLC                                    ; Rotate left  RLC                                    ; Rotate left  RLC                                    ; Rotate left...

Program to add the contents of two memory locations

Statement: Add the contents of memory locations 2000H and 2001H and place the result in the memory locations 2002H and 2003H. Example: (2000H) = C3H (2001H) = 29H Result = C3H + A9H = 016CH (2002H) = 6CH (2003H) = 01H Program: LXI H, 2000H                   ; HL points to location 2000H MOV A, M                        ; Move the contents of 2000H into accumulator INX H                                ; HL points to location 2001H ADD M                              ; Add the contents of 2001H with the contents of accumulator INX H                                ; HL points to location 2002H MOV M, A      ...