ХАНДЫФАР

Палиндром - это слово, число, фраза или другая последовательность символов, которые читаются одинаково как в обратном, так и в прямом направлении.

Палиндромы английских слов: civic, deed, deified, deked, DVD, esse, gag, kayak, lemel, level, madam, minim, mom, murdrum, non, noon, peep, poop, pop, racecar, radar, redder, refer, repaper, rotator, rotavator, rotor, sagas, solos, stats, tenet, testset, wow, yay.

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____string db _"madam"
  6. ____strlen equ ($-string)
  7. ____true __db _"True$"
  8. ____false _db _"False$"
  9. data ends
  10. code segment public
  11. ____assume ds:data, cs:code
  12. ____main proc
  13. ________mov ____ax, seg data
  14. ________mov ____ds, ax
  15. ________mov ____cx, strlen
  16. ________lea ____si, ds:[string]
  17. ________mov ____di, si
  18. ________add ____di, cx
  19. ________dec ____di
  20. ________shr_____cx, 1
  21. ____MainLoop:
  22. ________lodsb
  23. ________cmp ____al, byte ptr[di]
  24. ________jne ____NotPalindrome
  25. ________dec ____di
  26. ________loop ___MainLoop
  27. ________mov ____ah, 09h
  28. ________lea ____dx, ds:[true]
  29. ________int ____21h
  30. ________jmp ____Done
  31. ____NotPalindrome:
  32. ________mov ____ah, 09h
  33. ________lea ____dx, ds:[false]
  34. ________int ____21h
  35. ____Done:
  36. ________mov ____ax, 4C00h
  37. ________int ____21h
  38. ____main endp
  39. code ends
  40. end main
Палиндром - это слово, число, фраза или другая последовательность символов, которые читаются одинаково как в обратном, так и в прямом направлении.

Палиндромы английских слов: civic, deed, deified, deked, DVD, esse, gag, kayak, lemel, level, madam, minim, mom, murdrum, non, noon, peep, poop, pop, racecar, radar, redder, refer, repaper, rotator, rotavator, rotor, sagas, solos, stats, tenet, testset, wow, yay.

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____string db _"madam"
  6. ____strlen equ ($-string) ; Вычисляем длину массива string
  7. ____true __db _"True$"
  8. ____false _db _"False$"
  9. data ends
  10. code segment public ______________; Начало сегмента кода
  11. ____assume ds:data, cs:code
  12. ____main proc ____________________; Начало процедуры main
  13. ________mov ____ax, seg data______; Получаем адрес сегмента памяти данных и сохраняем его в ax
  14. ________mov ____ds, ax____________; Передаём адрес сегмента памяти данных из регистра ax в ds
  15. ________mov ____cx, strlen________; Копируем значение переменной strlen в регистр cx
  16. ________lea ____si, ds:[string]___; Загружаем адрес переменной string в регистр-источник ds:si
  17. ________mov ____di, si____________; Копируем значение регистра-источника si в регистр-приёмник di
  18. ________add ____di, cx____________; К di прбивляем cx. Указатель будет указывать на конец строки + 1
  19. ________dec ____di________________; Уменьшаем индекс di на 1
  20. ________shr_____cx, 1_____________; Делим длину строки на 2
  21. ____MainLoop:
  22. ________lodsb_____________________; Загружаем байт по адресу ds:si в регистр al. SI++
  23. ________cmp ____al, byte ptr[di]__; Сравниваем значение в al со значением в регистре-приёмнике di
  24. ________jne ____NotPalindrome_____; Если ZF=0, то прыгаем на метку NotPalindrome
  25. ________dec ____di________________; Уменьшаем индекс di на 1. Смотрим следующий символ с конца строки
  26. ________loop ___MainLoop__________; Выполняем цикл пока CX≠0
  27. ________mov ____ah, 09h___________; Копируем значение функции вывода строки в регистр ah
  28. ________lea ____dx, ds:[true]_____; Загружаем адрес переменной true в регистр ds:dx
  29. ________int ____21h_______________; Вызываем прерывание
  30. ________jmp ____Done______________; Выполняем безусловный переход на метку Done
  31. ____NotPalindrome:
  32. ________mov ____ah, 09h___________; Копируем значение функции вывода строки в регистр ah
  33. ________lea ____dx, ds:[false]____; Загружаем адрес переменной false в регистр ds:dx
  34. ________int ____21h_______________; Вызываем прерывание
  35. ____Done:
  36. ________mov ____ax, 4C00h_________; Копируем значение функции завершения в ah а значение в al
  37. ________int ____21h_______________; Вызываем прерывание
  38. ____main endp ____________________; Конец процедуры main
  39. code ends ________________________; Конец сегмента кода
  40. end main _________________________; Конец файла. Точкой входа указывается процедура main
























8E D8

B9 0005
8D 36 0000__
8B FE
03 F9
4F
D1 E9


AC
3A 05
75 0E

4F
E2 F8

B4 09
8D 16 0005
CD 21
EB 09


B4 09
8D 16 000A
CD 21


B8 4C00
CD 21
Made on
Tilda