Копирование строк - Assembler (223408)

Узнай цену своей работы

Формулировка задачи:

Дорогие программисты у меня есть задача (Составить программу производящую копирование строки из 15 символов в расположенную рядом область памяти.) Я в Ассемблере почти не разбираюсь, помогите решить задачу! Заранее благодарю!

Решение задачи: «Копирование строк»

textual
Листинг программы
  1. .model small
  2. .386
  3.  
  4. .data
  5. src db '123456789ABCDEF'
  6.     db 0Ah,0Dh,'$'
  7. dest db 15 dup (0)
  8.     db 0Ah,0Dh,'$'
  9.  
  10. .stack
  11. db 255 dup(?)
  12.  
  13. .code
  14. start:
  15. mov ax,@data
  16. mov ds,ax
  17. mov es,ax
  18.  
  19. mov ah,9
  20. lea dx,src
  21. int 21h
  22.  
  23. lea si,src
  24. lea di,dest
  25. mov cx,15
  26. rep movsb
  27.  
  28. mov ah,9
  29. lea dx,dest
  30. int 21h
  31.  
  32. mov ah,4Ch
  33. mov al,00h
  34. int 21h  
  35. end start

Объяснение кода листинга программы

  1. .model small — описание модели сегментной памяти
  2. .386 — указание на использование 32-битных регистров
  3. .data — начало блока данных
  4. src db '123456789ABCDEF' — строка для копирования
  5. db 0Ah,0Dh,'$' — символ конца строки и символ доллара
  6. dest db 15 dup (0) — буфер для копирования
  7. db 0Ah,0Dh,'$' — символ конца строки и символ доллара
  8. .stack db 255 dup(?) — стек
  9. .code — начало блока кода
  10. start: — метка начала программы
  11. mov ax,@data — установка регистра ax на смещение @data
  12. mov ds,ax — установка сегмента данных на значение регистра ax
  13. mov es,ax — установка сегмента буфера на значение сегмента данных
  14. mov ah,9 — установка регистра ah на 9 (передача строки)
  15. lea dx,src — загрузка адреса строки в регистр dx
  16. int 21h — вызов функции 21h (передача строки)
  17. lea si,src — загрузка адреса начала строки в регистр si
  18. lea di,dest — загрузка адреса начала буфера в регистр di
  19. mov cx,15 — установка регистра cx на 15 (длина строки)
  20. rep movsb — повторяющийся блок перемещения строки в буфер
  21. mov ah,9 — установка регистра ah на 9 (передача строки)
  22. lea dx,dest — загрузка адреса строки в регистр dx
  23. int 21h — вызов функции 21h (передача строки)
  24. mov ah,4Ch — установка регистра ah на 4Ch (завершение работы)
  25. mov al,00h — установка регистра al на 00h (код завершения)
  26. int 21h — вызов функции 21h (завершение работы)
  27. end start — конец программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут