DCPU16 28
[COAL] Practice Guest on 19th November 2020 06:26:29 PM
  1. .model small ; cod 64K bytes
  2. .stack 100h  
  3. .data  
  4. prompt1 db 'Press + for addition, - for subtract, and Esc to quit program$'; # used as string terminator  
  5. prompt2 db 'Enter number 1$'; # used as string terminator
  6. prompt3 db 'Enter number 2$'; # used as string terminator
  7. prompt4 db 'Wrong input, please enter +, - or ESC$'; # used as string terminator
  8. num1 db ?
  9. num2 db ?      
  10. .code
  11. main proc  
  12.      
  13.       mov ax,@data
  14.       mov ds,ax
  15. gui:      
  16.       mov dx,offset prompt1
  17.       mov ah,9
  18.       int 21h  
  19.      
  20.       call newline
  21.      
  22.     mov ah,1
  23.     int 21h
  24.     cmp al,27
  25.     je quit
  26.     cmp al,43
  27.     je addition
  28.     cmp al,45
  29.     je substraction
  30.     call newline
  31.     mov dx,offset prompt4      
  32.     mov ah,9
  33.     int 21h
  34.     call newline
  35.     jmp gui
  36.    
  37.  
  38.  
  39. addition:    
  40. call newline
  41.       mov dx,offset prompt2         ; taking num1 input here
  42.       mov ah,9
  43.       int 21h
  44.       call newline  
  45.      
  46.       mov ah,1
  47.       int 21h
  48.       mov bl,al  
  49.       mov num1,bl
  50.       sub num1,48
  51.        
  52.  
  53.       call newline
  54.       mov dx,offset prompt3         ; taking num2 input here
  55.       mov ah,9
  56.       int 21h
  57.       call newline  
  58.      
  59.       mov ah,1
  60.       int 21h
  61.       mov bl,al
  62.       mov num2,bl
  63.       sub num2,48
  64.    
  65.       ;; sum now
  66.       call newline
  67.       mov bh,num1
  68.       add bh,num2
  69.       add bh,48
  70.      
  71.       mov dl,num1
  72.       add dl,48
  73.       mov ah,2
  74.       int 21h
  75.       mov dl,'+'
  76.       mov ah,2
  77.       int 21h
  78.            
  79.       mov dl,num2
  80.       add dl,48
  81.       mov ah,2
  82.       int 21h
  83.      
  84.       mov dl,'='
  85.       mov ah,2
  86.       int 21h
  87.      
  88.       mov dl,bh
  89.       mov ah,2
  90.       int 21h
  91.      
  92.       call newline
  93.       jmp gui
  94.      
  95.  
  96.      
  97. substraction:    
  98. call newline
  99.       mov dx,offset prompt2         ; taking num1 input here
  100.       mov ah,9
  101.       int 21h
  102.       call newline  
  103.      
  104.       mov ah,1
  105.       int 21h
  106.       mov bl,al  
  107.       mov num1,bl
  108.       sub num1,48
  109.        
  110.  
  111.       call newline
  112.       mov dx,offset prompt3         ; taking num2 input here
  113.       mov ah,9
  114.       int 21h
  115.       call newline  
  116.      
  117.       mov ah,1
  118.       int 21h
  119.       mov bl,al
  120.       mov num2,bl
  121.       sub num2,48
  122.    
  123.  
  124.          ;; sum now
  125.       call newline
  126.       mov bh,num1
  127.       sub bh,num2
  128.       add bh,48
  129.      
  130.       mov dl,num1
  131.       add dl,48
  132.       mov ah,2
  133.       int 21h
  134.       mov dl,'-'
  135.       mov ah,2
  136.       int 21h
  137.            
  138.       mov dl,num2
  139.       add dl,48
  140.       mov ah,2
  141.       int 21h
  142.      
  143.       mov dl,'='
  144.       mov ah,2
  145.       int 21h
  146.      
  147.       mov dl,bh
  148.       mov ah,2
  149.       int 21h
  150.      
  151.       call newline
  152.       jmp gui
  153.  
  154.    
  155. quit:              
  156.      mov ah,4ch
  157.      int 21h
  158.    
  159.    
  160.     main endp
  161.                
  162.                
  163.             newline proc    
  164.    
  165.          mov dl,10
  166.      mov ah,2
  167.      int 21h
  168.      mov dl,13
  169.      mov ah,2
  170.      int 21h
  171.      ret
  172.    
  173.     newline endp
  174.                
  175.  
  176. end main

Coding Base is for source code and general debugging text.

Login or Register to edit, delete and keep track of your pastes and more.

Raw Paste

Login or Register to edit or fork this paste. It's free.