Архитектура ЭВМ. Архитектура
Скачать 392.83 Kb.
|
. Длинамасси- ва 8. 19. Произвести инверсию слов, размещенных в массиве. Длина масси- ва 10. 20. Осуществить преобразованиевида Х ← Х+1 над словами, разме- щенными в памяти. Число слов 8. 2.6. Порядок выполнения работы 1. Изучите форматы команд и режимы адресации 16-битного МП86. 2. Разработайте в машинных кодах МП86 программу, содержащую 4 различных варианта сложения двухбайтных чисел d ← d+s. Операнды ис- точника s и приемника d размещены в памяти по эффективным адре- сам: источник – 500+2N, приемник – 500+2(N+1), где N – номер варианта в 16-ричной системе счисления. Варианты программы должны отличатьсярежимами адресацииопе- рандов приемника и источника: – абсолютная и базовая; – индексная и косвенная; – косвенная и базовая; – индексная и индексная. Варианты отделяйте друг от друга командой NOP. 3. Составьте блок-схему и программу вычислениявыражения для за- данного варианта (п. 2.5). 4. С помощью рассмотренных в работе № 1 редактора NC и отладчика TD введите в ЭВМ программу сложения двухбайтных чисел для различ- ных режимов адресации и проверьте правильность ее выполнения. Перед выполнением каждого варианта программы с помощью команд отладчика необходимо задавать начальные значения регистров МП и па- мяти. 5. С помощью команд редактора NC и отладчика TD введите в ЭВМ разработанную в соответствии с заданием (п. 3) программу и выполните ее в пошаговом режиме. Трассу программы приведите в отчете. 2.7. Содержание отчета 1. Программы сложения двухбайтных чисел для различных режимов адресации. 2. Блок-схема и программа для заданного варианта задания. 3. Исходные данные и результаты вычислений. 4. Трасса программы в пошаговом режиме. 26 Лабораторная работа 3 ЭЛЕМЕНТЫ ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ АССЕМБЛЕРА МП I8086. АССЕМБЛЕР TASM 3.1. Цель работы Изучение элементов программирования на языке ассемблера МП 80X86. Знакомство и приобретение навыков работы с ассемблером tasm и компоновщиком tlink при создании исполняемых модулей типа .СОМ. 3.2. Элементы языка ассемблера МП 80Х86 Программа на языке ассемблера представляет собой последова- тельность предложений (операторов), описывающих выполняемые опера- ции. Каждый командный оператор может содержать до 4 полей (в скобках указаны необязательные поля): [Метка:] Мнемокод [Операнд] [;Комментарий] Например, MM1: MOV AX,DX ;Переслать в AX из регистра DX ПОЛЕ МЕТКИ не должно начинаться с цифры. Метки могут содер- жать символы верхнего и нижнего регистров: буквы, цифры, символы под- черкивания _ и знаки $ @ ?. Максимальная длина метки 31 символ. ПОЛЕ МНЕМОКОДА содержит мнемонику команды, например MOV, ADD. ПОЛЕ ОПЕРАНДОВ. В нем указываются данные, с которыми работа- ет команда. ПОЛЕ КОММЕНТАРИЯ всегда начинается с символа “;”. Для описания операндов могут быть использованы метки, константы, регистры МП, переменные памяти, текстовые строки, выражения. В численной константе основание системы счисления определяется буквой, указанной после константы (В – 2-, О – 8-, D (или ничего) – 10-, Н – 16-ричная система счисления). Константа всегда должна начинаться с цифры. Символьная константа – это символ, заключенный в кавычки. Строковые константы также заключаются в кавычки. Примеры констант: 10001111В, 23О, 45, 0АЗН, “4”, “Таблица”. ДИРЕКТИВЫ АССЕМБЛЕРА имеют формат (см. табл. 3.1): [Метка] Директива [Операнд] [;Комментарий] В таблице 3.1 приведены примеры записи директив ассемблера tasm. 27 Таблица 3.1. Примеры записи директив ассемблера tasm Директива П р и м е р з а п и с и ORG EQU DB DW PROC ENDP .CODE .DATA .STACK .MODEL END ALFA K X BUF TABL TUR TUR .STACK .MODEL ORG EQU DB DW DW DB PROC ENDP 100H tiny END 100H 13H 60H 160H 8 DUP(?) ‘Диск’ ;Программа начинается с адреса 100H ;Константе с именем ALFA ;присвоено значение13H ;Для переменной с именем K ;резервируется ячейка (байт) памяти, ;в которую заносится 60H ;Для переменной с именем X ;резервируются 2 ячейки (слово) ;памяти, в которые заносятся 60H ;и 01H ;Для переменной BUF резервируется ;8 слов памяти ;Для переменной TABL ;резервируются ячейки памяти, в ;которые заносится последователь- ность ASCII-символов «Диск» ;Начало ;и конец процедуры с именем TUR ;Упрощенные сегментные директивы ;сегмента кодов, ;сегмента данных, ;сегмента стека размером 100H байт ;Модель памяти размером 64K байт ;Конец текста программы 3.3. Примеры программ на языке ассемблера МП Х86 для генерирования исполняемых модулей типа .СОМ Далее приведены примеры программна языке ассемблера микропро- цессора Х86 для генерированияна их основе исполняемых модулей с рас- ширением .СОМ. В приведенных программах директива .MODEL tiny задает модель памяти как один сегмент размером 64 Кбайт. Для задания сегмента кодов используется упрощенная сегментная директива .CODE. При генерации исполняемого модуля типа .СОМ все данные в памяти задаются в кодовом сегменте. Для указания начального адреса данных используется директива ORG. Так, директива ORG 500h размещает данные с адреса 500h. Операн- ды-байты или слова задаются после ORG с помощью директив DB или DW. Директива END указывает на конец программы. 28 Пример 3.1 ;Программа вычисления выражения M=K+N–R +120 ;для исполняемого модуля типа .COM. ;Операнды-слова k, r, m размещены в памяти с адреса 500h ;n – в регистре DX .MODEL .CODE tiny ;Программа и данные размещены ;в сегменте кодов размером 64 Kбайт ;Начало кодового сегмента ;Размещение данных с адреса 500h k r m org dw dw dw 500h +60h -10h 0 ;Команды программы с адреса 100h org begin: sub add add mov mov int END 100h dx,r dx,k dx,120h m,dx ah,4ch 21h begin ;Метка начала программы ;Вычисление ;выражения ;m=(n-r)+k+120 ;Загрузить результат m в память ;Функция DOS выхода ;из программы ;Конец прогаммы Пример 3.2 ;Программа вычисления выражения M=K+N–R+120 для случая ;базовой адресации данных, когда K, R, N, M размещены в памяти ;с адреса 500h .MODEL .CODE tiny ;Программа и данные размещены в ;сегменте кодов размером 64 Kбайт ;Начало кодового сегмента ;Размещение данных с адреса 500h k r n m org dw dw dw dw 500h +60h -10h +30h 0 ;Команды программы с адреса 100h org begin: mov 100h bx,offset k ;Метка начала программы ;Загрузить в BX адрес операнда k 29 mov sub add add mov mov int END ax,[bx] ax,[bx+2] ax,[bx+4] ax,120h [bx+6],ax ah,4ch 21h begin ;Загрузить в AX операнд k ;Получить в AX разность k–r ;AX ← AX + n ;AX ← AX + 120h ;Загрузить результат m в память ;Функция DOS выхода ;из программы ;Конец программы 3.4 Ассемблер tasm. Трансляция исходного модуля Ассемблер tasm – системная программа ПЭВМ, осуществляющая пре- образование исходной программы на языке ассемблера МП86 в объектную программу. Ассемблер вызывается командой tasm [опции] <имя файла>.asm, , ↵ Если в команде будет указана одна запятая, то файл листинга не фор- мируется. Перечень опций может быть вызван командой tasm ↵ Отметим наибо- лее используемые опции: /zi – включает в объектный модуль информацию для отладки, /n – подавляет вывод таблицы символов в листинге. При выполнении работ вы изучите назначение используемых опций. 3.5. Порядок выполнения работы 1. Разработайте на языке ассемблера МП i8086 программу для вычис- ления заданного выражения (табл. 1.3) для случая прямой адресации дан- ных (см. пример 3.1). Разработанную на языке ассемблера программу введите в машину и выполните. Порядок ввода программы, создания исполняемого модуля и его выполнения (отладки) с помощью системных средств ПЭВМ типа IBM PC приведен ниже. Создание__исходного_файла_программы'>Создание исходного файла программы 2. Создайте в редакторе системы NORTON COMMANDER исходный файл программы на языке ассемблера (см. пп. 2-7 работы 1). Не забудьте имени файла дать расширение ASM, например PETROV. ASM. Ассемблирование 3. Командой Ctrl-O уберите панели NC с экрана. 4. С помощью команды tasm <имя файла>.аsm, , ↵ запустите ассемблер tasm. Сформированные в результате ассемблирования объектный модуль программы и ее листинг записываются на диск соответственно в виде 30 файлов с расширением OBJ и LST. В конце трансляции выдаются сообще- ния о возможных ошибках в исходной программе или обихотсутствии. Только при отсутствии ошибок сформированный объектный модуль может быть использован далее для создания редактором связи (компоновщиком) TLINK исполняемого модуля. При наличии ошибок необходимо осуще- ствить просмотр листинга программы. 5. Командой Ctrl-O выведите панели NC на экран. 6. Выделите в панели NC файл с расширением LST и нажмите Alt-F3 (или F4). На экране изобразится листинг программы с сообщениями об ошибках. С помощью клавиш перемещения курсора просмотрите весь ли- стинг и зафиксируйте в программе ошибки и их тип. 7. Нажав F10, выйдите из режима просмотра. 8. Для исправления ошибок в исходной программе перейдите в режим редактирования п. 2. Затем проведите ассемблирование скорректирован- ной программы, для чего снова выполните пп. 3-5 (командную строку tasm <имя файла>.asm, , ↵ можно восстановить командой Ctrl-E). Создание исполняемого модуля 9. Вызовите компоновщик TLINK, для чего введите команду tlink /t/x <имя файла>.obj ↵ С помощью опции t задано компоновщику сформировать .СОМ-файл, а х – не генерировать .МАР-файл исполняемой программы. После выполнения tlink будет создан исполняемый модуль типа .СОМ, который может быть использован далее для его выполнения (отладки). Выполнение и отладка программы 10. С помощью команды td <имя файла>.соm ↵ запустите отладчик TD для работы с исполняемым модулем исходной программы. Порядок отладки программы с помощью окна CPU приведен в работе 1. 11. Удалите все ненужные файлы программы, кроме файла с расшире- нием .asm. Удаление выделенного файла производится в NC нажатием клавиши F8, а затем ↵ 12. Разработайте программу вычисления заданного выражения для случая индексной адресации данных (четные варианты) или косвенной ад- ресации (нечетные варианты заданий). Пример программы для режима ба- зовой адресации приведен в п. 3.3. 13. По аналогии с пп. 2-11 введите в ЭВМ разработанную программу для заданного режима адресации и проверьте правильность ее выполнения. Чтобы ускорить процесс разработки исходного файла программы, це- лесообразно за его основу взять файл предыдущей программы, который хранится на диске с расширением asm. Для этого выделите в панели имя этого файла и нажмите F4 – вы войдете в редактор с этим файлом, напри- 31 мер PROGR. Затем с помощью команд редактора удалите в сегменте ко- манд ненужные строки и введите команды программы. 3.6. Содержание отчета 1. Программы вычисления заданного выражения для различных ре- жимов адресации. 2. Исходные данные и результаты вычислений. 3. Трассы программ. Лабораторная работа 4 СОСТАВ СИСТЕМНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ПЭВМ PC XT/AT ДЛЯ РАЗРАБОТКИ И ОТЛАДКИ ПРИКЛАДНЫХ ПРОГРАММ МИКРОСИСТЕМ НА БАЗЕ МП Х86 4.1. Цель работы Целью работы являются изучение состава системного программного обеспечения ПЭВМ для разработки и отладки 16-битных программ на язы- ке ассемблера МП Х86 и приобретение навыков работы по созданию при- кладных программ. 4.2. Состав системного программного обеспечения ПЭВМ для разработки программ на языке ассемблера МП Х86 Персональные компьютеры с системой команд МП X86 (К1810ВМ86, INTEL 8086, 80286, 80386, 80486, Pentium) являются эффективным сред- ством автоматизации процесса разработки и отладки прикладных про- грамм микросистем, построенных на основе МП86. Реализация этапов раз- работки и отладки прикладных программ требует наличия на магнитном диске ПЭВМ специальных программ, образующих системное программное обеспечение (СПО). В данной работе рассматривается порядок работы с этими программами при создании прикладных программ (рис. 4.1). Отладчик td tlink Редактор связей Ассемб- лер tasm Редак- тор .exe .obj .asm Исх. модуль на ASM .lst Испр. синт. ошибок .obj .obj Объектные модули Исправление логич. ошибок Исполняемый модуль Рис. 4.1. Этапы разработки и отладки программ на языке ассемблера 32 В состав программного обеспечения для разработки программ на язы- ке ассемблера МП Х86 входят следующие системные программы. 1. Турбоассемблер TASM Ассемблер преобразует исходную программу, еще ее называют ис- ходным модулем типа .ASM, в переместимый объектный модуль типа OBJ. Объектный модуль наряду с кодами команд содержит служебную инфор- мацию, необходимую для формирования исполняемого модуля. 2. Редактор связей (компоновщик) TLINK Объединяет созданные ассемблером объектные модули в единый ис- полняемый модуль типа .EXE для размещения его в основной памяти ПЭВМ для исполнения. Редактор связей запускается командой tlink [опции] <объектные файлы> ↵ Отметим наиболее употребляемые опции: /x – не создавать .MAP-файл с картой исполняемой программы; /v – включить символьную информацию для отладчика; /t – создать исполняемый .COM-файл. 3. Отладчик TD Управляет процессом отладки программ и является инструментом для поиска ошибок в выполняемой программе. 4.3. Пример программы на языке ассемблера МП х86 для генерирования исполняемого модуля типа .EXE В примере 4.1 приведен текст программы выдачи сообщения на экран. Исходный модуль представляет собой последовательность операто- ров (или предложений) языка ассемблера. Программа оформлена в виде процедуры PROC с именем OUR_PROG. Директива .MODEL small задает модель памяти, при которой про- грамма и данные размещаются в отдельных сегментах. Псевдооператоры .STACK, .DATA и .CODE делят программу на сегменты стека, данных и команд. В сегменте данных оператор TEXT1 определяет текст сообщения, выводимого на экран, а SIMB – последовательность символов *, выделя- ющую этот текст. Сегмент команд содержит 2 группы команд: – первая группа устанавливает DS на сегмент данных, – вторая группа – это команды программы вывода сообщений на экран. В подпрограмме VDISP используется команда прерывания DOS INT 21H, с помощью которой производится обращение к функции для ра- боты с дисплеем. Адрес типа функции задается значением регистра AH=9. Знак $ в тексте определяет конец изображаемой строки, начальный адрес которой задается в регистре DX командой MOV DX,OFFSET TEXT1. Коды 33 0Dh и 0Ah обеспечивают перевод маркера в начало следующей строки (0D – возврат каретки, 0A – переход на следующую строку). ;Пример 4.1. Программа вывода текста на экран .MODEL small ;Ближние модели программы и данных .STACK 64 ;Размер стека 64 байта .DATA ;Начало сегмента данных text1 db ’Иванова И.А.’,0dh,0ah ;Тексты db ’Петрова Н.В.’,0dh,0ah,’$’ ;сооб- simb db ’*****************’, 0dh,0ah,’$’ ;щений .CODE ;Начало кодового сегмента our_prog proc ;Процедура с именем OUR_PROG mov ax,@data ;Указывает DS на mov ds,ax ;сегмент данных ;Команды программы mov dx,offset text1 ;Адрес строки TEXT1 в DX call vdisp ;Вызов ПП вывода строки mov dx,offset simb ;Адрес строки SIMB в DX call vdisp ;Вызов ПП вывода строки mov ah,4ch ;Функция DOS int 21h ;выхода из программы our_prog endp ;Конец процедуры ;Подпрограмма вывода строки на экран vdisp: push ax mov ah,9 ;Функция DOS int 21h ;Вывода строки на экран pop ax ret END our_prog ;Конец программы 4.4. Порядок выполнения работы 1. Изучите состав базового программного обеспечения. 2. Разработайте на языке ассемблера МП Х86 программу вычисления заданного в работе 2 варианта выражения. Создание исходного файла программы 3. Для создания нового файла, находясь в оболочке Norton Commander, с помощью клавиш Shift-F4 вызовите режим создания нового текстового файла, введите имя создаваемого файла: <имя файла>.asm и нажмите ↵ . Если исходный файл уже существует, то вход в режим его ре- дактирования осуществляется клавишей F4. 34 4. Редактирование. С помощью команд текстового редактора введите программу на языке ассемблера, приведенную в примере 4.1. Специально допустите 2-3 ошибки. Далее при трансляции программы ассемблер обна- ружит ошибки, и вы их исправите. Создание объектного и исполняемого модулей 5. Для создания исполняемого модуля типа .EXE следует вызвать и исполнить 2 команды: 5.1. Наберите в командной строке команду tasm /zi <имя файла>.asm,, ↵ В случае отсутствия ошибок ассемблером tasm будет создан объект- ный модуль .OBJ. Если при трансляции ассемблер обнаружит ошибку, то на экран будет выведено сообщение об ошибке и номер строки, в которой она допущена. 5.2. При наличии .OBJ-модуля, наберите команду tlink /v/x <имя файла>.obj ↵ При этом программой tlink будет сгенерирован исполняемый .EXE- модуль с символьной информацией для отладчика. 6. Исправьте с помощью текстового редактора ошибки и повторите пп. 3-5, пока система не выдаст сообщение, что в программе нет ошибок. Выполнение и отладка программы 7. Для выполнения программы в отладчике вызовите команду: td <имя файла>.exe ↵ После недолгой загрузки система перейдет в отладчик TD. На экране изобразятся 2 окна отладки: окно модуля Module с текстом программы и ниже – окно просмотра Watches. Далее приводится порядок отладки про- граммы с помощью этих окон. 8. В окне модуля выделите с помощью маркера регистр AX, а затем нажмите Ctrl-W. При этом в окне просмотра изобразится значение пере- менной AX. Аналогичным образом просмотрите переменную DX. 9. Значение переменной можно проверить, затем модифицировать с помощью окна инспекции Inspecting. Сделайте это для переменной AX. Для этого маркером выделите в окне модуля регистр AX, а затем нажмите Ctrl-I. При этом в окне инспекции изобразится значение AX. Введите с клавиатуры новое значение AX, например 22. Нажав клавишу Esc, уберите окно проверки. Аналогичным образом можно просматривать и изменять переменные в памяти. 10. Порядок выполнения и перезагрузки программы, установки и от- мены точек останова в окне модуля такой же, как и в окне CPU (см. работу 1). Последовательно нажимая F7, выполните программу по шагам. Следите при этом в окне просмотра за изменением переменных. После вы- полнения команд INT 21H и программы в целом с помощью клавиши Alt-F5 откройте (а затем закройте) экран пользователя, на котором изобра- 35 жаются видимые строки сообщений. Если при отладке выявлены логиче- ские ошибки, требующие изменения в программе, то с помощью команды Alt-X необходимо выйти из отладчика в редактор, внести изменения в ис- ходную программу, затем создать исполняемый модуль и снова выполнить программу с помощью отладчика. 11. При необходимости с помощью команд F10; View; Dump ↵ и F10; View; Registers ↵ можно вывести окна памяти и регистров. Это особенно важно для отладки программ с большим числом переменных, хранящихся в памяти и регистрах. Клавишей Ctrl-F2 перезагрузите программу, а затем вызовите окна памяти и регистров. Не забудьте сместить эти окна на край экрана. Необ- ходимо отметить, что начальный адрес в сегменте данных окна Dump устанавливают только после выполнения команд mov ax,@data и mov ds,ax. Выполните программу по шагам, нажимая последовательно F8. 12. С помощь команды F10; View; CPU ↵ можно вызвать окно CPU, содержащее также и символьную информацию для отладки, и произвести выполнение программы в этом окне (см. работу 1). Сделайте это. Чтобы при отладке вам не мешали другие окна, увеличьте размер окна CPU или удалите ненужные окна. 13. Нажимая Alt-X, выйдите из отладчика. 14. Отлаженную программу можно запустить с помощью команды DOS. Для этого необходимо ввести команду <имя файла>.exe ↵ , в которой указываются имя выполняемой команды и ее тип. 15. Изучив этапы создания и отладки прикладных программ, по анало- гии с пп. 3-13 введите разработанную вами программу и выполните ее. |