Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .DATA
- MSGA DB 13,10,"Input first number: ","$"
- MSGB DB 13,10,"Input second number:","$"
- MSGC DB 13,10,"The sum is: ","$"
- NUM1 db ?
- NUM2 db ?
- NUM3 db ?
- .CODE
- MAIN PROC NEAR
- MOV AX, @DATA
- MOV DS, AX
- ; get first number
- LEA DX, MSGA
- MOV AH, 09h
- INT 21h
- MOV AH, 01
- INT 21H
- SUB AL, '0'
- MOV BL, AL
- MOV AH, 01
- INT 21H
- SUB AL, '0'
- MOV CL, AL
- ; get second number
- LEA DX, MSGB
- MOV AH, 09h
- INT 21h
- MOV AH, 01
- INT 21H
- SUB AL, '0'
- MOV DL, AL
- MOV AH, 01
- INT 21H
- SUB AL, '0'
- MOV DH, AL
- ; add
- MOV AL, CL
- MOV AH, BL
- ADD AL, DH
- AAA
- ADD AH, DL
- MOV NUM1, AL
- ADD NUM1, '0'
- ; if tens digit is less than or equal to 9
- CMP AH, 9
- JLE NOT_3DIGIT
- IS_3DIGIT:
- MOV AL, AH ; move value of ah to al
- SUB AH, AH ; clear ah
- ADD AL, 0 ; al + 0 = al (tens digit)
- AAA ; move for addition
- ADD AH, 0 ; ah + 0 + 1 = ah + 1 (hundreds digit)
- MOV NUM2, AL
- MOV NUM3, AH
- ADD NUM2, '0'
- ADD NUM3, '0'
- ; output sum
- LEA DX, MSGC
- MOV AH, 09h
- INT 21h
- MOV DL, NUM3
- MOV AH, 02H
- INT 21h
- MOV DL, NUM2
- MOV AH, 02H
- INT 21h
- JMP PRINT_LASTDIGIT
- NOT_3DIGIT:
- MOV NUM2, AH
- ADD NUM2, '0'
- ; output sum
- LEA DX, MSGC
- MOV AH, 09h
- INT 21h
- MOV DL, NUM2
- MOV AH, 02H
- INT 21h
- PRINT_LASTDIGIT:
- MOV DL, NUM1
- MOV AH, 02H
- INT 21h
- EXIT:
- MOV AH, 4Ch
- INT 21h
- MAIN ENDP
- END MAIN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement