Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;------------ASSEMBLY CODE TO ADD TWO ANY DIGIT DECIMAL---------------
- .MODEL SMALL
- .STACK 100H
- .DATA
- PROMPT_1 DB "ENTER THE BIGGER NUMBER : $"
- PROMPT_2 DB 0AH, 0DH, "ENTER THE SMALLER NUMBER : $"
- RES DB 0AH, 0DH, "RESULT = $"
- ;-----------------ARRAY FOR 1ST NUMBER---------------
- A DB 100 DUP(?)
- ;-----------------ARRAY FOR 2ND NUMBER---------------
- B DB 100 DUP(?)
- ;-----------------RESULT ARRAY-----------------------
- S DB 100 DUP(?)
- .CODE
- MAIN PROC
- ;------------LOAD DATA--------------
- MOV AX, @DATA
- MOV DS, AX
- ;-------SHOW FIRST MESSAGE----------
- MOV AH, 9
- LEA DX, PROMPT_1
- INT 21H
- ;----------TAKE INPUT---------------
- MOV AH, 1
- MOV DI, 0
- ;------------INPUT LOOP-------------
- FIRST_NUMBER_INPUT:
- INT 21H
- ;-----------CHECK IF ENTER IS PRESSED----------
- CMP AL, 0DH
- ;----------IF SO JUMP TO NEXT NUMBER-----------
- JE NEXT_PROMPT
- ;----------ELSE CONVERT TO DECIMAL-------------
- SUB AL, 30H
- ;----------STORE IN ARRAY------------
- MOV A[DI], AL
- INC DI
- JMP FIRST_NUMBER_INPUT
- NEXT_PROMPT:
- ;----------MOVE ARRAY SIZE TO BX---------------
- MOV BX, DI
- MOV AH, 9
- LEA DX, PROMPT_2
- INT 21H
- ;-------------TAKE INPUT-------------
- MOV AH, 1
- MOV DI, 0
- SECOND_NUMBER_INPUT:
- INT 21H
- ;------CHECK IF ENTER IS PRESSED---------------
- CMP AL, 0DH
- ;----------IF SO JUMP TO NEXT PROMPT-----------
- JE NEXT_SECTION
- ;----------ELSE CONVERT TO DECIMAL-------------
- SUB AL, 30H
- ;----------STORE IN ARRAY-------------
- MOV B[DI], AL
- INC DI
- JMP SECOND_NUMBER_INPUT
- NEXT_SECTION:
- MOV CX, DI
- RESULT_MESSAGE:
- MOV AH, 9
- LEA DX, RES
- INT 21H
- ;-----------------ADDITION------------
- ;----------INITIALIZE REGISTERS-------
- MOV DI, 0
- MOV AH, 0
- MOV AL, 0
- MOV DX, 0
- ADD_LOOP:
- ;---------CLEAR AX REGISTER-----------
- MOV AX, 0
- ;---------PASS ARRAY INDEX OF FIRST NUMBER TO DI------
- MOV DI, BX
- ADD AL, A[DI-1]
- MOV DI, CX
- ;---------ADD ARRAYS ELEMENT BY ELEMENT---------------
- ADD AL, B[DI-1]
- MOV BH, 10
- DIV BH
- MOV BH, 0
- MOV DI, DX
- ;-------------ADD CARRY BITS TO NEXT DIGIT------------
- ADD S[DI], AH
- ADD S[DI+1], AL
- INC DX
- DEC CL
- DEC BL
- CMP BL, 0
- JNE ADD_LOOP
- ;-------------DISPLAY RESULT--------------
- MOV AH, 2
- MOV DI, DX
- SHOW_RESULT:
- ;---------SHOW RESULT ELEMENT BY ELEMENT--------------
- MOV DL, S[DI-1]
- ;--------------CONVERT TO ASCII-----------
- ADD DL, 30H
- INT 21H
- DEC DI
- CMP DI, 0
- JNE SHOW_RESULT
- MAIN ENDP
- END MAIN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement