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
1 2 |
<span style="color: #000000;"> <br/>.model small <br/> .data <br/> op1 dd 12345678h <br/> op2 dd 11111111h Corel - 10 <br/> ans dd ? <br/> .code <br/> mov ax, @data <br/> mov ds, ax <br/> mov ax, word ptr op1 ; lsb of number1 in ax <br/> mov bx, word ptr op1+2 ; msb of number1 in bx <br/> mov cx, word ptr op2 ; lsb of number2 in cx <br/> mov dx, word ptr op2+2 ; msb of number1 in dx <br/> add ax, cx ; add msb + msb + carry <br/> mov word ptr ans, ax ; lsb answer <br/> mov word ptr ans+2, bx ; msb answer <br/> mov bx, word ptr ans+2 ; Result in reg bx <br/> mov dh, 2 <br/> l1: mov ch, 04h ; Count of digits to be displayed <br/> mov cl, 04h ; Count to roll by 4 bits <br/> l2: rol bx, cl ; roll bl so that msb comes to lsb <br/> mov dl, bl ; load dl with data to be displayed <br/> a nd dl, 0fH ; get only lsb <br/> cmp dl, 09 ; check if digit is 0-9 or letter A-F <br/> jbe l4 <br/> add dl, 07 ; if letter add 37H else only add 30H <br/> l4: add dl, 30H <br/> mov ah, 02 ; INT 21H (Display character) <br/> int 21H <br/> dec ch ; Decrement Count <br/> jnz l2 <br/> dec dh <br/> cmp dh, 0 <br/> mov bx, word ptr ans ; display lsb of answer <br/> jnz l1 <br/> mov ah, 4ch ; Terminate Program <br/> int 21h <br/> end <br/></span> |
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 .
1 |
<span style="font-size: 14pt; font-family: 'times new roman', times, serif;"><br/>C:\programs>tasm 32add.asm<br/>Turbo Assembler Version 3.0 Copyright (c) 1988, 1991 Borland International<br/>Assembling file: 32add.asm<br/>Error messages: None<br/>Warning messages: None<br/>Passes: 1<br/>Remaining memory: 437k<br/>C:\programs>tlink 32add.obj<br/>Turbo Link Version 3.0 Copyright (c) 1987, 1990 Borland International<br/>Warning: No stack<br/>C:\programs>32add<br/>23456789<br/></span> |
Source projectgeek.com