Главная страница
Навигация по странице:

  • Функция 09H прерывания 21H для вывода на экран

  • Функция 01H прерывания 21H для ввода с клавиатуры

  • Инструкция сравнения значений регистров CMP

  • Результат выполнения команды CMP Значения флагов: CF SF ZF

  • 5.2. Практическая часть

  • 5.3. Форма отчета

  • Цель

  • 6.1. Краткая теоретическая часть

  • 6.2. Практическая часть

  • 6.3. Форма отчета

  • ЛАБОРАТОРНЫЕ РАБОТЫ ПО АРХИТЕКТУРЕ КОМПЬЮТЕРА Учебное пособие Корректор

  • Лабораторные работы по архитектуре компьютеров. Лабораторные-работы-по-архитектуре-компьютера. Лабораторные работы по архитектуре компьютера


    Скачать 0.74 Mb.
    НазваниеЛабораторные работы по архитектуре компьютера
    АнкорЛабораторные работы по архитектуре компьютеров
    Дата23.08.2022
    Размер0.74 Mb.
    Формат файлаpdf
    Имя файлаЛабораторные-работы-по-архитектуре-компьютера.pdf
    ТипУчебное пособие
    #651190
    страница5 из 5
    1   2   3   4   5
    Программное прерывание. Программное прерывание – син- хронное прерывание, которое может осуществить программа с помощью специальной инструкции.
    В процессорах архитектуры x86 для явного вызова син- хронного прерывания имеется инструкция Int, аргументом которой является номер прерывания (от 0 до 255). В IBM PC- совместимых компьютерах обработку некоторых прерываний осуществляют подпрограммы BIOS, хранящиеся в ПЗУ, и это служит интерфейсом для доступа к сервису, предоставляе- мому BIOS. Также обслуживание прерываний могут взять на себя BIOS карт расширений (например, сетевых или видео- карт), операционная система и даже обычные (прикладные) программы, которые постоянно находятся в памяти во время работы других программ (так называемые резидентные про- граммы). В отличие от реального режима в защищенном ре- жиме x86-процессоров обычные программы не могут обслу- живать прерывания, эта функция доступна только системному коду (операционной системе).
    MS-DOS использует для взаимодействия со своими мо- дулями и прикладными программами прерывания с номе- рами от 20h до 3Fh (числа даны в шестнадцатеричной си- стеме счисления, как это принято при программировании на языке ассемблера x86). Например, доступ к основному множеству функций MS-DOS осуществляется исполнением инструкции Int 21h (при этом номер функции и ее аргумен-

    51
    ты передаются в регистрах). Это распределение номеров прерываний не закреплено аппаратно, и другие программы могут устанавливать свои обработчики прерываний вместо или поверх уже имеющихся обработчиков, установленных
    MS-DOS или другими программами, что, как правило, ис- пользуется для изменения функциональности или расшире- ния списка системных функций. Также этой возможностью пользуются вирусы.
    Функция 09H прерывания 21H для вывода на экран требу- ет определения строки, подлежащей выводу, в области данных и завершения этой строки символом доллара ($) или 24H, кото- рый функция воспринимает как требование завершить вывод.
    Недостаток этого метода в том, что вы не сможете вывести на экран этот символ.
    Пример использования функции:
    mov ah, 09h ;Запросить вывод на экран mov dx, 1234h ;Загрузить адрес, по которому находится строка int 21h ;Вызвать обработчик прерывания
    Функция 01H прерывания 21H для ввода с клавиатуры не требует определения каких-либо параметров. На выходе функ- ции в регистр AL заносится ASCII код введенного символа.
    Пример использования функции:
    mov ah, 01h
    ;Запросить ввод с клавиатуры int 21h
    ;Вызвать обработчик прерывания
    Инструкция сравнения значений регистров CMP
    Инструкция сравнивает в двоичном виде содержимое двух полей данных. CMP вычитает значение операнда 2 из операн- да 1 и устанавливает/сбрасывает флаги в зависимости от ре- зультата, но не сохраняет сам результат. Оба операнда должны

    52
    быть байтами, словами или двойными словами. CMP можно применять для сравнения регистров, элементов данных в па- мяти или непосредственных значений с регистром, или срав- нений регистров, или непосредственных значений с памятью.
    Результаты сравнения могут быть следующими:
    Таблица 5.1
    Результат выполнения команды CMP
    Значения флагов:
    CF
    SF
    ZF
    операнд 1 < операнд 2 1
    1 0
    операнд 1 = операнд 2 0
    0 1
    операнд 1 > операнд 2 0
    0 0
    Инструкции условного перехода JG и JL
    Инструкции используют значения флагов CF, SF и ZF, ко- торые изменяются инструкцией CMP. Таким образом, можно сначала сравнить два числа, а затем сделать условный переход в другую точку программы по результатам сравнения. Если значение первого операнда инструкции CMP меньше второго, то инструкция JL ds:адрес приведет к переходу по этому адре- су, а если значение первого операнда инструкции CMP больше второго, то к переходу приведет инструкция JG ds:адрес.
    Пример:
    mov bx,0001h
    ;заносим в bx значение 1
    mov cx,0002h
    ;заносим в cx значение 2
    cmp cx,bx
    ;сравниваем значения из cx и dx jg ds:150h
    ;если значение в cx больше, чем значе- ние в bx, то переходим к адресу ds:150h, иначе переходим к следующей инструкции jl ds:180h
    ;если значение в cx меньше, чем значе- ние в bx, то переходим к адресу ds:150h
    5.2. Практическая часть
    Задание. В отладчике DEBUG написать программу, позво-

    53
    ляющую вводить с клавиатуры одноразрядные числа, сравни- вать их и выводить наибольшее из них. Сохранить программу на диск.
    5.3. Форма отчета
    Записать команды отладчика DEBUG и код программы в порядке выполнения.

    54
    РАБОТА 6.
    ИЗУЧЕНИЕ СИСТЕМЫ КОМАНД
    АССЕМБЛЕРА
    Цель: изучить основные виды команд ассемблера и на- учиться применять их при написании простых приложений с помощью отладчика DEBUG.
    Технические средства: персональный компьютер, осна- щенный операционной системой DOS или WINDOWS, отлад- чик двоичного кода Debug.
    6.1. Краткая теоретическая часть
    Команды языка ассемблера один к одному соответству- ют командам процессора, фактически они представляют со- бой более удобную для человека символьную форму записи
    (мнемокод) команд и их аргументов. При этом одной команде языка ассемблера может соответствовать несколько вариантов команд процессора.
    Кроме того, язык ассемблера позволяет использовать сим- волические метки вместо адресов ячеек памяти, которые при ассемблировании заменяются на автоматически рассчитывае- мые абсолютные или относительные адреса, а также так назы- ваемые директивы (команды, не переводящиеся в процессор- ные инструкции, а выполняемые самим ассемблером).
    Директивы ассемблера позволяют, в частности, включать блоки данных, задать ассемблирование фрагмента программы по условию, задать значения меток, использовать макроопре- деления с параметрами.
    Каждая модель (или семейство) процессоров имеет свой на- бор команд и соответствующий ему язык ассемблера. Наиболее популярные синтаксисы – Intel-синтаксис и AT&T-синтаксис.
    Существуют компьютеры, реализующие в качестве машин- ного язык программирования высокого уровня (Forth, Lisp,
    Эль-76), фактически в них он является языком ассемблера.
    Одними из самых важных и используемых команд ассем- блера являются:

    55
    mov приемник, источник – команда пересылки данных.
    Копирует содержимое источника в приемник, источник не изме- няется. Например: mov ax, 1 присваивает регистру ax значение
    1. Команда mov ax, word ptr eax – записывает в ax слово, лежа- щее по адресу eax. Байт по адресу eax записывается в младшую половину ax (в al), а байт по адресу eax+1 записывается в ah (по закону Intel). Но не обязательно, записывая команды, исполь- зовать такую сложную адресацию. Например, если у нас есть переменая “y” типа longint, то при помощи следующей команды ей можно присвоить значение 10000: mov y, 10000. Можно так- же записать mov dword ptr y, 10000, показывая, что “y” – 32-раз- рядная переменная. Если записать mov dword ptr [y+10], 5000, то, начиная с адреса [y+10], в память будет записано 32-битное число 5000. Можете не бояться писать подобные вещи (прибав- ление константы к адресу), так как все эти выражения вычисля- ются на стадии компиляции и на скорость программы не влия- ют. Пусть, например, “y” находится по адресу 34567. Если мы запишем [y+10], то компилятор просто поймет это как [32577], так как он знает адрес переменной “y”. Операнды команды mov могут быть как регистрами, так и переменными, но одновремен- но оба операнда не могут быть переменными;
    xchg операнд1, операнд2 – обменивает операнды. Напри- мер, если al=45, ah=37, то после выполнения xchg al, ah будет al=37, ah=45;
    add приемник, источник – выполняет сложение приемни- ка и источника, результат заносится в приемник. Источник не изменяется. Но зато меняются флаги:
    adc приемник, источник – выполняет сложение приемни- ка, источника и флага CF. Обычно эта команда используется для сложения чисел повышенной точности.
    Пусть, например, у нас имеются два 64-битных числа: пер- вое в edx:eax (младшее двойное слово в eax, старшее двойное слово в edx), второе – в ebx:ecx. Тогда после выполнения ко- манд: add eax, ecx; adc edx, ebx; в паре регистров edx:eax будет находиться сумма этих 64-битных чисел. Когда были 16-раз- рядные процессоры, подобным образом складывали 32-бит-

    56
    ные числа (считая, что каждое состоит из двух 16-битных).
    Сейчас это не имеет смысла. Более того, процессору все рав- но, какие числа складывать – 16-разрядные или 32-разрядные.
    Скорость одинаковая. Поэтому сложение 32-битных чисел на- прямую быстрее, чем с разбиением и сложением 16-битных (в два раза). Но иногда это может понадобиться (например, Тур- бо-Паскаль не понимает 32-битные регистры). Этим и объяс- няется, что 16-битные программы медленнее, чем 32-битные;
    sub приемник, источник – вычитает источник из прием- ника, результат заносит в приемник;
    sbb приемник, источник – вычитает из приемника значе- ние источника, затем вычитает значение CF. Ее можно исполь- зовать для вычитания 64-битных слов;
    inc приемник – то же самое, что и add приемник, 1;
    c приемник – то же самое, что и sub приемник, 1;
    p операнд1, операнд2 – по сути, вычитание операнда2 из операнда1, только операнды не меняются (команда меняет только флаги). С помощью этой команды обычно выполняют- ся условные переходы (самый очевидный способ);
    d|or приемник, источник – выполняет логическое по- битовое И|ИЛИ над приемником и источником и помещает результат в приемник. Часто используется для выборочного обнуления|объединичивания отдельных битов. Например, ко- манда and al, 00001111b обнулит старшие четыре бита реги- стра al, а младшие не изменит;
    r приемник, источник – логическое исключающее ИЛИ.
    Выполняет побитное логическое исключающее ИЛИ над при- емником и источником, результат заносится в приемник. Часто используется для обнуления регистров. Например, xor ax, ax обнуляет регистр ax и делает это быстрее, чем mov ax, 0. Этой командой следует пользоваться для обнуления регистров. Мо- жете не бояться экзотичности этой команды. Она будет эффек- тивно работать на любом Intel-совместимом компьютере. Эта команда официально поддерживается Intel как команда обну- ления регистра;

    57
    st операнд1, операнд2 – по сути, выполняет команду and над операндами, но операнды не меняет, а меняет только флаги аналогично and;
    t приемник – каждый бит приемника, равный нулю, уста- навливается в 1, и каждый бит, равный 1, устанавливается в 0.
    Флаги не меняются.
    6.2. Практическая часть
    Задание. Написать программу, использующую все виды ко- манд процессора:
    1) пересылка данных;
    2) арифметические операции;
    3) логические операции;
    4) обработка блоков данных;
    5) команды передачи управления;
    6) команды условного перехода;
    7) управление состоянием процессора.
    6.3. Форма отчета
    Письменное представление кода программы, комментарий к каждой команде ассемблера и отладчика DEBUG.

    58
    Литература
    1. Абель, П. Ассемблер. Язык и программирование для IBM /
    П. Абель. – 5-е изд. – СПб. : КОРОНА-Век, 2009. – 734 с.
    2. Бабич, Н. П. Компьютерная схемотехника. Методы по- строения и проектирования : учебное пособие / Н. П. Бабич. –
    Киев : МК-Прогресс, 2004. – 576 с.
    3. Богданов, Д. С. Архитектура компьютера / Д. С. Богда- нов. – URL : http://asm-pc.ru
    4. Гук, М. Ю. Аппаратные средства IBM PC : энциклопедия /
    М. Ю. Гук. – 3-е изд. – СПб. : Питер, 2006. – 1072 с.
    5. Докторов, А. Е. Архитектура ЭВМ. Методические указа- ния к лабораторным работам / А. Е. Докторов, Е. А. Докторо- ва. – УлГТУ, 2008. – 32 с.
    6. Коваль, А. С. Архитектура ЭВМ и систем : учебно-мето- дическое пособие для вузов / А. С. Коваль, А. В. Сычев. – Во- ронеж, 2007. – 87 с.
    7. Лабораторный практикум как разновидность практиче- ского занятия. – URL : http://www.profile-edu.ru/laboratornyj- praktikum-kak-raznovidnost-prakticheskogo-zanyatiya-page-1.
    html
    8. Магда, Ю. С. Ассемблер для процессоров Intel Pentium /
    Ю. С. Магда. – СПб. : Питер, 2006. – 410 с.
    9. Манохин, Ю. П. Архитектура ЭВМ и систем : учебно- методический комплекс / Ю. П. Манохин, Ю. В. Чекмарев. –
    М. : РГТУ, 2010. – 45 с.
    10. Марек, Р. Ассемблер на примерах. Базовый курс. – СПб. :
    Наука и техника, 2005. – 240 с.
    11. Описание простейших команд ассемблера. – URL : http://
    students.uni-vologda.ac.ru/pages/it10/2.php
    12. Поворознюк, А. И. Архитектура компьютеров. Архи- тектура микропроцессорного ядра и системных устройств : учебное пособие / А. И. Поворознюк. – Ч. 1. – Харьков : Тор- надо, 2004. – 355 с.

    59 13. Программирование на ассемблере под различные опе- рационные системы. – URL : http://wasm.ru
    14. Руководство по самостоятельной сборке компьютера в картинках. – URL : http://overcomp.ru/sborka.html
    15. Структура программы на ассемблере. – URL : http://
    cs.mipt.ru/docs/comp/ rus/programming/languages/asm/yurov/guide/
    text/structur.htm
    16. Таненбаум, Э. Архитектура компьютера / Э. Таненбаум. –
    5-е изд. – СПб. : Питер, 2007. – 844 с.
    17. Толстобров, А. П. Архитектура ЭВМ : учебное пособие /
    А. П. Толстобров. – Воронеж, 2004. – 95 с.
    18. Хамахер, К. Организация ЭВМ / К. Хамахер, З. Вране- шич, С. Заки. – 5-е изд. – СПб. : Питер, 2003. – 848 с.
    19. Юров, В. И. Ассемблер : учебник для вузов / В. И. Юров. –
    СПб. : Питер, 2003. – 637 с.

    Учебное издание
    СМИРНОВА Марина Александровна,
    УТКИН Евгений Дмитриевич,
    ФЕДОРОВ Олег Анатольевич,
    БОГДАНОВ Дмитрий Сергеевич,
    НЕКРАСОВ Максим Александрович
    ЛАБОРАТОРНЫЕ РАБОТЫ
    ПО АРХИТЕКТУРЕ КОМПЬЮТЕРА
    Учебное пособие
    Корректор В. А. Яковлева.
    Верстка Г. С. Лосева.
    Подписано в печать 21.03.2016. Бумага «Mondi».
    Гарнитура «Times New Roman». Формат 60х84 1

    16
    Тираж 500 (1-й завод 1–100 экз.). Объем 3,75 п. л. Заказ № 654-14.
    Сахалинский государственный университет
    693008, Южно-Сахалинск, ул. Ленина, 290, каб. 32.
    Тел. (4242) 45-23-16, факс (4242) 45-23-17.
    E-mail: polygraph@sakhgu.ru,
    izdatelstvo@sakhgu.ru
    1   2   3   4   5


    написать администратору сайта