Search code examples
assemblyfasm

Adding 2 Numbers in FASM


How to make the assembly program below work in FASM.

DATA SEGMENT
     NUM1 DB ?
     NUM2 DB ?
     RESULT DB ?
     MSG1 DB 10,13,"ENTER FIRST NUMBER TO ADD : $"
     MSG2 DB 10,13,"ENTER SECOND NUMBER TO ADD : $"  
     MSG3 DB 10,13,"RESULT OF ADDITION IS : $"
ENDS
CODE SEGMENT 
    ASSUME DS:DATA CS:CODE
START:
      MOV AX,DATA
      MOV DS,AX

      LEA DX,MSG1
      MOV AH,9
      INT 21H

      MOV AH,1
      INT 21H
      SUB AL,30H
      MOV NUM1,AL

      LEA DX,MSG2
      MOV AH,9
      INT 21H

      MOV AH,1
      INT 21H
      SUB AL,30H
      MOV NUM2,AL

      ADD AL,NUM1

      MOV RESULT,AL

      MOV AH,0 
      AAA

      ADD AH,30H
      ADD AL,30H 

      MOV BX,AX

      LEA DX,MSG3
      MOV AH,9
      INT 21H

      MOV AH,2
      MOV DL,BH
      INT 21H

      MOV AH,2
      MOV DL,BL
      INT 21H

      MOV AH,4CH
      INT 21H     
ENDS
END START

http://cssimplified.com/computer-organisation-and-assembly-language-programming/an-assembly-program-to-read-in-two-decimal-inputs-and-print-out-their-sum-in-decimal


Solution

  • format MZ
    entry CODE:START
    
    SEGMENT dDATA
         NUM1 DB ?
         NUM2 DB ?
         RESULT DB ?
         MSG1 DB 10,13,"ENTER FIRST NUMBER TO ADD : $"
         MSG2 DB 10,13,"ENTER SECOND NUMBER TO ADD : $"
         MSG3 DB 10,13,"RESULT OF ADDITION IS : $"
    
    SEGMENT CODE
    START:
          MOV AX, dDATA
          MOV DS,AX
    
          LEA DX, [MSG1]
          MOV AH,9
          INT 21H
    
          MOV AH,1
          INT 21H
          SUB AL,30H
          MOV [NUM1], AL
    
          LEA DX, [MSG2]
          MOV AH,9
          INT 21H
    
          MOV AH,1
          INT 21H
          SUB AL,30H
          MOV [NUM2] ,AL
    
          ADD AL, [NUM1]
    
          MOV [RESULT], AL
    
          MOV AH,0
          AAA
    
          ADD AH,30H
          ADD AL,30H
    
          MOV BX,AX
    
          LEA DX, [MSG3]
          MOV AH,9
          INT 21H
    
          MOV AH,2
          MOV DL,BH
          INT 21H
    
          MOV AH,2
          MOV DL,BL
          INT 21H
    
          MOV AH,4CH
          INT 21H