Advertisement
Guest User

ijlk

a guest
Mar 4th, 2015
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .DATA
  2.     MSGA DB 13,10,"Input first number: ","$"
  3.     MSGB DB 13,10,"Input second number:","$"
  4.     MSGC DB 13,10,"The sum is: ","$"
  5.  
  6.     NUM1 db ?
  7.     NUM2 db ?
  8.     NUM3 db ?
  9. .CODE
  10.     MAIN PROC NEAR
  11.         MOV AX, @DATA
  12.         MOV DS, AX
  13.  
  14.         ; get first number
  15.         LEA DX, MSGA
  16.         MOV AH, 09h
  17.         INT 21h
  18.  
  19.         MOV AH, 01
  20.         INT 21H
  21.         SUB AL, '0'
  22.  
  23.         MOV BL, AL
  24.  
  25.         MOV AH, 01
  26.         INT 21H
  27.         SUB AL, '0'
  28.  
  29.         MOV CL, AL
  30.  
  31.         ; get second number
  32.         LEA DX, MSGB
  33.         MOV AH, 09h
  34.         INT 21h
  35.  
  36.         MOV AH, 01
  37.         INT 21H
  38.         SUB AL, '0'
  39.  
  40.         MOV DL, AL
  41.  
  42.         MOV AH, 01
  43.         INT 21H
  44.         SUB AL, '0'
  45.  
  46.         MOV DH, AL
  47.  
  48.         ; add
  49.         MOV AL, CL
  50.         MOV AH, BL
  51.         ADD AL, DH
  52.         AAA
  53.         ADD AH, DL
  54.  
  55.         MOV NUM1, AL
  56.         ADD NUM1, '0'
  57.  
  58.         ; if tens digit is less than or equal to 9
  59.         CMP AH, 9
  60.         JLE NOT_3DIGIT
  61.  
  62.         IS_3DIGIT:
  63.         MOV AL, AH   ; move value of ah to al
  64.         SUB AH, AH   ; clear ah
  65.         ADD AL, 0    ; al + 0 = al (tens digit)
  66.         AAA          ; move for addition
  67.         ADD AH, 0    ; ah + 0 + 1 = ah + 1 (hundreds digit)
  68.         MOV NUM2, AL
  69.         MOV NUM3, AH
  70.         ADD NUM2, '0'
  71.         ADD NUM3, '0'
  72.         ; output sum
  73.         LEA DX, MSGC
  74.         MOV AH, 09h
  75.         INT 21h
  76.         MOV DL, NUM3
  77.         MOV AH, 02H
  78.         INT 21h
  79.         MOV DL, NUM2
  80.         MOV AH, 02H
  81.         INT 21h
  82.         JMP PRINT_LASTDIGIT
  83.  
  84.  
  85.         NOT_3DIGIT:    
  86.         MOV NUM2, AH
  87.         ADD NUM2, '0'
  88.         ; output sum
  89.         LEA DX, MSGC
  90.         MOV AH, 09h
  91.         INT 21h
  92.         MOV DL, NUM2
  93.         MOV AH, 02H
  94.         INT 21h
  95.  
  96.         PRINT_LASTDIGIT:
  97.         MOV DL, NUM1
  98.         MOV AH, 02H
  99.         INT 21h
  100.  
  101.         EXIT:
  102.         MOV AH, 4Ch
  103.         INT 21h
  104.  
  105.     MAIN ENDP
  106. END MAIN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement