Advertisement
Guest User

Untitled

a guest
Oct 8th, 2018
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     .8086
  2.     .model compact
  3.     .stack 256
  4.     .data
  5. arr1 db '123456';Массив1
  6. arr2 db '123456' ;Массив2
  7. result db '0'
  8. lenarr1 dw 6 ;Размер массива 1
  9. lenarr2 dw 6 ;Размер массива 2
  10.     .code
  11.     assume ds:@data, ss:@stack
  12.    
  13.  
  14. ;-------------------------------------Макрос сравнения массивов
  15. COMPARE macro arr1,arr2,lenarr1,lenarr2,result
  16. local НЕ_РАВНЫ,EXIT
  17. cld ;Установка флага DF в 0
  18.  
  19. mov cx,lenarr1
  20. cmp cx,lenarr2
  21. jne НЕ_РАВНЫ ;Сравнение длин массивов
  22. cld
  23. mov si,offset arr1
  24. mov di,offset arr2
  25. repe cmpsb       ;сравнивать, пока равны
  26. jnz НЕ_РАВНЫ    ;если не конец цепочки, то встретились разные элементы
  27. mov result,'1'     ;Результат 1
  28. jmp EXIT
  29.  
  30. НЕ_РАВНЫ:;-----------------------------Если массивы не равны
  31. mov result,'0' ;Результат 0
  32. jmp EXIT
  33.    
  34. EXIT:;--------------------------------Завершение работы макроса
  35. endm
  36.  
  37.  
  38. main:
  39.  mov ax, @data ; ????????????? ??????? ??????
  40.  mov ds, ax
  41.  
  42.  mov ax, @stack; ????????????? ??????? ?????
  43.  mov ss, ax
  44.  
  45. ;*Инициализация сегмента данных в программе*
  46. ;*Вызов макроса
  47.  COMPARE arr1,arr2,lenarr1,lenarr2,result
  48.  mov ax,'1' ;Занесение результата в AX для вывода
  49.  int 21h
  50.  ret
  51.  END main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement