Индивидуальные задания. Написать программу, в которой в сегменте данных резервируются

Вариант 1.

Написать программу, в которой в сегменте данных резервируются:

1. Пять слов со значениями: 2516Н, 630Н, 1841Н, 3345Н, 123Н.

2. Цепочка символов “кмпотхд”.

3. Три байта без инициализации и один со значением ‘$’.

Программа выполняет следующие действия:

1. Инициализирует сегмент регистр DS.

2. Из первого слова последовательности (1) вычитает третье слово этой

последовательности, а результат складывает со вторым словом.

3. Младший байт полученного результата записывается в первый байт последовательности (3), от старшего байта результата вычитается значение 10н, полученное значение заносится во второй байт последовательности (3). В третий байт этой последовательности заносится инкрементированное значение младшего байта результата, полученного в п.2.

4. В регистр SI заносится значение адреса последовательности (2), в регистр ВХ – значение адреса (3), затем осуществляется обмен содержимым этих регистров.

5. Используя адрес, хранящийся в SI (косвенную адресацию), три байта последовательности (3) перекодировать, в качестве таблицы перекодировки взять последовательность символов (2).

6. Перекодированную последовательность вывести на экран, а результат наблюдать в отладчике в альтернативном окне. Вывод на экран строки символов см. приложении.

Вариант 2.

Написать программу, в которой в сегменте данных резервируются:

1. Пять слов со значениями: 2499Н, 2106Н, 333Н, 1821Н, 3СВ6Н.

2. Цепочка символов “кмпотхд”.

3. Три байта без инициализации и один со значением ‘$’.

В программе необходимо предусмотреть выполнение следующих действий:

1. Инициализирует сегмент регистр DS.

2. К первому слову последовательности, а из результата вычесть пятое слово.

3. Младший байт полученного результата записывается в третий байт последовательности (3), старший байт результата инкрементировать и результата занести в первый байт последовательности (3). Во второй байт этой последовательности заносится декремент значения младшего байта, полученного в п.2.

4. В регистр DI заносится значение адреса последовательности (2), в регистр BX – значение адреса (3), затем осуществляется обмен содержимым этих регистров.

5. Используя адрес, хранящийся в SI (косвенную адресацию), три байта последовательности (3) перекодировать, в качестве таблицы перекодировки взять последовательность символов (2).

6. Перекодированную последовательность вывести на экран, а результат наблюдать в отладчике в альтернативном окне. Вывод на экран строки символов см. в приложении.

Вариант 3.

Написать программу, в которой в сегменте данных резервируются:

1. Пять слов со значениями: 1389Н, 2145Н, 326Н, 2821Н, 2265Н.

2. Цепочка символов “кмпотхд”.

3. Три байта без инициализации и один со значением ‘$’.

В программе необходимо предусмотреть выполнение следующих действий:

1. Инициализирует сегмент регистр DS.

2. К второму слову последовательности (1) прибавить третье слово этой последовательности, а из результата вычесть пятое слово.

3. Младший байт полученного результата записывается в третий байт последовательности (3), из старшего байта результата вычитается значение 2 и результат заносится в первый байт последовательности (3). Во второй байт этой последовательности заносится уменьшенное на 3 значение младшего байта результата, полученного в п.2.

4. В регистр DI заносится значение адреса последовательности (2), в регистр BX – значение адреса (3), затем осуществляется обмен содержимым этих регистров.

5. Используя адрес, хранящийся в SI (косвенную адресацию), три байта последовательности (3) перекодировать, в качестве таблицы перекодировки взять последовательность символов (2).

6. Перекодированную последовательность вывести на экран, а результат наблюдать в отладчике в альтернативном окне. Вывод на экран строки символов см. в приложении.

Вариант 4.

Написать программу, в которой в сегменте данных резервируются:

1. Пять слов со значениями: 4516Н, 2221Н, А212Н, 1С10Н, 6115Н.

2. Цепочка символов “кмпотхд”.

3. Три байта без инициализации и один со значением ‘$’.

Программа выполняет следующие действия:

1. Инициализирует сегмент регистр DS.

2. Из второго слова последовательности (1) вычитает четвертое слово этой последовательности, старший байт результата записывает в первый байт последовательности (3).

3. Третье слово последовательности (1) складывает с пятым словом этой последовательности, от младшего байта полученного результата вычитается значение 11 и результат записывается в третий байт последовательности (3). Старший байт результата заносится во второй байт последовательности (3).

