Автор: Пользователь скрыл имя, 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
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 | Верно |