ХАНДЫФАР

Программа которая объединяет две строки в одну.

  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. data ends
  9. code segment public
  10. ____assume ds:data, cs:code
  11. ____main proc
  12. ________mov ____ax, seg data
  13. ________mov ____ds, ax
  14. ________mov ____cx, strlen
  15. ________lea ____si, ds:[string]
  16. ____MainLoop:
  17. ________lodsb
  18. ________cmp ____al, 20h
  19. ________jne ____Skip
  20. ________mov ____byte ptr[si-1], 5Fh
  21. ____Skip:
  22. ________loop ___MainLoop
  23. ________mov ____ah, 09h
  24. ________lea ____dx, ds:[string]
  25. ________int ____21h
  26. ________mov ____ax, 4C00h
  27. ________int ____21h
  28. ____main endp
  29. code ends
  30. end main
Программа которая объединяет две строки в одну.

  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. data segment public
  5. ____string db _"Microsoft Macro Assembler$"
  6. ____strlen equ ($-string)
  7. data ends
  8. code segment public _________________; Начало сегмента кода
  9. ____assume ds:data, cs:code
  10. ____main proc _______________________; Начало процедуры main
  11. ________mov ____ax, seg data_________; Получаем адрес сегмента памяти данных и сохраняем его в ax
  12. ________mov ____ds, ax_______________; Передаём адрес сегмента памяти данных из регистра ax в ds
  13. ________mov ____cx, strlen___________; Копируем значение переменной strlen в регистр cx
  14. ________lea ____si, ds:[string]______; Загружаем адрес переменной string в ds:si
  15. ____MainLoop:
  16. ________lodsb________________________; Загружаем байт из регистра-источника si в регистр al
  17. ________cmp ____al, 20h______________; Сравниваем значение в регистре al с пробелом
  18. ________jne ____Skip_________________; Если ZF=0, то пргыгаем на метку Skip
  19. ________mov ____byte ptr[si-1], 5Fh__; Копируем значение символа _ в регистр si-1
  20. ____Skip:
  21. ________loop ___MainLoop_____________; Выполняем цикл пока регистр CX≠0
  22. ________mov ____ah, 09h______________; Копируем значение функции вывода строки в регистр ah
  23. ________lea ____dx, ds:[string]______; Загружаем адрес переменной string в регистр ds:dx
  24. ________int ____21h__________________; Вызываем прерывание DOS
  25. ________mov ____ax, 4C00h____________; Копируем значение функции завершения в ah а значение в al
  26. ________int ____21h__________________; Вызываем прерывание DOS
  27. ____main endp _______________________; Конец процедуры main
  28. code ends ___________________________; Конец сегмента кода
  29. end main ____________________________; Конец файла. Точкой входа указывается процедура main

















8E D8

B9 001A
8D 36 0000


AC

3C 20
75 04

C6 44 FF 5F__


E2 F5

B4 09
8D 16 0000
CD 21

B8 4C00
CD 21
Made on
Tilda