4. В регистр SI заносится значение адреса последовательности (2), в регистр ВХ – значение адреса (3), затем осуществляется обмен содержимым этих регистров.

5. Используя адрес, хранящийся в SI (косвенную адресацию), три байта последовательности (3) перекодировать, в качестве таблицы перекодировки взять последовательность символов (2).

6. Перекодированную последовательность вывести на экран, а результат наблюдать в отладчике в альтернативном окне. Вывод на экран строки символов см. приложении.

Вариант 5.

Написать программу, в которой в сегменте данных резервируются:

1. Пять слов со значениями: 4576Н,27F0Н, 3FF1Н, 77F1Н, 3716.

2. Цепочка символов “кмпотхд”.

3. Три байта без инициализации и один со значением ‘$’.

Программа выполняет следующие действия:

1. Инициализирует сегмент регистр DS.

2. Из четвертого слова последовательности (1) вычитает второе слово этой последовательности, младший байт результата записывается в третий байт последовательности (3), старший байт результата, уменьшенный на 4D, записывает во второй байт последовательности (3).

3. Пятое слово последовательности (1) складывает с третьим словом этой последовательности, младший байт полученного результата записывает в первый байт последовательности (3).

4. В регистр SI заносится значение адреса последовательности (2), в регистр ВХ – значение адреса (3), затем осуществляется обмен содержимым этих регистров.

5. Используя адрес, хранящийся в SI (косвенную адресацию), три байта последовательности (3) перекодировать, в качестве таблицы перекодировки взять последовательность символов (2).

6. Перекодированную последовательность вывести на экран, а результат наблюдать в отладчике в альтернативном окне. Вывод на экран строки символов см. приложении.

Вариант 6.

Написать программу, в которой в сегменте данных резервируются:

1. Пять слов со значениями: 1F5Н, А781Н, СF84Н, С0А4Н, А483Н.

2. Цепочка символов “кмпотхд”.

3. Три байта без инициализации и один со значением ‘$’.

Программа выполняет следующие действия:

1. Инициализирует сегмент регистр DS.

2. Из третьего слова последовательности (1) вычитает пятое слово этой

последовательности, младший байт результата записывает во второй байт последовательности (3).

3. Первое слово последовательности (1) складывает с четвертым словом этой последовательности, от старшего байта полученного результата вычитается значение С2Н и записывает в первый байт последовательности (3), младший байт результата уменьшенный на 95 заносится в третий байт последовательности (3).

4. В регистр SI заносится значение адреса последовательности (2), в регистр ВХ – значение адреса (3), затем осуществляется обмен содержимым этих регистров.

5. Используя адрес, хранящийся в SI (косвенную адресацию), три байта последовательности (3) перекодировать, в качестве таблицы перекодировки взять последовательность символов (2).

6. Перекодированную последовательность вывести на экран, а результат наблюдать в отладчике в альтернативном окне. Вывод на экран строки символов см. приложении.

Вариант 7.

Написать программу, в которой в сегменте данных резервируются:

1. Пять слов со значениями: 1F5Н, А781Н, СF84Н, С0А4Н, А483Н.

2. Цепочка символов “кмпотхд”.

3. Три байта без инициализации и один со значением ‘$’.

Программа выполняет следующие действия:

1. Инициализирует сегмент регистр DS.

2. Складывает первое и пятое слово последовательности (1) и из результата вычитает второе слово этой последовательности.

3. Младший байт полученного результата уменьшенный на величину 71Н записывается в третий байт последовательности (3), от старшего результата вычитается значение 41Н, полученное значение заносится во второй байт последовательности (3). В первый байт этой последовательности заносится инкрементированное значение вновь полученного второго байта последовательности (3).

4. В регистр SI заносится значение адреса последовательности (2), в регистр ВХ – значение адреса (3), затем осуществляется обмен содержимым этих регистров.

5. Используя адрес, хранящийся в SI (косвенную адресацию), три байта последовательности (3) перекодировать, в качестве таблицы перекодировки взять последовательность символов (2).

6. Перекодированную последовательность вывести на экран, а результат наблюдать в отладчике в альтернативном окне. Вывод на экран строки символов см. приложении.

Вариант 8.

Написать программу, в которой в сегменте данных резервируются:

1. Шесть байт со значениями: 45Н, 16Н, 22Н, 21Н, 3СН, F1Н.

