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

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

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

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

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

textual
Листинг программы
.model small
.386
 
.data
src db '123456789ABCDEF'
    db 0Ah,0Dh,'$'
dest db 15 dup (0)
    db 0Ah,0Dh,'$'
 
.stack
db 255 dup(?)
 
.code
start:
mov ax,@data
mov ds,ax
mov es,ax
 
mov ah,9
lea dx,src
int 21h
 
lea si,src
lea di,dest
mov cx,15
rep movsb
 
mov ah,9
lea dx,dest
int 21h
 
mov ah,4Ch 
mov al,00h
int 21h   
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