Разработка программы на языке ассемблера для CPU i8086, Вычисляющей значение логической формулы F=(X7&X6&X1) V (X6&X4&X2X1&X0 ) V (X7&X6&X3&X1) логическими перем

Автор: Пользователь скрыл имя, 25 Января 2012 в 10:10, курсовая работа

Описание работы

В курсовой работе в соответствии с заданием на проектирование решается задача на языке ассемблера для CPU i8086, в которой требуется вычислить значение логической формулы F=(X7&X6&X1) V (X6&X4&X2X1&X0 ) V (X7&X6&X3&X1) логическими переменными которой являются значения массива из 8 байт, и размещающей результат в оперативной памяти.
Описание пошаговой реализации алгоритма решения задачи в виде последовательности арифметических, логических и других действий, которые необходимо проделать для реализации принятого метода решения. Реализация задачи предполагает создание исходного, объектного и загрузочного модулей, а также подробное описание каждого действия по написанию программы.

Содержание

Введение 4
1 Постановка задачи 6
2 Анализ задачи 8
2.1 Определение входной и выходной информации 8
2.2 Выбор модели памяти 8
2.3 Выбор режимов адресации 9
2.4 Разработка блок-схемы программы 12
3 Реализация 13
3.1 Описание этапов создания программы 13
3.1.1 Описание исходного модуля 16
3.1.2 Трансляция программы 18
3.2 Характеристика полученного файла листинга 20
3.3 Характеристика полученного загрузочного модуля 22
3.4 Анализ команд программы 22
3.5 Анализ команд jmp, jl, jg и loop 24
3.6 Анализ дампа памяти (сегменты данных, кода и стека) 27
4 Тестирование и отладка программы 29
4.1 Отладка программы 29
4.2 Тестирование программы 29
Заключение 33
Литература 34
Приложение А 35
Приложение Б 36
Приложение В 38
Приложение Г 39

Работа содержит 1 файл

Содержание.doc

— 332.00 Кб (Скачать)
>      mov dx, offset mes2  ;заносим в dx адрес строки mes2

      call writestring  ;вывод строки mes2

      call crlf   ;переход на след. строку 

      cmp al, 0

      je L_RAVNO 

        jmp L_NERAVNO

      

L_RAVNO:

      mov dx, offset mes3  ;заносим в dx адрес строки mes3

      call writestring  ;вывод строки mes3 

      jmp Exit 

L_NERAVNO:

      mov dx, offset mes4  ;заносим в dx адрес строки mes4

      call writestring  ;вывод строки mes4 

Exit:

      call ReadKey

      mov ah, 4Ch   ;выход из программы

      int 21h 

;----------------------

DrawArray proc

 

      mov cx, MAXCOUNT  ;в CX заносим длину массива

      xor si, si

      mov bx, 10   ;система счисления 

L2:

      mov dl, 32   ;выводим пробел между эл. массива

      mov ah, 02h

      int 21h

 

      xor ax, ax

      mov al, byte ptr ds:[bp][si] ;в ax сохраняем эл. массива

      call writeint_signed  ;проц. вывода знач. ax на экран

      add si, 1   ;увел. si для перехода к след. эл. массива

Loop L2  

      call crlf   ;переход на след. строку

      ret     

DrawArray endp

;----------------------

end start 

Приложение В

Программная модель CPU i8086

 

Приложение  Г

Проверка  результатов

F=(X7&X6&X1) V (X6&X4&X2X1&X0 ) V (X7&X6&X3&X1)

Массив Вычисление  Assembler Вручную Результат
1 1, 1, 1, 0, 1, 0, 1, 1 true true Верно
2 1, 1, 1, 1, 1, 1, 1, 1 true true Верно
3 0, 0, 0, 0, 0, 0, 0, 0 false false Верно
4 0, 1, 0, 0, 0, 1, 0, 0 false false Верно
5 0, 1, 0, 0, 0, 0, 1, 1 true true Верно

Информация о работе Разработка программы на языке ассемблера для CPU i8086, Вычисляющей значение логической формулы F=(X7&X6&X1) V (X6&X4&X2X1&X0 ) V (X7&X6&X3&X1) логическими перем