Программы копирования строки
Порядок составления программ копирования строки символов в рядом расположенную область памяти в обратном порядке и напрямую. Определение адресов источника и получателя. Организация адресации операндов, строк и циклов посредством промежуточного регистра.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 09.11.2010 |
Размер файла | 20,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
5
Министерство РФ по связи и информатизации
Поволжская государственная академия телекоммуникаций
и информатики
Кафедра «ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА»
КОНТРОЛЬНАЯ РАБОТА
ПО ПРЕДМЕТУ
«Организация ЭВМ и систем»
Самара
2009 г.
Программа копирования строки в обратном порядке
Составить программу копирования строки из 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 ; закрыть программу
5
Программа копирования строки на прямую
Составить программу производящую копирование строки из 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 ; закрыть программу
Подобные документы
Понятие стандартной библиотеки C++. Количество удобных операций и методов. Создание пустой строки и конструктор копирования. Создание строки на основе нуль-терминальной строки. Примеры использования конструкторов. Присвоение строки типа string.
презентация [221,2 K], добавлен 04.05.2012Виды резервного копирования: инкрементное, дифференциальное и полное. Технологии хранения резервных копий и данных. Обзор программ резервного копирования. Возможности Deja Dup. Консольные команды операционной системы Linux. Установка пароля шифрования.
курсовая работа [1,2 M], добавлен 30.04.2014Основные методы резервного копирования и восстановления OC Windows 8. История файлов, создание точки восстановления. Выбор средств резервного копирования. Возможности программ для резервного копирования. Особенности моделирования и реализации задачи.
курсовая работа [1,1 M], добавлен 24.12.2014Обзор технологий резервного копирования. Восстановление данных из резервных копий. Разновидности программ резервного копирования: GFI Backup, Paragon Drive backup Workstation, Acronis True Image. Применение и сравнение рассмотренных программных продуктов.
курсовая работа [3,0 M], добавлен 29.01.2013Понятие и использование командной строки. Открытие командной строки. Команды, выполняемые с помощью командной строки. Как выполнить команду с повышенными привилегиями. Изменение внешнего вида окна командной строки с помощью параметров командной строки.
презентация [948,2 K], добавлен 22.10.2014Выбор режимов адресации, посредством которых будет осуществлен доступ к данным. Этапы создания программы. Характеристика таблицы символов и полученного файла листинга. Анализ изменения состояния регистра IP при выполнении команд JMP, Jcc, LOOPx.
курсовая работа [4,9 M], добавлен 25.03.2012Виды носителей, которые используются для выбора технологии хранения резервных копий и данных. Восстановление данных на чистом компьютере. Разновидности программ резервного копирования. Обзор и назначение программы Paragon Drive backup Workstation.
курсовая работа [4,8 M], добавлен 26.01.2013Понятие и содержание процесса резервного копирования, оценка его возможностей, технологического обеспечения, этапы и эффективность. Анализ антивирусной программы, преимущества и недостатки ее использования, системные требования, принципы ее эксплуатации.
контрольная работа [26,7 K], добавлен 06.01.2014Проектирование программы, защищающей текст от несанкционированного копирования, с использованием языка C++ и среды программирования BuilderC++6. Структурные схемы операций, используемых в алгоритме. Информационная программная реализация выбранного метода.
курсовая работа [1,3 M], добавлен 14.12.2012Разработка графического интерфейса для ввода начальных значений, отображения результатов и тестирования методов собственного класса на языке программирования С++. Подсветка цветом выбранных операндов в процессе их инициализации и вывода на дисплей.
курсовая работа [234,6 K], добавлен 27.12.2014