Advertisement
Guest User

Untitled

a guest
Dec 7th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. MAX_PATH EQU 30
  2.  
  3. jmp main
  4.  
  5.  
  6. num1 db MAX_PATH dup(0), 0
  7. num2 db MAX_PATH dup(0), 0
  8. len1 db 0
  9. len2 db 0  
  10.    ptr1 db 0
  11.    ptr2 db 0
  12.    ptr3 db 28
  13. duh db 0  
  14. res db 0
  15. res2 db MAX_PATH dup(0), 0
  16.  
  17.  
  18. ;ds:si - input buf
  19. proc_writeln:
  20.     pusha
  21.     cld
  22.     mov ah, 0Eh
  23.     write:
  24.         lodsb                
  25.         add al, 48
  26.         cmp al, 95
  27.         jz exit_write
  28.         int 10h
  29.         jmp write    
  30.     exit_write:
  31.     popa
  32.     ret
  33.  
  34.  
  35. proc_sum:
  36.     push bp
  37.     mov bp, sp
  38.    
  39.     xor dx, dx
  40.     mov si, [bp + 4]
  41.     mov dl, [si]
  42.     mov ptr2, dl
  43.                  
  44.     mov si, [bp + 6]
  45.     mov dl, [si]
  46.     mov ptr1, dl
  47.  
  48.     dec ptr1
  49.     dec ptr2
  50.          
  51.     point1:
  52.         add [bp + 10], 1
  53.         dec ptr1
  54.         jnz point1      
  55.    
  56.     point2:
  57.         add [bp + 8], 1
  58.         dec ptr2
  59.         jnz point2
  60.    
  61.     point3:
  62.         add [bp + 12], 1
  63.         dec ptr3
  64.         jnz point3
  65.          
  66.    
  67.     mov si, [bp + 4] ;len2
  68.     mov bl, [si] ;counter
  69.    
  70.     loopstart:
  71.         mov si, [bp + 10]
  72.         mov di, [bp + 8]
  73.  
  74.  
  75.        
  76.         xor ax, ax          ;;sum
  77.         add al, [si]
  78.         add al, [di]
  79.        
  80.         add al,bh
  81.         xor bh, bh
  82.          
  83.         dec [bp + 10]
  84.         dec [bp + 8]
  85.            
  86.            
  87.         cmp al, 10
  88.         jl no_carry  
  89.    ;    
  90.         inc bh
  91.         sub al, 10
  92.    ;    
  93.         no_carry:
  94.         mov si, [bp+12]
  95.         mov [si], al
  96.         dec [bp+12]
  97.         inc res
  98.        
  99.        
  100.                                
  101.         dec bl
  102.         jnz loopstart
  103.          
  104.     mov bl, len1
  105.     sub bl, len2
  106.    
  107.     cmp bl, 0
  108.     jz here1
  109.          
  110.     loop2:
  111.         mov si, [bp + 10]
  112.        
  113.         add [si], bh
  114.         xor bh, bh
  115.        
  116.         cmp [si], 10
  117.         jnge go  
  118.        
  119.         sub [si], 10
  120.         mov bh, 1
  121.        ;add [si - 1], 1
  122.        
  123.         go:
  124.          mov ah, [si]
  125.          mov di, [bp + 12]
  126.          mov [di], ah
  127.          inc res
  128.          
  129.          dec [bp + 10]
  130.          dec [bp + 12]
  131.        
  132.          dec bl
  133.          cmp bl, 0
  134.          jg loop2
  135.    
  136.    here1:    
  137.     cmp bh, 1
  138.     jnz here2
  139.    
  140.     ;dec [bp + 12]
  141.    
  142.    
  143.     mov di, [bp + 12]
  144.     mov [di], 1
  145.     dec [bp + 12]
  146.     inc res
  147.    ;inc res
  148.    ;dec [bp + 12]
  149.    
  150.     here2:
  151.      inc [bp + 12]
  152.      mov bl, res
  153.      
  154.      loop3:
  155.            mov si, [bp + 12]
  156.            mov dl, [si]
  157.            add dl, 48
  158.            mov ah,2
  159.            int 21h
  160.            
  161.            inc [bp + 12]
  162.            dec bl
  163.            jnz loop3
  164.        
  165.         ;sub al, 10
  166.        ;add [si], 1
  167.        ;jmp loopstart
  168.    
  169.    
  170.     ret
  171.  
  172. ;es:di - output buf    
  173. readln macro len
  174.     LOCAL read, exit_read  
  175.     pusha
  176.     cld
  177.     mov bl, 0
  178.     read:
  179.         mov ah, 0
  180.         int 16h
  181.        
  182.         cmp al, 13
  183.         jz exit_read
  184.        
  185.         sub al, 48
  186.        
  187.         stosb
  188.         add bl,1
  189.         jmp read
  190.  
  191.     exit_read:
  192.        ;mov al, 65
  193.        ;stosb
  194.        
  195.         mov len, bl
  196.        
  197.         popa
  198.         endm
  199.    
  200.    
  201.  
  202. main:
  203.     mov ax, cs
  204.     mov es, ax
  205.    
  206.     lea di, num1
  207.     readln len1
  208.            
  209.    
  210.     lea di, num2
  211.     readln len2
  212.                    
  213.     push offset res2
  214.     push offset num1
  215.     push offset num2
  216.     push offset len1
  217.     push offset len2
  218.    
  219.     call proc_sum
  220.    
  221. ;printing nums
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement