Копирование строк - 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
Объяснение кода листинга программы
- .model small — описание модели сегментной памяти
- .386 — указание на использование 32-битных регистров
- .data — начало блока данных
- src db '123456789ABCDEF' — строка для копирования
- db 0Ah,0Dh,'$' — символ конца строки и символ доллара
- dest db 15 dup (0) — буфер для копирования
- db 0Ah,0Dh,'$' — символ конца строки и символ доллара
- .stack db 255 dup(?) — стек
- .code — начало блока кода
- start: — метка начала программы
- mov ax,@data — установка регистра ax на смещение @data
- mov ds,ax — установка сегмента данных на значение регистра ax
- mov es,ax — установка сегмента буфера на значение сегмента данных
- mov ah,9 — установка регистра ah на 9 (передача строки)
- lea dx,src — загрузка адреса строки в регистр dx
- int 21h — вызов функции 21h (передача строки)
- lea si,src — загрузка адреса начала строки в регистр si
- lea di,dest — загрузка адреса начала буфера в регистр di
- mov cx,15 — установка регистра cx на 15 (длина строки)
- rep movsb — повторяющийся блок перемещения строки в буфер
- mov ah,9 — установка регистра ah на 9 (передача строки)
- lea dx,dest — загрузка адреса строки в регистр dx
- int 21h — вызов функции 21h (передача строки)
- mov ah,4Ch — установка регистра ah на 4Ch (завершение работы)
- mov al,00h — установка регистра al на 00h (код завершения)
- int 21h — вызов функции 21h (завершение работы)
- end start — конец программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д