ХАНДЫФАР

Программа которая ищет в строке гласные буквы и заменяет их на символ подчёркивания.

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____string db _"Microsoft Macro "
  6. ___________db _"Assembler$"
  7. ____strlen equ ($-string)
  8. ____vowels db _"aeiou"
  9. ____vowlen equ ($-vowels)
  10. data ends
  11. code segment public
  12. ____assume ds:data, cs:code
  13. ____main proc
  14. ________mov ____ax, seg data
  15. ________mov ____ds, ax
  16. ________mov ____es, ax
  17. ________mov ____cx, strlen
  18. ________lea ____di, es:[vowels]
  19. ________lea ____si, ds:[string]
  20. ____MainLoop:
  21. ________push ___cx
  22. ________push ___di
  23. ________mov ____cx, vowlen
  24. ________lodsb
  25. __repnz scasb
  26. ________jne ____Skip
  27. ________mov ____byte ptr[si-1], 5Fh
  28. ____Skip:
  29. ________pop ____di
  30. ________pop ____cx
  31. ________loop ___MainLoop
  32. ________mov ____ah, 09h
  33. ________lea ____dx, ds:[string]
  34. ________int ____21h
  35. ________mov ____ax, 4C00h
  36. ________int ____21h
  37. ____main endp
  38. code ends
  39. end main
Программа которая ищет в строке гласные буквы и заменяет их на символ подчёркивания.

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____string db _"Microsoft Macro Assembler$"
  6. ____strlen equ ($-string) ; Вычисляем длину массива string
  7. ____vowels db _"aeiou"
  8. ____vowlen equ ($-vowels) ; Вычисляем длину массива vowels
  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 ____es, ax_______________; Передаём адрес сегмента памяти данных из регистра ax в es
  16. ________mov ____cx, strlen___________; Копируем значение переменной strlen в регистр cx
  17. ________lea ____di, es:[vowels]______; Загружаем адрес массива vowels в регистр es:di
  18. ________lea ____si, ds:[string]______; Загружаем адрес массива string в регистр ds:si
  19. ____MainLoop:
  20. ________push ___cx___________________; Сохраняем значение регистра cx в стеке
  21. ________push ___di___________________; Сохраняем значение регистра di в стеке
  22. ________mov ____cx, vowlen___________; Копируем значение переменной vowlen в регистр cx
  23. ________lodsb________________________; Загружаем байт из регистра-источника si в регистр al. SI++
  24. __repnz scasb________________________; Сканируем байт в регистре al с байтом в регистре es:di
  25. ________jne ____Skip_________________; Если ZF=0, то прыгаем на метку Skip
  26. ________mov ____byte ptr[si-1], 5Fh__; Копируем значение символа _ в регистр si-1
  27. ____Skip:
  28. ________pop ____di___________________; Выталкиваем сохранённое значение из стека в регистр di
  29. ________pop ____cx___________________; Выталкиваем сохранённое значение из стека в регистр cx
  30. ________loop ___MainLoop_____________; Выполняем цикл пока CX≠0
  31. ________mov ____ah, 09h______________; Копируем значение функции вывода строки в регистр ah
  32. ________lea ____dx, ds:[string]______; Загружаем адрес переменной string в регистр ds:dx
  33. ________int ____21h__________________; Вызываем прерывание
  34. ________mov ____ax, 4C00h____________; Копируем значение функции завершения в ah а значение в al
  35. ________int ____21h__________________; Вызываем прерывание
  36. ____main endp _______________________; Конец процедуры main
  37. code ends ___________________________; Конец сегмента кода
  38. end main ____________________________; Конец файла. Точкой входа указывается процедура main



















8E D8
8E C0

B9 001A
8D 3E 001A
8D 36 0000


51
57
B9 0005

AC
F2 AE

75 04

C6 44 FF 5F__


5F
59
E2 EE

B4 09
8D 16 0000
CD 21

B8 4C00
CD 21
Made on
Tilda