2. Два слова со значениями: АА33Н, 44F4Н.

3. Цепочка символов “тапемхск”.

4. Три байта без инициализации и один со значением ‘$’.

Программа выполняет следующие действия:

1. Инициализирует сегмент регистр DS.

2. Из второго слова последовательности (2) вычитает третье слово последовательности (1), старший байт результата уменьшенный на величину 50Н записывает во второй байт последовательности (4).

3. Первое слово последовательности (1) складывает со вторым словом последовательности ()2, от младшего байта результата вычитается значение 32Н и результат записывается в третий байт последовательности (4), старший байт результата уменьшается на 56Н заносится в первый байт последовательности (4).

4. В регистр SI заносится значение адреса последовательности (2), в регистр ВХ – значение адреса (3), затем осуществляется обмен содержимым этих регистров.

5. Используя адрес, хранящийся в SI (косвенную адресацию), три байта последовательности (3) перекодировать, в качестве таблицы перекодировки взять последовательность символов (2).

6. Перекодированную последовательность вывести на экран, а результат наблюдать в отладчике в альтернативном окне. Вывод на экран строки символов см. приложении.

Вариант 9.

Написать программу, в которой в сегменте данных резервируются:

1. Четыре слов со значениями: 1245Н, FАС1Н, 12С1Н, 45С6Н.

2. Три байта со значениями: 35Н, 33Н, F4Н.

3. Цепочка символов “крланюои”.

4. Три байта без инициализации и один со значением ‘$’.

Программа выполняет следующие действия:

1. Инициализирует сегмент регистр DS.

2. Складывает первое и третье слова последовательности (1), младший байт результата записывает во второй байт последовательности (4), старший байт результата уменьшается на 23Н заносится в первый байт последовательности (4).

3. Второй байт последовательности (2) складывает с младшим байтом полученного в п.2. результата и вычитает первый байт последовательности (2), результат записывает в третий байт последовательности (4).

4. В регистр SI заносится значение адреса последовательности (2), в регистр ВХ – значение адреса (3), затем осуществляется обмен содержимым этих регистров.

5. Используя адрес, хранящийся в SI (косвенную адресацию), три байта последовательности (3) перекодировать, в качестве таблицы перекодировки взять последовательность символов (2).

6. Перекодированную последовательность вывести на экран, а результат наблюдать в отладчике в альтернативном окне. Вывод на экран строки символов см. приложении.

Вариант 10.

Написать программу, в которой в сегменте данных резервируются:

1. Четыре слов со значениями: 1245Н, FАС1Н, 12С1Н, 45С6Н.

2. Три байта со значениями: 27Н, 80Н, АВН.

3. Цепочка символов “крланюои”.

4. Три байта без инициализации и один со значением ‘$’.

Программа выполняет следующие действия:

1. Инициализирует сегмент регистр DS.

2. Складывает третье и четвертое слова последовательности (1). Из младшего байт результата вычитает второй байт последовательности (2), полученное значение записывает во второй байт последовательности (4), старший байт результата уменьшенный на 53Н заносится в первый байт последовательности (4).

3. Первый байт последовательности (2) складывает с младшим байтом полученного в п.2. результата и вычитает третий байт последовательности (2), результат записывает в третий байт последовательности (4).

4. В регистр SI заносится значение адреса последовательности (2), в регистр ВХ – значение адреса (3), затем осуществляется обмен содержимым этих регистров.

5. Используя адрес, хранящийся в SI (косвенную адресацию), три байта последовательности (3) перекодировать, в качестве таблицы перекодировки взять последовательность символов (2).

6. Перекодированную последовательность вывести на экран, а результат наблюдать в отладчике в альтернативном окне. Вывод на экран строки символов см. приложении.

Вариант 11.

Написать программу, в которой в сегменте данных резервируются:

1. Четыре слов со значениями: 245FН, 7С1Н, 128СН, 445СН.

2. Три байта со значениями: 2СН, 90Н, 61Н.

3. Цепочка символов “крланюои”.

4. Три байта без инициализации и один со значением ‘$’.

Программа выполняет следующие действия:

1. Инициализирует сегмент регистр DS.

2. Из второго слова последовательности (1) вычитает четвертое слово этой последовательности. Из младшего байта результата вычитает третий байт последовательности (2), полученное значение записывает в третий байт последовательности (4), старший байт результата уменьшенный на 30Н заносится во второй байт последовательности (4).

