Advertisement
Guest User

Untitled

a guest
Nov 13th, 2018
222
0
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. str1 db 10, 9 dup (0)
  5. str2 db 10, 9 dup (0)
  6. ennd db 0dh,0ah, '$'
  7. res db 10, 9 dup (0)
  8. data ends
  9.  
  10. code segment
  11.  
  12. calc proc
  13.     push bp
  14.     mov bp, sp
  15.     mov si, [bp+4] ;str2
  16.     mov di, [bp+6] ;str1
  17.  
  18.     mov bl, [si+1] ;n2
  19.     mov bh, [di+1] ;n1
  20.  
  21.     cmp bl, bh
  22.     jge setIter   ;n2 >= n1
  23.     mov cl, bh
  24. setIter:
  25.     mov cl, bl
  26.  
  27.     ;если разные длины, кинуть 0 в начало меньшей
  28.  
  29. ;   add si, 1
  30. ;   add di, 1
  31. ;   add si, cx ;указ на последний элем str2
  32. ;   add di, cx ;указ на последний элем str1
  33.  
  34. lopa:
  35.     mov al, 0
  36.     mov ah, 0
  37.     mov bl, 0
  38.     mov si, [bp+4] ;str2
  39.     mov di, [bp+6] ;str1
  40.  
  41.     add si, 1
  42.     add di, 1
  43.  
  44.     add si, cx ;указ на последний элем str2
  45.     add di, cx ;указ на последний элем str1
  46.  
  47.     mov al, [si] ;str2
  48.     mov bl, [di] ;str1
  49.     mov dl, 0
  50.  
  51.     sub al, 30h
  52.     sub bl, 30h
  53.  
  54.     add al, bl ;сумма в ax
  55.  
  56.     mov bl, 10
  57.     div bl
  58.  
  59.     cmp al, 0 ;5/10 = 0 и 5
  60.     je go
  61.     cmp ah, 0 ;есть ли остаток
  62.     je go
  63.     mov dl, al ;если есть
  64. go:           ;если нет
  65.     push si
  66.     mov si, [bp+8] ;res
  67.  
  68.     add si, 1
  69.     add si, cx
  70.     mov bh, ah
  71.     add ah, 30h
  72.     mov [si], ah
  73.  
  74.     pop si
  75.     mov si, 0
  76.     add si, cx ;указывает на предпоследний эл
  77.  
  78.     cmp dl, 0 ;есть ли десяток
  79.     je zz
  80.     mov al, [si]
  81.     sub al, 30h
  82.     add al, dl
  83.     add al, 30h
  84.     mov [si], al
  85. zz:
  86.     sub di, 1
  87.     loop lopa
  88.  
  89.     pop bp
  90.     pop ax
  91.     pop bx
  92.     pop cx
  93.     pop dx
  94.     push cx
  95.     push bx
  96.     push dx
  97.     push ax
  98.  
  99.     ret
  100. calc endp
  101.  
  102. start:
  103.     mov ax, data
  104.     mov ds, ax
  105.     mov dx, offset str1 ; в dx перемещаем адрес строки
  106.     mov si, dx
  107.     mov ax, 0
  108.     mov ah, 0Ah ; ввод
  109.     int 21h
  110.  
  111.     mov dx, offset ennd ; кинули в конец строки EOL
  112.     ;mov dx, offset wh
  113.     mov ah, 09h ; вывод
  114.     int 21h
  115.  
  116.     mov dx, offset str2 ; в dx перемещаем адрес строки
  117.     mov si, dx
  118.     mov ah, 0Ah ; ввод
  119.     int 21h
  120.  
  121.     mov dx, offset ennd ; кинули в конец строки EOL
  122.     ;mov dx, offset wh
  123.     mov ah, 09h ; вывод
  124.     int 21h
  125.  
  126.     mov ah, 0
  127.     push offset res
  128.     push offset str1
  129.     push offset str2
  130.     call calc
  131.    
  132.     pop si
  133.  
  134.     add si, 2
  135.     mov dx, si
  136.     mov ah, 09h
  137.     int 21h
  138.  
  139.     mov ah, 4ch
  140.     int 21h
  141.     code ends
  142.     end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement