MaxEdu.ru
» » » Программы копирования строки
Вернуться назад

Программы копирования строки

Составить программу копирования строки из 15 символов в рядом расположенную область памяти, но в обратном порядке.
Для этого мы создаём две строки. Одна выполняет роль источника данных, а другая – приёмник. Затем мы определяем адрес источника и получателя с помощью команды Lea, которая является альтернативой оператору ассемблера offset. В отличие от offset команда lea допускает индексацию операнда, что позволяет более гибко организовать адресацию операндов. Так как нам нужно заполнить память в обратном порядке, то мы сразу смещаем адрес приёмника DI на 15 байтов. Организовываем цикл и посредством промежуточного регистра AL заносим наши символы в регистр DI, уменьшая, с каждым шагом, байты записи. После того, как счётчик CX уменьшится до 0, программа завершит свою работу
ЛИСТИНГ ЗАДАЧИ «Программирование строки в обратном порядке»
Задача 17
Data Segment ; открыть сегмент данных
text1 DB 'My name Valerij', 13, 10, '$'
text2 DB 25 DUP(?) ; строка получатель
Data ENDS ; Закрыть сегмент данных
;-----------------------------------------------
STK Segment ; открыть сегмент данных
DB 100 DUP(?) ; зарезервировать под стек 100 ячеек памяти
STK ENDS ; закрыть сегмент стека
;---------------------------------------------------
ASSUME SS:STK, CS:CODE, DS:DATA ;назначить сегментные регистры
;-----------------------------------------------------
CODE Segment ; открыть сегмент кода
START: mov AX, DATA ; загрузка сегментного регистра DS
mov DS, AX ; регистра DS
lea SI, TEXT1 ; начальный адрес строки-источника занести в SI
lea DI, TEXT2 ; начальный адрес строки получателя занести в DI
mov CX, 15 ; переслать 15 байтов
Metka1: mov AL, [SI] ; выполнить пересылку
mov [DI + 15], AL ; через промежуточный регистр AL
INC SI ; увеличить адрес источника на 1
DEC DI ; уменьшить адрес источника на 1
LOOP Metka1 ; (CX)-1, повторить цикл пока CX не равно 0
mov AL, 0 ; завершить программу через
mov AH, 4Ch ; системную функцию возврата
int 21h ; в DOS
CODE ENDS ; закрыть сегмент кода
END START ; закрыть программу
Программа копирования строки на прямую
Составить программу производящую копирование строки из 15 символов в расположенную рядом область памяти.
Задача, практически идентичная предыдущей. За исключением способа пересылки строки. В данном случее нам уже не требуется вести запись в обратном порядке. Также, создаём две строки. Одна выполняет роль источника данных, а другая – приёмник. Затем мы определяем адрес источника и получателя с помощью команды Lea. Приёмник DI на 15 байтов больше не смещаем.
Организовываем цикл и посредством промежуточного регистра AL заносим наши символы в регистр DI. При каждом шаге байты будем увеличивать в регистре DI на один. После того, как счётчик CX уменьшится до 0, программа завершит свою работу.
ЛИСТИНГ ЗАДАЧИ «Программа копирования строки на прямую»
Задача 1
Data Segment ; открыть сегмент данных
text1 DB 'abcdefghijklmno', 13, 10, '$'
text2 DB 25 DUP(?) ; строка получатель
Data ENDS ; Закрыть сегмент данных
;-----------------------------------------------
STK Segment ; открыть сегмент данных
DB 100h DUP(?) ; зарезервировать под стек 100 ячеек памяти
STK ENDS ; закрыть сегмент стека
;---------------------------------------------------
ASSUME SS:STK, CS:CODE, DS:DATA ;назначить сегментные регистры
;-----------------------------------------------------
CODE Segment ; открыть сегмент кода
START: mov AX, DATA ; загрузка сегментного регистра DS
mov DS, AX ; регистра DS
lea SI, TEXT1 ; начальный адрес строки-источника занести в SI
lea DI, TEXT2 ; начальный адрес строки получателя занести в DI
mov CX, 15 ; переслать 15 байтов
Metka1: mov AL, [SI] ; выполнить пересылку
mov [DI], AL ; через промежуточный регистр AL
INC SI ; увеличить адрес источника на 1
INC DI ; увеличить адрес приёмника на 1
LOOP Metka1 ;(CX)-1 повторить цикл пока CX не равно 0
mov AL, 0 ; завершить программу через
mov AH, 4Ch ; системную функцию возврата
int 21h ; в DOS
CODE ENDS ; закрыть сегмент кода
END START ; закрыть программу

Внимание, отключите Adblock

Вы посетили наш сайт со включенным блокировщиком рекламы!
Ссылка для скачивания станет доступной сразу после отключения Adblock!

Скачать полную версию
Рефераты по информатике Составить программу копирования строки из 15 символов в рядом расположенную область памяти, но в обратном порядке. Для этого мы создаём две строки.
Оценок: 245 (Средняя 5 из 5)

Специалисты RetsCorp работают в digital-сфере более 7 лет. За это время мы разработали более 500+ успешных проектов. Основываясь на своем опыте и знании рынка, мы с уверенностью можем сказать, что будет работать, а что — нет. Заказывая создание лендинга для бизнеса в нашей студии, вы получаете работающие решения, необходимые именно вашему бизнесу.

Сотрудничая с нами, вы будете не клиентом, а нашим партнером. Благодаря этому мы будем развивать ваш бизнес как собственный. Мы так же как и вы заинтересованы в успехе проекта, поскольку ваша успешность будет нашей рекламой.

© 2014 - 2022 MaxEdu.ru