Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
44
Добавлен:
01.05.2014
Размер:
71.68 Кб
Скачать

Министерство образования Российской Федерации

Санкт-Петербургский Государственный Электротехнический Университет «ЛЭТИ»

Кафедра МОЭВМ

Отчет по лабораторной работе №3 «Реализация разветвлений в эвм пк»

Вариант 3

Выполнили:

студенты гр. 3352

Воронин С.

Сергеев М.

Проверил:

Улитовский В.А.

Санкт-Петербург

2005 г.

Текст задания

Составить программу, сравнивающую переменную с константой и выдающую на терминал одно из двух сообщений. Переменная хранится в одном из POH, а константа описана директивой EQU. Тип переменной должен совпадать с типом константы.

Вариант задания назначается студенту по двум последним цифрам зачетной книжки. Задание содержит тип переменной, ее длину, способ сравнения константы с переменной, исследуемую операцию перехода. Рекомендуется текст программы составить на основе текста LR1.asm так, чтобы иметь небольшие изменения текста. Тестированию подлежат только команды сравнения и перехода, но для всех вариантов флагов, влияющих на переход. Для перебора всех комбинаций флагов следует заранее разработать тестовый набор данных (константы и переменной).Как переменную, так и константу рекомендуется изменять вручную при отладке. При этом команды сравнения и перехода отлаживаются в пошаговом режиме, а все остальные - не отлаживаются. Некоторые комбинации флагов не могут быть достигнуты при корректной комбинации данных и методов сравнения, но могут появиться в некорректных ситуациях. Для таких ситуаций следует:

  • доказать в отчёте невозможность генерации данной комбинации флагов при любых комбинациях данных;

  • применить установку флагов вручную, изменяя значения флагов в регистре флагов.

Индивидуальный вариант

Вариант 4

Операция сравнения CMP

Операция перехода JNE

Тип данных Беззнаковый

Значение данных Символ

Длина байт 1

Описание операции сравнения

CMP приемник, источник

Сравнивает приемник и источник и устанавливает флаги. Сравнение осуществляется путем вычитания источника (число, регистр или переменная) из приемника (регистр или переменная; приемник и источник не могут быть переменными одновременно), причем результат вычитания никуда не записывается, единственным результатом работы этой команды оказывается изменение флагов CF, OF, SF, ZF, AF и PF.

Описание операции перехода

JNE метка

Команда выполняет переход (типа short или near), если состояние флага ZF = 0. При использовании этого оператора после CMP переход происходит, если операнды CMP не равны.

Логическое выражение: NOT (ZF)

Таблица истинности переходов

Переход JNE

1

0

ZF

0

1

Пример

MOV AX,0

MOV DX,1

CMP AX,DX

JNE mismatch

RET

mismatch:

Тестовый набор исходных данных

Переход JNE

ZF

Константа

Переменная

0

1

10

10

1

0

10

9

Текст программы

EOFLine EQU '$' ; Определение символьной константы

const EQU 'c' ; "Конец строки"

; Стек программы

AStack SEGMENT STACK

DW 12 DUP(?) ; Отводится 12 слов памяти

AStack ENDS

; Данные программы

DATA SEGMENT

; Директивы описания данных

m_mess DB 'Peremennaya i constanta sovpadaut$'

mism_mess DB 'Peremennaya i constanta NE sovpadaut$'

varbl DB 'c'

DATA ENDS

; Код программы

CODE SEGMENT

ASSUME CS:CODE, DS:DATA, SS:AStack

; Процедура печати строки

WriteMsg PROC NEAR

mov AH,9

int 21h ; Вызов функции DOS по прерыванию

ret

WriteMsg ENDP

; Головная процедура

Main PROC FAR

push DS ;\ Сохранение адреса начала PSP в стеке

sub AX,AX ; > для последующего восстановления по

push AX ;/ команде ret, завершающей процедуру.

mov AX,DATA ; Загрузка сегментного

mov DS,AX ; регистра данных.

cmp varbl, const

jne mismatch

mov DX, OFFSET m_mess

call WriteMsg

ret

mismatch:

mov DX, OFFSET mism_mess

call WriteMsg

ret

Main ENDP

CODE ENDS

END Main

Соседние файлы в папке Комплект лабораторных 1-6