Учебная работа. Контрольная работа: Программы копирования строки

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (5 оценок, среднее: 4,80 из 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 ; закрыть программку

программка копирования строчки на прямую

Составить программку производящую копирование строчки из 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 ; закрыть программку


]]>