1) Создать программу на языке ассемблера со следующими характеристиками-модель памяти типа Small, размер стекового сегмента 1024 байта;
2) содержимое сегмента данных, согласно индивидуальному заданию;
3) программа должна выполнить действия по индивидуальному заданию из таблицы 2.4.
Пояснения к заданию
· Имя программы должно быть следующего типа: LAB2XXX.ASM
где ХХХ – ФИО студента (три буквы латинским шрифтом);
· аббревиатуры TABB, TABW, TABD, TABF, TABQ, TABT используется в программе в качестве идентификаторов таблиц данных.
Таблица 2.4 – Индивидуальные задания к лабораторной работе
Вариант | Условия задания |
1. В сегменте данных создать таблицу байт TABB размером 4´4 (четыре строки и четыре столбца), содержащую следующие десятичные данные: 25,12,15,13,45,65,36,66,98, 87,41,45,64, 28,29,37, и таблицу слов TABW размером 4´2, содержащую нули. 2. Поменять местами третий и пятый элементы таблицы TABB 3. Программно переписать таблицу TABB в таблицу TABW в обратном порядке, преобразовав байты в слова. 4. В первых элементах каждой строки таблицы TABW старшие байты заменить их инверсным значением. 5. Скопировать полученную таблицу в регистры процессора. | |
1. В сегменте данных создать таблицу слов TABW размером 3´3 (три строки и три столбца), содержащую следующие десятичные данные: 2895,1782,1554,2513,4175,6965,7532, 1598,2584, и таблицу байт TABB размером 3´6 (три строки и шесть столбцов), содержащую единицы. 2. Программно поменять местами старшие байты первых и последних элементов каждой строки таблицы слов TABW. 3. Переписать содержимое таблицы слов TABW в таблицу байт TABB, преобразовав слова в байты. 4. Инвертировать пятый элемент таблицы TABB. 5. Скопировать первые восемь слов полученной таблицы в регистры процессора. |
Продолжение таблицы 2.4
Вариант | Условия задания |
1. В сегменте данных создать таблицу двойных слов TABD размером 3´2 (три строки и два столбца), содержащую следующие шестнадцатиричные данные: 2F489655h, 0В2C5E824h,0С35F5942h,4BA53143h,4CD77885h, 0A696B52Eh, и таблицу слов TABW размером 3´4, содержащую нули. 2. Программно заменить каждый третий байт таблицы TABD его инверсным значением. 3. Поменять местами первые байты вторых элементов второй и третьей строки. 4. Скопировать таблицу TABD в таблицу TABW в обратном порядке, преобразовав двойные слова в слова. 5. Скопировать первые восемь слов полученной таблицы в регистры процессора. | |
1. В сегменте данных создать таблицу байт TABB размером 4´4 (четыре строки и четыре столбца), содержащую шестнадцатиричные данные: 28h,9Eh,17h,8Ah,15h,54h,25h, 8Bh,41h,75h,69h,6Ah,7Bh,32h,15h,98h, и таблицу двойных слов TABD размером 2´2, содержащую единицы. 2. Переписать таблицу TABB в таблицу двойных слов TABD. Сначала четные элементы TABB, а затем нечетные. 3. В таблице TABD в третьем элементе поменять местами первый и последний байты. 4. Во всех элементах таблицы TABD инвертировать вторые байты. 5. Скопировать полученную таблицу в регистры процессора. | |
1. В сегменте данных создать таблицу слов TABW размером 4´3 (четыре строки и три столбца), содержащую следующие десятичные данные: 2455,5682,3654,2983,4575, 6258,7642,1598,2584,2584,3215,2684, и таблицу двойных слов TABD размером 3´2, содержащую единицы. 2. Во вторых элементах строк таблицы TABW поменять старший и младший байты местами. 3. Переписать содержимое таблицы TABW в таблицу двойных слов TABD. 4. Во всех элементах таблицы TABD инвертировать вторые байты. 5. Скопировать четыре двойных слова полученной таблицы в регистры процессора. |
Продолжение таблицы 2.4
Вариант | Условия задания |
1. В сегменте данных создать таблицу двойных слов TABD размером 3´3 (три строки и три столбца), содержащую следующие шестнадцатиричные данные: 32658287h, 0A316492Eh,7B5D9317h,0B48A2A3Bh,3C68F125h, 5F2584F4h, 2E9513A5h,65C8B18Bh,3A7F4951h. 2. Поменять местами младшие байты первых элементов первой и второй строк и старшие байты второго и третьего элементов третьей строки. 3. Обнулить третьи байты элементов второй строки. 4. Инвертировать вторые байты первой строки. 5. Скопировать первые восемь слов таблицы в регистры процессора. | |
1. В сегменте данных создать таблицу байт TABB размером 4´4 (четыре строки и четыре столбца), содержащую следующие десятичные числа: 24, -55,-56,82,-36,54,-29,83, 45,75,-62,-58,76,-42,15,-98 и две байтовых таблицы PTABB и NTABB размером 2´2 (две строки и два столбца). 2. Переслать положительные элементы в таблицу PTABB PTABB, а отрицательные в NTABB. 3. Скопировать содержимое таблицы NTABB в регистры процессора. 4. Скопировать содержимое таблицы NTABB из регистров в стек. 5. Восстановить из стека в регистры содержимое таблицы NTABB | |
1. В сегменте данных создать таблицу двойных слов TABD размером 3´3 (три строки и три столбца), содержащую следующие шестнадцатиричные данные: 2A5В87F4h, 15С9В828h, 9DC25E8Bh,5C5E3A24h, 178A1554h, 258B41E6h,75696A7Bh, 321598A2h,95126ВС8h, и таблицу слов TABW размером 6´6 (шесть строк и шесть столцов). 2. Инвертировать вторые байты в элементах первой строки. 3. Переписать таблицу двойных слов TABD в словную таблицу TABW. 4. Поменять местами младшие и старшие байты первых элементов первой и второй строк. 5. Скопировать первые восемь слов таблицы в регистры процессора. |
Продолжение таблицы 2.4
Вариант | Условия задания |
1. В сегменте данных создать таблицу TABF размером 3´2 (три строки и два столбца), элементы которой шестибайтовые шестнадцатиричные поля: 2A5В87F415С9h, 9DC25E8B5C5Eh,1554258B41E6h, 75696A7B3215h, 0A25В41С53BD8h,0B2486F3B7E92h и байтовую таблицу ТАВB размером 6´6 (шесть строк и шесть столбцов). 2. Циклически поменять местами старшие байты первых элементов всех строк таблицы TABF. 3. Переписать таблицу TABF в байтовую таблицу ТАВB. 4. Скопировать первые шестнадцать байт таблицы в регистры процессора. 5. Инвертировать первые шесть байт таблицы ТАВB. | |
1. В сегменте данных создать таблицу слов TABW размером 3´3 (три строки и три столбца), содержащую следующие десятичные числа: 4562,3571,4893,6547,3215,8462,9576, 9512,7532 и строку TABD размером в пять двойных слов. 2. Во второй строке таблицы TABW старшие байты слов заменить их инверсным значением. 3. Переписать таблицу слов TABW в строку двойных слов TABD. 4. Обнулить младшие байты элементов строки TABD 5. Скопировать первые восемь слов таблицы TABW в регистры процессора. | |
1. В сегменте данных создать таблицу слов TABW размером 4´4 (четыре строки и четыре столбца), содержащую следующие шестнадцатиричные числа: 0E684H,8D65H, 6578H,32D9H,0AB32H,6C54H,0D98CH,3578H,9456H, 9F56H,0E567H,9345H,6894H,0FDE2H,9753H,5246H и таблицу байт TABB размером 2´8 (две строки и восемь столбцов). 2. Переписать таблицу слов TABW в таблицу байт TABB в обратном порядке, преобразовав слова в байты. 3. Инвертировать первые байты вторых элементов каждой строки. 4. Скопировать первые восемь слов таблицы TABW в стек. 5. Восстановить из стека в регистры процессора первые восемь слов. |
Продолжение таблицы 2.4
Вариант | Условия задания |
1. В сегменте данных создать таблицу TABQ размером 2´2 (две строки и два столбца), элементы которой восьмибайтовые шестнадцатиричные поля: 0A5672A5В87F415С9h, 85679DC25E8B5C5Eh, 0D9871554258B41E6h, 0E36875696A7B3215h, и словную таблицу ТАВW размером 4´4. 2. Поменять местами первые и седьмые байты элементов первой строки, а также третьи и пятые байты элементов второй строки таблицы TABQ. 3. Переписать таблицу TABQ в словную таблицу ТАВW в обратном порядке. 4. Скопировать первые восемь слов таблицы в стек. 5. Скопировать содержимое первых восьми слов стека в регистры процессора. | |
1. В сегменте данных создать таблицу байт TABB размером 4´4 (четыре строки и четыре столбца), содержащую следующие шестнадцатиричные данные: 0A5h,62h,15h, 83h, 4Fh,65h,3Eh,6Dh,9Ch,8Ah,4Bh,0B5h,64h,28h,0D9h, 37h, и словную таблицу ТАВW размером 2´2. 2. Переписать исходную таблицу TABB в таблицу слов ТАВW в обратном порядке. 3. В каждом элементе таблицы ТАВW старшие байты заменить инверсным значением. 4. Скопировать первые восемь слов таблицы ТАВW в стек. 5. Восстановить из стека первые восемь слов таблицы в регистры процессора. | |
1. В сегменте данных создать таблицу слов ТАВW размером 4´2 (четыре строки и два столбца), элементы которой следующие шестнадцатиричные числа: 0A675h, 85AFh, 0D987h,0E9B5h,1554h,258Bh,41E6h, 0E368h, и таблицу байт TABB размером 4´4. 2. Поменять местами первые и вторые байты в элементах первой строки таблицы ТАВW. 3. Переписать таблицу ТАВW в байтовую таблицу TABB в обратном порядке. 4. Скопировать первые восемь слов таблицы ТАВW в стек. 5. Восстановить из стека первые восемь слов таблицы в регистры процессора. |
Продолжение таблицы 2.4
Вариант | Условия задания |
1. В сегменте данных создать таблицу байт TABB, размером 4´4 (четыре строки и четыре столбца), содержащую следующие десятичные данные: 25,92,15,83,45,65,36,66,98, 87,41,45,64, 28,89,77 и таблицу слов ТАВW размером 2´2 (две строки и два столбца). 2. Заменить первые элементы каждой строки таблицы TABB их инверсным значением. 3. Переписать таблицу TABB в таблицу ТАВW, в обратном порядке. 4. Скопировать первые восемь слов таблицы в стек. 5. Восстановить из стека первые восемь слов таблицы в регистры процессора. |
Содержание отчета о выполненной работе
1. Титульный лист согласно приложению А.
2. Индивидуальное задание на лабораторную работу.
3. Исходный текст программы.
4. Содержание сегментных регистров.
5. Содержание регистров общего назначения.
6. Содержание регистров указателей и индексов.
7. Содержание IP последней команды.
8. Адреса используемых таблиц данных.
Контрольные вопросы по лабораторной работе № 2
1. Перечислить основные регистры МП 8086.
2. Указать разрядность и функции регистров общего назначения.
3. Указать разрядность и назначение сегментных регистров.
4. Указать назначение регистра указателя команд.
5. Поясните алгоритм изменения состояния указателя команд при исполнении программы.
6. Привести базовый цикл работы микропроцессора при выполнении команды.
7. В какой момент выполнения команды и почему именно в этот момент регистр IP меняет своё значение?
8. Чем определяется число, на которое регистр IP меняет своё значение при выполнении команды?
9. Какие директивы применяются при определении сегментов программы?
10. Какие директивы применяются при определении моделей памяти?
11. Какое максимальное беззнаковое десятичное число можно записать в регистр AH?
12. Какие функции выполняют директивы.DATA,.CODE?
13. Какое максимальное знаковое десятичное число может хранить регистр CL?
14. Если в регистре AX записано число 0А2СЕН, то что содержит AL?
15. Какие структуры процессора осуществляют доступ к данным вашей программы?
16. Укажите, сколько байт памяти резервирует следующие директивы:
VAR1 DB (?), 4 DUP (26h),3 DUP (0),
VAR2 DD 4 DUP (?), 4Fh, 0A6h
VAR3 DB 6 DUP (?), 7Bh, 4 DUP (0)
17. Какое значение поместит Ассемблер в переменную
VAR2+ 2 DD (?) из предыдущего вопроса?
18. Каковы минимальный и максимальный размеры сегментов?
19. Представьте число -64Dh в форме представления его в ЭВМ.
20. Имеем строку TABSD DD 0A25F60ABH, 26E7B3BEH, 0BC462010H, 4F56A0H. Укажите смещение первого байта второго элемента.
21. Каково смещение старшего байта в последнем элементе таблицы TABSD из предыдущего вопроса?
22. Какую функцию выполняет директива MODEL?
23. Какую функцию выполняет директива.STACK?
24. Укажите относительный адрес любого байта ваших данных.
25. Укажите относительный адрес любой команды вашей программы.
26. Каким образом скопировать данные из одной ячейки памяти в другую?
27. Занесите в стек следующие числа: 23h, 45h, 56h, 78h.
28. Восстановите из стека в регистры процессора первых четыре байта.
29. Скопируйте в регистр АН содержимое ячейки памяти находящейся в дополнительном сегменте.
30. Запишите десятичное число 56 в том виде, в котором оно представлено в основной памяти ЭВМ.
Лабораторная работа №3