Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .8086
- .model compact
- .stack 256
- .data
- arr1 db '123456';Массив1
- arr2 db '123456' ;Массив2
- result db '0'
- lenarr1 dw 6 ;Размер массива 1
- lenarr2 dw 6 ;Размер массива 2
- .code
- assume ds:@data, ss:@stack
- ;-------------------------------------Макрос сравнения массивов
- COMPARE macro arr1,arr2,lenarr1,lenarr2,result
- local НЕ_РАВНЫ,EXIT
- cld ;Установка флага DF в 0
- mov cx,lenarr1
- cmp cx,lenarr2
- jne НЕ_РАВНЫ ;Сравнение длин массивов
- cld
- mov si,offset arr1
- mov di,offset arr2
- repe cmpsb ;сравнивать, пока равны
- jnz НЕ_РАВНЫ ;если не конец цепочки, то встретились разные элементы
- mov result,'1' ;Результат 1
- jmp EXIT
- НЕ_РАВНЫ:;-----------------------------Если массивы не равны
- mov result,'0' ;Результат 0
- jmp EXIT
- EXIT:;--------------------------------Завершение работы макроса
- endm
- main:
- mov ax, @data ; ????????????? ??????? ??????
- mov ds, ax
- mov ax, @stack; ????????????? ??????? ?????
- mov ss, ax
- ;*Инициализация сегмента данных в программе*
- ;*Вызов макроса
- COMPARE arr1,arr2,lenarr1,lenarr2,result
- mov ax,'1' ;Занесение результата в AX для вывода
- int 21h
- ret
- END main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement