For more programs on assembly language codes, you can find it here.
We have two double word numbers i.e. 32 bit numbers.
Initially we will load the first 32 bit into the registers AX and BX. AX contains the LSB while BX contains the MSB, using MOV instruction.
Now we will load the second 32 bit number into the registers CX and DX with CX containing the LSB and DX containing the MSB.
First we will add the two LSBs i.e. contents of AX and CX registers, using ADD instruction. Now we will the contents of the two MSBs i.e. contents of BX and DX registers. For this addition we will use the ADC instruction (add with carry) so that if any carry is generated in the LSB addition it will be added.
The result is stored in AX and BX registers. AX contains the LSB and BX contains the MSB after addition.
Display the result using display routine.
For example | BX : AX = 12345678 H | 12345678 H | |
DX : CX = 11111111 H | + | 11111111 H | |
23456789 H |
Algorithm to Add Two 32 Bit Numbers
Step I : Initialize the data segment.
Step II : Load the LSB of first number into AX register.
Step III : Load the MSB of first number into BX register.
Step IV : Load the LSB of the second number into CX register.
Step V : Load the MSB of the second number into DX register.
Step VI : Add the LSBs of two number.
Step VII : Add the MSBs of two numbers along with carry.
Step VIII : Display the result.
Step IX : Stop.
Program to Add Two 32 Bit Numbers
.model small
.data
op1 dd 12345678h
op2 dd 11111111h Corel - 10
ans dd ?
.code
mov ax, @data
mov ds, ax
mov ax, word ptr op1 ; lsb of number1 in ax
mov bx, word ptr op1+2 ; msb of number1 in bx
mov cx, word ptr op2 ; lsb of number2 in cx
mov dx, word ptr op2+2 ; msb of number1 in dx
add ax, cx ; add msb + msb + carry
mov word ptr ans, ax ; lsb answer
mov word ptr ans+2, bx ; msb answer
mov bx, word ptr ans+2 ; Result in reg bx
mov dh, 2
l1: mov ch, 04h ; Count of digits to be displayed
mov cl, 04h ; Count to roll by 4 bits
l2: rol bx, cl ; roll bl so that msb comes to lsb
mov dl, bl ; load dl with data to be displayed
and dl, 0fH ; get only lsb
cmp dl, 09 ; check if digit is 0-9 or letter A-F
jbe l4
add dl, 07 ; if letter add 37H else only add 30H
l4: add dl, 30H
mov ah, 02 ; INT 21H (Display character)
int 21H
dec ch ; Decrement Count
jnz l2
dec dh
cmp dh, 0
mov bx, word ptr ans ; display lsb of answer
jnz l1
mov ah, 4ch ; Terminate Program
int 21h
end
How to Run this Program
For Running this program you should have installed Tasm on you computer . If you have not installed Tasm yet please install from Here .
C:\programs>tasm 32add.asm
Turbo Assembler Version 3.0 Copyright (c) 1988, 1991 Borland International
Assembling file: 32add.asm
Error messages: None
Warning messages: None
Passes: 1
Remaining memory: 437k
C:\programs>tlink 32add.obj
Turbo Link Version 3.0 Copyright (c) 1987, 1990 Borland International
Warning: No stack
C:\programs>32add
23456789
Leave a Reply