3. Первый байт последовательности (2) складывает с младшим байтом полученного в п.2. результата и вычитает второй байт последовательности (2), результат записывает в первый байт последовательности (4).

4. В регистр SI заносится значение адреса последовательности (2), в регистр ВХ – значение адреса (3), затем осуществляется обмен содержимым этих регистров.

5. Используя адрес, хранящийся в SI (косвенную адресацию), три байта последовательности (3) перекодировать, в качестве таблицы перекодировки взять последовательность символов (2).

6. Перекодированную последовательность вывести на экран, а результат наблюдать в отладчике в альтернативном окне. Вывод на экран строки символов см. приложении.

Вариант 12.

Написать программу, в которой в сегменте данных резервируются:

1. пять слов со значениями: 245FН, 7АС1Н, 128СН, 445СН, 2233Н.

2. Три байта со значениями: 2СН, 10Н, 61F4Н.

3. Цепочка символов “крланюои”.

4. Три байта без инициализации и один со значением ‘$’.

Программа выполняет следующие действия:

1. Инициализирует сегмент регистр DS.

2. Из пятого слова последовательности (1), вычитает третье слово этой последовательности. К младшему байту результата добавляет значение 61Н, полученное значение записывает в третий байт последовательности (4), из второго байта последовательности (2) вычитает старший байт результата и заносит полученное значение во второй байт последовательности (4).

3. Дважды декрементированное значение третьего байта последовательности (4) (или содержимое AL)заносит в первый байт последовательности (4).

4. Используя адрес, хранящийся в SI (косвенную адресацию), три байта последовательности (3) перекодировать, в качестве таблицы перекодировки взять последовательность символов (2).

5. Используя адрес, хранящийся в SI (косвенную адресацию), три байта последовательности (4) перекодировать, используя таблицу последовательность символов (3).

6. Перекодированную последовательность вывести на экран, а результат наблюдать в отладчике в альтернативном окне. Вывод на экран строки символов см. приложении.

ПРИЛОЖЕНИЕ

Выводимая на экран строка символов должна завершатся символом ‘$’. Вывод строки символов осуществляется с помощью программного прерывания 21Н, при этом в регистр АН заносится номер функции - 9Н, а в регистре DХ должен храниться адрес выводимой последовательности, например:

MOV DX, OFFSET T1

MOV AH, 09H

INT 21H

ЛИТЕРАТУРА

1. Абель П. Язык ассемблера для IBM PS и программирования. М: Высш. шк., 1992г., 224 с.

2. В.Л.Григорьев. Программирование однокристальных микропроцессоров. М., Энергоиздат, 1987г., 288 с.

3. П.Нортон, Д.Соухэ. Язык ассемблера для IBM PS. М., Издательство “Компьютер”, 1993г., 352 с.

ОГЛАВЛЕНИЕ

Стр.

ВВЕДЕНИЕ ………..……….……….…..……………………………………..3

1. Лабораторная работа №1 …………..………………………………….3

1.1.Создание выполнимого файла, работа в отладчике,

изучение оператора пересылки MOV …………………………………3

1.2. Оператор MOV ……………………………………………………… 3

1.3. Основные команды отладчика AFD ………………………………5

1.4. Индивидуальные задания ……………….…………………………6

2. Лабораторная работа № 2 …………………………………………….8

2.1. Сегментация памяти, директивы ассемблера ………………….8

2.2. Прямая адресация …………………………………………………. 10

2.3. Косвенная адресация ……………………………………………….10

2.4. Директива ASSUME …………………………………………………11

2.5. Индивидуальные задания ………………………………………….12

3. Лабораторная работа №3 …………………………………………….. 14

3.1. Директивы EQU, LABEL, команды сложения и вычитания

3.1.1. Директивы EQU ……………………………………………….14

3.1.2. Директива LABEL ……………………………………………. 15

3.2. Команды сложения и вычитания ………………………………... 15

3.3. Индивидуальные задания ………………………………………….17

3.4. ПРИМЕЧАНИЕ ………………………………………………………22

4. Лабораторная работа №4 …………………………………………….. 22

4.1. Изучение операторов обмена XCHG и XLAT ………………….. 22

4.2. Индивидуальные задания……………………………………………24

4.3. ПРИЛОЖЕНИЕ ………………………………………………………31

ЛИТЕРАТУРА ……………………………………………………………….. 32


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: