МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Разработка программы на Ассемблере

    Разработка программы на Ассемблере

    Кыргызский Государственный Национальный Университет

    Институт Интеграции Международных Образовательных программ

    Кыргызско-Американский Факультет Компьютерных Информационных Систем и

    ИНТЕРНЕТ (КАФ-ИНТЕРНЕТ)

    [pic]

    Курсовой проект

    (Организация ЭВМ)

    тема

    Разработка программы на Ассемблере.

    Выполнили: студенты группы КИС 2 – 98

    Вершинин АА Исманов АА

    Проверил: преподаватель Кочетов ОП

    Бишкек 2001

    СОДЕРЖАНИЕ

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

    АССЕМБЛЕР. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММЫ………………...4

    ФОРМАТ КОМАНД И ИХ КЛАССИФИКАЦИЯ ………………………….5

    НЕКОТОРЫЕ ОПЕРАТОРЫ, ПРЕДОПРЕДЕЛЁННЫЕ ИМЕНА, ДИРЕКТИВЫ И КОМАНДЫ

    АССЕМБЛЕРА 80X86(8088) ……………..7

    КОМАНДЫ ПЕРЕСЫЛКИ …………………………………………………11

    АРИФМЕТИЧЕСКИЕ КОМАНДЫ ………………………………………..12

    ЛОГИЧЕСКИЕ КОМАНДЫ И КОМАНДЫ СДВИГА …………………...14

    КОМАНДЫ УПРАВЛЕНИЯ МИКРОПРОЦЕССОРОМ …………………18

    ПРИМЕЧАНИЯ………………………………………………………………20

    ОБЩИЙ РАЗДЕЛ…………………………………………………………21

    1. Технико-математическое описание задачи……….………………….21

    2. Требования к функциональным характеристикам…………………..23

    3. Требования к техническим и программным средствам………….… 25

    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 и т.д., но все

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

    а значит не достаточно быстры и надёжны.

    Автор проекта не берётся конкурировать с огромными гигантами по

    количеству выполняемых этими программами тестов в силу того, что это

    бессмысленно. Была предпринята попытка написать более надежную, быструю

    диагностическую программу с использованием машинно-ориентированного языка

    программирования – Ассемблер.

    АССЕМБЛЕР. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММЫ.

    Язык программирования наиболее полно учитывающий особенности "родного"

    микропроцессора и содержащий мнемонические обозначения машинных команд

    называется Ассемблером. Программа, написанная на Ассемблере называется

    исходной программой. Далее остановимся на версии, называемой Турбо

    Ассемблер.

    Разработка программы на Ассемблере состоит из следующих этапов:

    . 1) Составление алгоритма в виде блок-схемы или структурного описания,

    . 2) Ввод в ЭВМ текста исходной программы PROG.ASM с помощью редактора

    текстов. Имя PROG может быть произвольным, а расширение ASM -

    обязательно,

    . 3) Перевод (трансляция или ассемблирование) исходной программы в

    машинные коды с помощью транслятора TASM.EXE. На этом этапе получается

    промежуточный продукт PROG.OBJ (объектный код). Выявленные при этом

    синтаксические и орфографические ошибки исправляются повтором пп.2 и

    3,

    . 4) Преобразование с помощью программы TLINK.EXE объектного кода

    PROG.OBJ в выполнимый код PROG.EXE или PROG.COM.

    . 5) Выполнение программы и ее отладка начиная с п.1, если встретились

    логические ошибки.

    [pic]

    Текст программы на Ассемблере содержит следующие операции:

    . а) команды или инструкции,

    . б) директивы или псевдооператоры,

    . в) операторы,

    . г) предопределенные имена.

    Действия обусловленные операциями перечисленными в пп.б,в,г выполняются на

    этапе трансляции, т.е. являются командами Ассемблеру. Операции, называемые

    командами или инструкциями выполняются во время выполнения программы, т.е.

    являются командами микропроцессору.

    ФОРМАТ КОМАНД И ИХ КЛАССИФИКАЦИЯ

    Инструкция записывается на отдельной строке и включает до четырех полей,

    необязательные из которых выделены [ ]:

    |[метка:]|мнемоника_команды |[операнд(ы)] |[;комментарий] |

    Метка или символический адрес содержит до 31 символа из букв цифр и знаков

    ? @ . _ $. Причем цифра не должна стоять первой, а точка, если есть должна

    быть первой.

    Мнемоника - сокращенное обозначение кода операции (КОП) команды, например

    мнемоника ADD обозначает сложение (addition).

    Операндами могут быть явно или неявно задаваемые двоичные наборы, над

    которыми производятся операции.Операнды приводятся в одной из четырех

    систем счисления и должны оканчиваться символом b(B), o(O), d(D), h(H) для

    2, 8, 10 или 16-ной СС. К шестнадцатиричному числу добавляется слева ноль,

    если оно начинается с буквы.

    Система команд может быть классифицирована по трем основным признакам -

    . длина команды или число занимаемых ею байтов,

    . функциональное назначение и

    . способ адресации.

    Для МП 1810ВМ86 (8086) команда занимает от одного до шести байтов. Первым

    байтом команды всегда является код операции, например код команды INT XXh

    равен CD(HEX).

    По функциональному признаку инструкции можно разбить на пять больших групп:

    . 1) команды пересылки данных,

    . 2) арифметические команды,

    . 3) логические команды,

    . 4) команды переходов и

    . 5) команды управления.

    Существует пять основных способов адресации:

    . регистровая,

    . непосредственная,

    . прямая,

    . косвенная и

    . стековая.

    Большинство остальных способов адресации являются комбинациями или

    видоизменениями перечисленнных.

    В первом случае операнд(ы) располагаются в регистрах микропроцессора (МП),

    например по команде MOV AX,CX пересылается содержимое CX в AX.

    При непосредственной адресации операнд располагается в памяти

    непосредственно за КОП, инструкция MOV AL,0f5h записывает число 245(f5) в

    регистр AL.

    В случае прямой адресации за КОП следует не сам операнд, а адрес ячейки

    памяти или внешнего устройства, например команда IN AL,40h вводит байт

    данных из внешнего устройства с адресом 40h.

    Косвенная адресация отличается от регистровой тем, что в регистре хранится

    адрес операнда, т.е. по команде MOV AL,[BX] в аккумулятор al будет записано

    число из ячейки памяти с адресом, хранящимся в регистре BX.

    Стековая адресация производится к операндам расположенным в области памяти,

    называемой стек.

    НЕКОТОРЫЕ ОПЕРАТОРЫ, ПРЕДОПРЕДЕЛЁННЫЕ ИМЕНА, ДИРЕКТИВЫ И КОМАНДЫ

    АССЕМБЛЕРА 80X86(8088)

    ПРЕДОПРЕДЕЛЕННЫЕ ИМЕНА

    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, (10d OR 5d) XOR 7d; (dl) будет равно 8.

    8. : - переназначение сегмента.

    mov dl,[es:bx]; поместить в dl байт данных из сегмента es и отстоящий от

    его начала на (bx) байтов (смещение).

    9. OFFSET - оператор получения смещения адреса относительно начала сегмента

    (то есть количества байтов от начала сегмента до идентификатора адреса).

    mov bx, OFFSET table

    ДИРЕКТИВЫ (ПСЕВДООПЕРАТОРЫ)

    1. : - определяет близкую метку (в пределах сегмента).

    jmp lbl .... ....

    lbl: ....

    2 . = - присваивает символическому имени значение выражения.

    videoram = 0B800h; присвоение videoram = 0B000h;

    3. .CODE - определяет начало кодового сегмента, то есть сегмента, где

    располагаются коды программы.

    4. .DATA - определяет начало сегмента данных.

    5. DB,DW - директивы резервирующие один или несколько байтов: DB, или одно

    или несколько слов: DW.

    ....

    .DATA

    fibs DB 1,1,2,3,5,8,13

    rus DB 'Турбо Ассемблер'

    buf DB 80 DUP(0);резервируется 80 байтов,каждый обнуляется

    int DW 65535;в двух байтах располагается число FFFFh.

    Array DW 100 DUP (0);резервируется 100 слов

    6. END - обозначает конец программы.

    ....

    .CODE

    MyPROG:....; точка входа (начало программы).

    ....; команды программы

    ....

    END MyPROG

    7. ENDM - окончание блока или макроопределения

    8. ENDP - обозначает конец подпрограммы.

    9. EQU - присваивает символическому имени или строке значение выражения.

    BlkSize EQU 512

    BufBlks EQU 4

    BufSize EQU BlkSize * BufBlks

    10. LABEL - определяет метку соответствующего типа.

    ....

    .DATA

    m_byte LABEL BYTE;метка m_byte типа BYTE позволяет теперь

    m_word DW 0;иметь доступ отдельно к каждому байту данных

    .CODE;m_word типа WORD

    ....

    mov [m_word],0204h

    add [m_byte],'0';теперь в m_word хранится код

    add [m_byte+1],'0';3234h,ASCII код '0' равен 30h

    11. LOCAL - определяет метки внутри макроопределений как локальные и в

    каждом макрорасширении вместо них ассемблер вставляет уникальные метки:

    ??XXXX, где XXXX = (0000...FFFF)h. Почему ??XXXX ? Да потому что никому не

    должно прийти в голову начинать символическое имя с ??, и транслятор смело

    может генерировать метки не боясь совпадений.

    12. MACRO - задает макроопределение.

    Swap MACRO a,b; a,b - параметры макро (ячейки памяти)

    mov ax,b;данное макрооопределение позволяет делать

    mov bx,a;обмен данными между ячейками памяти, в

    mov a,ax;отличие от команды xchg ;

    mov b,bx;нельзя mov a,b;

    ENDM

    Вызов этого макроса производится командой: Swap m,n

    13. .MODEL - определяет размер памяти под данные и код программы.

    .MODEL tiny;под программу,данные и стек отводится один общий сегмент

    (64 Kb).

    14. PROC - определяет начало подрограммы.

    Print PROC NEAR

    ;здесь команды подпрограммы

    Print ENDP

    ....

    call Print;вызов подпрграммы.

    15. .STACK - определяет размер стека.

    .STACK 200h; выделяет 512 байтов для стека.

    16. .RADIX base - определяет систему счисления по умолчанию, где base -

    основание системы счисления: 2, 8, 10, 16.

    .RADIX 8

    oct = 77; oct равно 63d.

    17. ; - начало комментария.

    КОМАНДЫ ПЕРЕСЫЛКИ

    1. MOV DST,SRC; переслать (SRC) в (DST). Здесь и далее содержимое регистра,

    например регистра AL будет обозначаться - (AL) или (al), а пересылка в

    комментарии будет обозначаться знаком FF, то адрес порта

    указывается косвенно, через содержимое регистра DX (специальная функция

    регистра общего назначения).

    in al,0a5h;ввести в AL байт данных из ВУ с адресом порта A5h ....

    mov dx,379h;ввести в аккумулятор AL байт данных из

    in al,dx;внешнего устройства с адресом порта 379h

    7. OUT PORT, ACCUM; переслать из аккумулятора AL или AX байт или слово в ВУ

    с символическим адресом PORT.

    out 0ffh,al;

    ....

    mov dx,37Ah;переслать слово данных из AX в ВУ с адре-

    out dx,ax;сом порта 37Ah

    8. LEA RP,M; загрузить в регистр RP эффективный адрес (смещение) ячейки

    памяти с символическим адресом M.

    lea di, rus; аналог этой команды - mov di, OFFSET rus.

    АРИФМЕТИЧЕСКИЕ КОМАНДЫ

    1. ADD DST, SRC; сложить содержимое SRC и DST и результат переслать в DST.

    add al, [mem_byte]; mem_byte однобайтовая ячейка памяти

    add [mem_word], dx; mem_word двухбайтовая ячейка памяти

    add ch,10001010b;

    2. INC DST; увеличить (DST) на 1 (инкремент (DST)).

    inc si; (SI) SRC 0/1 0 0 0

    DST = SRC 0 0 1 0

    DST < SRC 0/1 1 0 1

    0/1 - означает, что флаг может быть равен 0 или 1 в зависимости от значений

    операндов. Флаги OF и SF имеют смысл при операциях со знаковыми числами, CF

    для беззнаковых чисел. Флаг переполнения OF устанавливается в 1, если в

    результате операции сложения или вычитания значения переноса в старшиий

    двоичный разряд и из старшего двоичного разряда не совпадают. По другому

    определению OF принимает значение 1, если результат превышает диапазон

    представления соответствующих чисел. Пусть DST > SRC и оба являются

    однобайтовыми числами, тогда:

    DST: 1. (+127) 2. (+127)

    SRC: - (+2) - (-2)

    ------- -------

    (+125) (OF)=0 (+129)? (OF)=1

    Во втором примере результат превышает диапазон: -128 +128 (или -127 ???)

    / / :

    0 1 :

    Перенос в бит D7 равен 1, а из бита D7 = 0, в результате сложения чисел

    (OF) = 1, (CF) = 0, (ZF) = 0, (SF) = 1, (PF) = 0, (AF) = 1. Остальные три

    флага будут рассмотрены далее. Содержимое регистра признаков называется

    также словом состояния процессора(программы) и обозначается PSW.

    ОРГАНИЗАЦИЯ ПАМЯТИ И ВЫЧИСЛЕНИЕ АДРЕСА

    МП 8086 имеет 20-ти разрядную шину адреса ША, позволяющую обращаться к 2^20

    или примерно к одному миллиону ячеек памяти. 16-ти битовая шина данных ШД

    может пересылть информацию байтами или словами. Память обычно организована

    в виде линейного одномерного массива байтов, причем два соседних байта

    могут рассматриваться как слово. Все мегабайтное пространство памяти

    условно делится на 16 сегментов объемом по 64Kb. Микропроцессору доступны в

    каждый момент четыре - кодовый сегмент, где хранится программа, стековый

    сегмент, сегмент данных программы и дополнительный сегмент данных.

    Начальные адреса этих сегментов хранятся в регистрах CS,SS,DS и ES. Так как

    эти регистры 16-ти битовые, а все адресное пространство 20-ти битовое, то

    МП начальный сегментный адрес в 20-ти битовом сумматоре сдвигает на четыре

    бита влево (эквивалентно умножению на 16) и складывает с содержимым одного

    из регистров (IP,SP,DI,SI).

    Полученное число называется физическим адресом. Например, извлекая из

    памяти очередной байт кода программы МП формирует физический адрес по

    формуле: Физический адрес = (IP) + (CS) * 16, где (IP) - смещение,

    эффективный или исполнительный адрес, (CS) - сегментный адрес, а (CS) * 16

    - называется начальным сегментным адресом. Организация памяти приведена на

    рис.2.

    [pic]

    8.4 ПРОЦЕССОРНЫЙ БЛОК (ПБ )

    включает микропроцессор, стабилизируемый кварцем генератор импульсов, два

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

    двунаправленный буфер шины данных. Схема ПБ представлена на рис.3. Для

    уменьшения общего количества выводов МП, по некоторым из них в разные

    моменты передаются разные сигналы, поэтому младшие 16 линий адреса и шина

    данных совмещены (мультиплексированы).

    Конденсатор C до включения питания разряжен. В начальный момент времени t0

    подается напряжение питания на выводы (+). Начиная с этого момента времени

    на входе ~RES действует логический 0 до момента t1, когда напряжение на

    конденсаторе C достигнет порогового значения логической 1. В течение

    интервала t0..t1 выходной сигнал RESET имеет активный уровень лог.1.

    Микропроцессор переводится в исходное состояние. При этом в регистр CS

    записывается код FFFFh, а в регистр IP код 0000h.

    Когда C зарядится и сигнал ~RES станет "1", на входе RESET микропроцессора

    сигнал снизится до пассивного уровня. Начинается основной цикл работы. МП

    извлекает из ячейки памяти с адресом FFFF:0000 первый байт команды, который

    чаще всего является кодом безусловного перехода к тому месту в памяти, где

    находится начало программы. В процессе работы можно перезапустить МП с

    помощью кнопки SW. Конденсатор C разряжается до нуля и процесс запуска

    повторяется. МП может работать в двух режимах в максимальном и минимальном.

    Минимальный режим ограничивает адресуемый объем памяти до 64Kb. В

    большинстве приложений в приборостроении такого объема достаточно, поэтому

    сигнал ~MX/MN = 1. Формирователи сигналов ШУ,ША и ШД (шины управления

    адреса и данных), выполнены на элементах ИЛИ, регистрах и шинных

    Страницы: 1, 2, 3


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.