Кыргызский Государственный НациональныйУниверситет
ИнститутИнтеграции Международных Образовательных программ
Кыргызско-АмериканскийФакультет Компьютерных Информационных Систем и ИНТЕРНЕТ (КАФ-ИНТЕРНЕТ)
Курсовой проект
(Организация ЭВМ)
тема
Разработка программы на Ассемблере.
Выполнили: студенты группы КИС 2 – 98
Вершинин АА Исманов АА
Проверил: преподаватель Кочетов ОП
Бишкек 2001
СОДЕРЖАНИЕ
ВВЕДЕНИЕ…………………………………………………………………3
АССЕМБЛЕР. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММЫ………………...4
ОБЩИЙ РАЗДЕЛ…………………………………………………………21
1.1. Технико-математическоеописание задачи……….………………….21
1.2. Требованияк функциональным характеристикам…………………..23
1.3. Требованияк техническим и программным средствам………….… 25
1.3.1. Обоснованиявыбора языка программирования……………………. 26
СПЕЦИАЛЬНЫЙ РАЗДЕЛ……………………………………………………………….... 28
2.1. Постановказадачи…………………………………………………….. 28
2.2. Описание структурыпрограммы……………………………….…..… 30
2.3. Описание алгоритмарешения задачи………………………….……….32
2.4. Отладка итестирование……………………………………….………. 34
2.5. Инструкция кпользователю………………………………….……….. 35
2.6. Заключение орезультатах проектируемой задачи………….……….. 36
ПРИЛОЖЕНИЕ 1 (Системысчисления)………………………………….. 37
ПРИЛОЖЕНИЕ 2 (Структурнаясхема микропроцессора)..…………….. 44
ПРИЛОЖЕНИЕ 3 (Основныеположения алгебры логики)…….……….. 59
СПИСОК ЛИТЕРАТУРЫ…………………………………………….…. 30
ВВЕДЕНИЕ
В связи с появлениемперсональных компьютеров мгновенно вырос рынок аппаратных средств, как грибыросло число производителей, предлагающих свою продукцию. При этом, покупая тоили иное аппаратное средство, производитель не может (а иногда и не хочет)дать 100% гарантию, что оно исправно.
В связи с этим такжестремительно развивался и рынок программных тестирующих средств. На рынкесуществует огромное количество отличных диагностических программ, написанныхбольшими корпорациями: такими как Symantec inc., APS (Advanced Personal Systems), Microsoft и т.д., но всесуществующие диагностирующие программы написаны на языках высокого уровня, азначит не достаточно быстры и надёжны.
Автор проекта не берётсяконкурировать с огромными гигантами по количеству выполняемых этими программамитестов в силу того, что это бессмысленно. Была предпринята попытка написатьболее надежную, быструю диагностическую программу с использованиеммашинно-ориентированного языка программирования – Ассемблер.
АССЕМБЛЕР. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММЫ.
Язык программированиянаиболее полно учитывающий особенности "родного" микропроцессора исодержащий мнемонические обозначения машинных команд называется Ассемблером. Программа, написанная на Ассемблереназывается исходной программой. Далее остановимся на версии, называемой ТурбоАссемблер.
Разработка программы наАссемблере состоит из следующих этапов:
Текст программы на Ассемблересодержит следующие операции:
Действия обусловленные операциямиперечисленными в пп.б,в,г выполняются на этапе трансляции, т.е. являютсякомандами Ассемблеру. Операции, называемые командами или инструкциямивыполняются во время выполнения программы, т.е. являются командамимикропроцессору.
Инструкция записывается наотдельной строке и включает до четырех полей, необязательные из которыхвыделены [ ]:
[метка:] | мнемоника_команды | [операнд(ы)] | [;комментарий] |
Метка или символическийадрес содержит до 31символа из букв цифр и знаков ? @ . _ $. Причем цифра не должна стоять первой,а точка, если есть должна быть первой.
Мнемоника - сокращенноеобозначение кода операции (КОП) команды, например мнемоника ADD обозначает сложение (addition).
Операндами могут быть явно илинеявно задаваемые двоичные наборы, над которыми производятся операции.Операндыприводятся в одной из четырех систем счисления и должны оканчиваться символомb(B), o(O), d(D), h(H) для 2, 8, 10 или 16-ной СС. К шестнадцатиричному числудобавляется слева ноль, если оно начинается с буквы.
Система команд может бытьклассифицирована по трем основным признакам -
Для МП 1810ВМ86 (8086) командазанимает от одного до шести байтов. Первым байтом команды всегда является кодоперации, например код команды INT XXh равен CD(HEX).
По функциональному признаку инструкцииможно разбить на пять больших групп:
Существует пять основных способовадресации:
Большинство остальных способовадресации являются комбинациями или видоизменениями перечисленнных.
В первом случае операнд(ы) располагаютсяв регистрах микропроцессора (МП), например по команде MOV AX,CXпересылается содержимое CX в AX.
При непосредственнойадресации операнд располагается в памяти непосредственно за КОП,инструкция MOV AL,0f5h записывает число 245(f5) в регистр AL.
В случае прямой адресацииза КОП следует не сам операнд, а адрес ячейки памяти или внешнего устройства,например команда IN AL,40h вводит байт данных из внешнего устройства с адресом40h.
Косвенная адресация отличается от регистровой тем, что врегистре хранится адрес операнда, т.е. по команде MOV AL,[BX] в аккумулятор alбудет записано число из ячейки памяти с адресом, хранящимся в регистре BX.
Стековая адресация производится к операндам расположенным вобласти памяти, называемой стек.
1. $ -программный счетчик. Этот символ отмечает текущий адрес в текущем сегменте.Полезен при определении длины цепочек байтов или строк.
text DB 'This string has NN letters'
NN = $ - text; NN = длине строки text (количеству байтов
в этой строке). Не путать часть строки '..NN..' и константу NN!
2. @data - адресначала сегмента данных.
....
mov ax,@data
mov ds,ax;
в сегментном регистре DS теперьадрес сегмента данных.
3. ??date, ??time,??filename - эти имена во время трансляции заменяются, соответственнона текущие дату, время и имя файла в формате ASCII.
1. () - скобки,определяют порядок вычислений
2. [] - например[BX] означает содержимое ячейки памяти с адресом в регистре bx. Признак косвеннойадресации.
3. +, -, *, / -операторы сложения, вычитания, умножения и деления.
mov ax,(2 * 3 + 8 / 2) - 2; в регистр ax будет помещено число 8.
4. MOD - делениепо модулю. Даёт остаток.
5. SHL,SHR -сдвиг операнда влево, вправо.
mov si,01010101b SHR 3; в регистр SI будет загружено число 0Ah (00001010).
6. NOT -побитовая инверсия.
7. AND,OR,XOR -операции "И","ИЛИ","ИСКЛ.ИЛИ".
mov dl, (10dOR 5d) XOR 7d; (dl) будет равно 8.
8. : -переназначение сегмента.
mov dl,[es:bx]; поместить в dlбайт данных из сегмента es и отстоящий от его начала на (bx) байтов (смещение).