SHARE
TWEET

lab5.asm

a guest Nov 9th, 2018 178 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. assume cs: code, ds: data
  2.  
  3. data segment
  4.     dummy db 0Ah, '$'
  5.     aLen db ?
  6.     bLen db ?
  7.     cLen db ?
  8.     msg1Num db 'Enter first number line:', 10, 13, '$'
  9.     msg2Num db 'Enter second number line:', 10, 13, '$'
  10.     msgRes  db 'Result:', 10, 13, '$'
  11.     tab  db 10, 13, '$'
  12.     a db 40, 40 dup(0)
  13.     b db 40, 40 dup(0)
  14.     c db 40, 40 dup(0)
  15. data ends
  16.  
  17. code segment
  18.  
  19. read proc
  20.     push  bp
  21.     mov   bp, sp
  22.    
  23.     mov   ah,0ah
  24.     mov   dx, [bp+4]
  25.     int   21h
  26.     pop   bp
  27.     ret   2
  28. read endp
  29.  
  30. print proc
  31.     push  bp
  32.     mov   bp, sp
  33.    
  34.     mov   ah,09h
  35.     mov   dx, [bp+4]
  36.     int   21h
  37.     pop   bp
  38.     ret   2
  39. print endp
  40.  
  41. addInt proc
  42.     push    bp
  43.     mov bp, sp
  44.    
  45.     mov bx, [bp+4]
  46.     mov cl, byte ptr [bx+1] ; len(b)
  47.     mov bLen, cl
  48.    
  49.     xor ax, ax
  50.     mov dx, [bp+6]
  51.     mov si, [bp+6]
  52.     mov al, byte ptr [si+1] ; len(a)
  53.     mov aLen, al
  54.    
  55.     cmp al, cl ; bx = b ; dx = a = si
  56.     jle a1
  57.  
  58.     mov dx, bx
  59.     mov bx, si
  60.    
  61. a1:
  62.     mov cl, bLen
  63.     inc cl
  64.     mov cLen, cl
  65.     mov di, [bp+8]
  66.     mov byte ptr [di+1], cl ; cLen
  67.     mov byte ptr [di+2], '0' ; cLen
  68.     mov cl, bLen
  69.     mov si, bx
  70.     mov cl, byte ptr [si+1]
  71.     add si, 2
  72.     add di, 3
  73.     rep movsb
  74.     mov byte ptr [di], '$'
  75.    
  76.     dec di ; last digit 'c'
  77.     mov si, dx ; a
  78.     mov cl, aLen
  79.     inc cl
  80.     add si, cx
  81.     dec cl
  82.     mov ch, cLen
  83.    
  84.     xor dx, dx
  85.     std
  86.     sum:
  87.         mov bl, byte ptr [di]
  88.         sub bl, 30h ;
  89.         add bl, byte ptr [si]
  90.     cycle:sub bl, 30h ; temp sum
  91.         cmp dl, 1
  92.         je one
  93.         ret1: cmp bl, 9h
  94.         jg rem
  95.        
  96.         ret2: add bl, 30h
  97.         mov byte ptr [di], bl
  98.         dec si
  99.         dec di
  100.         dec cl
  101.         dec ch
  102.         cmp cl, 0
  103.         jg sum
  104.         cmp ch, 0
  105.         jg more
  106.    
  107.     cmp dl, 1
  108.     je last
  109.    
  110.     ret3: jmp endd
  111.    
  112.     more:
  113.     mov bl, byte ptr [di]
  114.     jmp cycle
  115.    
  116.     last: mov dl, 0
  117.         add byte ptr [di], 1h
  118.     jmp ret3
  119.    
  120.     rem: mov dl, 1
  121.         sub bl, 0ah
  122.     jmp ret2
  123.        
  124.     one: inc bl
  125.         mov dl, 0
  126.     jmp ret1
  127.    
  128.     endd:
  129.     pop bp
  130.     pop bx
  131.    
  132.     push ax
  133.     push offset c ;;;;;;;;; return
  134.     push bx
  135.     ret
  136. addInt endp    
  137.  
  138. start:  mov ax, data
  139.         mov ds, ax
  140.         mov es, ax
  141.        
  142.         push offset msg1Num
  143.         call print
  144.        
  145.         push offset a
  146.         call read
  147.        
  148.         push offset tab
  149.         call print
  150.        
  151.         push offset msg2Num
  152.         call print
  153.        
  154.         push offset b
  155.         call read
  156.        
  157.         push offset tab
  158.         call print
  159.        
  160.         push offset msgRes
  161.         call print
  162.        
  163.         push offset c ; +8
  164.         push offset a ; +6
  165.         push offset b ; +4
  166.        
  167.         call addInt
  168.         pop dx
  169.         add dx, 2
  170.         push dx
  171.         call print
  172.        
  173.         mov ah, 4ch
  174.         int 21h
  175.         code ends
  176. end start
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top