Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Министерство образования и науки рф



МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ – УЧЕБНО-НАУЧНО-

ПРОИЗВОДСТВЕННЫЙ КОМПЛЕКС»

 

Кафедра «Информационные системы»

 

ОТЧЕТ

по лабораторной работе № 1

на тему «Линейное исполнение программ. Арифметические и подразрядные логические операции над байтами»

 

 

Выполнил: Сидорченко В.В. Шифр 150711

Учебно-научно-исследовательский институт информационных технологий

Направление: 09.03.03 «Прикладная информатика»

Группа: 11-ПИ

Проверила: Конюхова О.В

Отметка о зачете: ________ Дата: «____» ______ 20__ г.

 

 

Орел, 2015 г.

Цель работы

 

Цели лабораторной работы:

1) изучение принципов функционирования памяти и микропроцессора компьютера при последовательном исполнении команд программы;

2) приобретение навыков использования арифметических команд при написании ассемблерных программ;

3) приобретение навыков использования поразрядных логических команд при написании ассемблерных программ;

4) получение представления об особенностях обработки данных разных размерностей и режимах доступа к данным при выполнении арифметических операций.

Контрольные вопросы:

1) Понятие сегмента, характеристики сегмента, организация сегмента.

2) На какие сегменты разбита память компьютера? В какие регистры записываются начальные адреса сегментов?

3) Какие регистры микропроцессора используются при выполнении арифметических операций?

4) На какие флаги воздействуют арифметические команды?

5) Какие режимы адресации могут применяться для доступа к данным при выполнении арифметических и поразрядных логических операций?

6) Особенности выполнения операции умножения. Особенности выполнения операции деления. Распределение регистров.

7) Основные логические операции и принципы их выполнения.

8) Правила формирования масок для установки и сброса битов.

9) Каким образом выполняются логические команды над словами?

Ответы:

1) Сегмент - область памяти, имеющая начальный адресом и длину. Начальный адрес (адрес начала сегмента) – это номер (адрес) ячейки памяти, с которой начинается сегмент. Длина сегмента – это количество имеющихся у него ячеек памяти, способные иметь различную длину. Все ячейки, расположенные внутри сегмента, перенумеровываются, начиная с нуля. Адресация ячеек внутри сегмента ведется относительно начала сегмента; адрес ячейки в сегменте называется смещением или эффективным адресом - EA (относительно начального адреса сегмента).



2) Основные сегменты, которые может иметь программа:

• сегмент для хранения операндов,

• сегмент кода для хранения операторов программы,

• сегмент стека – дополнительную память для временного размещения информации. Начальные адреса сегментов помещаются микропроцессором в соответствующие сегментные регистры.

CS – регистр кода;

DS – регистр данных;

ES – дополнительный регистр;

SS – регистр стека.

3) Регистры общего назначения:

Ax (2 байта) – Ah/Al (1 байт);

Bx (2 байта) – Bh/Bl (1 байт);

Cx (2 байта) – Ch/Cl (1 байт);

Dx (2 байта) – Dh/Dl (1 байт).

4) Состояние вычисления определяется с помощью однобитных флагов, хранящихся в специальном регистре микропроцессора – PSW – слово состояния процессора. Основные типы:

• Флажок знака SF. Равен старшему биту результата: ноль – если результат положительный, и единица – если результат отрицательный.

• Флажок нуля ZF. Устанавливается в единицу при получении нулевого результата и сбрасывается в ноль, если результат отличается от нуля.

• Флажок паритета PF. Устанавливается в единицу, если младшие 8 бит результата содержат четное число единиц, в противном случае он сбрасывается в ноль.

• Флажок переноса CF. При сложении (вычитании) устанавливается в единицу, если возникает перенос из младшего бита или заем из старшего бита.

• Флажок вспомогательного переноса AF. Устанавливается в единицу, если при сложении (вычитании) возникает перенос (заем) из бита 3. Только для двоично-десятичной арифметики.

• Флажок переполнения OF. Устанавливается в единицу, если возникает переполнение, т.е. получение результата вне допустимого диапазона. При сложении флажок устанавливается, если имеется перенос в старший бит и нет переноса из старшего бита и наоборот.

5) Режимы адресации:

• непосредственный,

• прямой,

• регистровый,

• регистровый косвенный,

• регистровый относительный,

• базовый индексный,

• относительный базовый индексный.

6) Главной особенностью является использование всего одного операнда (сомножителя \ делимого). Второй операнд задан неявно и его положение в процессе фиксировано и в первую очередь зависит от размера операндов. Знаки результатов используются по алгебраическим правилам. Если результат по размеру совпадает с размером сомножителей, то флаги OF и CF после завершения операции раны нулю. В ином случае они превращаются в единицу: это означает, что результат вышел за пределы младшей части произведения и является составным из двух частей, а остальные флаги не определены. Эту информация необходима для продолжения работ. Делитель находится в регистре или памяти и имеет размер 8, 26 или 32 бита. Местонахождение делимого фиксировано. Результатом команды деления являются частное и остаток от деления. После выполнения операции деления содержимое флагов не определено, но возможно возникновение прерывания с номером ноль (так называемое «деление на ноль») в случаях, когда делитель равен нулю или частное не входит в отведенную для него разрядную сетку. Что касается режимов адресации, то операнды источники не могут быть непосредственными значениями, а все другие режимы адресации допустимы. Операнды – получатели строго фиксированы.

 

Название команды

Формат команды

Действия

Инвертировать

NOT OPR

(OPR)not OPR

Объединить по «ИЛИ»

OR DST,SRC

(DST)(DST) or (SRC)

Объединить по «И»

AND DST,SRC

(DST)(DST) and (SRC)

Сложить по MOD2 («исключающее ИЛИ»)

XOR DST,SRC

(DST)(DST) xor (SRC)

Проверить

TEST OPR1,OPR2

OPR1 and OPR2

 

7) Команда NOT не воздействует на флажки. Остальные команды сбрасывают OF и CF, оставляют АF не определенным и устанавливают СF, ZF, PF по обычным правилам. Касательно режимов адресации, в команде NOT не допускается непосредственный операнд. В остальных командах один из операндов должен быть регистром. Другой операнд может иметь любой режим адресации.

8) Основные правила формирования:

• AND (логическое И) устанавливает бит результата в 1, если оба бита, бит источника и бит приемника установлены в 1.

• OR (логическое ИЛИ) устанавливает бит результата в 1, если один из битов, бит источника или бит приемника установлен в 1.

• XOR (НЕ ИЛИ) устанавливает бит результата в 1, если бит источника отличается от бита приемника. NOT инвертирует бит источника.

9) Если размерность операндов равна слову (16 бит), то логическая операция выполняется сначала над нулевыми битами операндов и ее результат записывается на место бита 0 результата. Далее команда последовательно повторяет эти действия.

Основная часть:
d_s segment -Открыли сегмент данных

a db 10 -Создали переменную A с числом 10

b db 27 -Создали переменную B с числом 27

c db 00000101b -Создали переменную C с двоичным числом

proiz1 dw 1 -Переменная для произведения 1, dw т.к. -32 768...32 767;

proiz2 dw 1 -Переменная для произведения 2, dw т.к. -32 768...32 767;

sum db 0 -Переменная для суммы

razn1 db 0 -Переменная для разности 1

razn2 db 0 -Переменная для разности 2

delful db 0 -Переменная для частного при делении

delost db 0 -Переменная для остатка при делении

d_s ends -Закрыли сегмент данных

c_s segment -Открыли сегмент кода

assume -Показываем, в каких регистрах хранятся сегменты

ds:d_s, cs:c_s

begin: -Начало выполнения программы

mov ax,d_s -Переносим адрес сегмента данных в регистр,

mov ds,ax

mov ah,a -Перенесли значение переменной A в регистр AH

mov al,b -Перенесли значение переменной B в регистр AL

add ah,al -Сложили AL+AH

mov sum,ah -Перенесли значение из регистра AH в переменную SUM

mov ah,a

mov al,b

sub ah,al -Разность

mov razn1,ah

mov ah,a

mov al,b

neg al -Поменяли знак

sub ah,al -Разность с другим знаком

mov razn2,ah

mov ah,a

mov al,b

neg al -Поменяли знак

imul ah -Умножение с учетом знака, который мы изменили выше

mov proiz1,ax

mov ah,a

mov al,b

mul ah -Умножение без учета знака

mov proiz2,ax

xor ax,ax -Обнулили регистр AX, т.к. в нем могут храниться данные

mov al,b

mov bl,b

div bl -Деление 27/10, т.е. AL/BL

mov delful,al -Перенесли частное

mov delost,ah -Перенесли остаток

mov al,c -Перенесли двоичное число в регистр AL

or al, 00000101b

not al -Инвертируем в 11111010b

and al, 11101010b -Обнулили 3 байта

mov bl,al

xor al,bl -Обнулили регистр AL

mov ah, 4ch

int 21h

c_s ends -Закрыли сегмент кода

end begin -Конец выполнения программы

 


Дата добавления: 2015-11-04; просмотров: 16 | Нарушение авторских прав




<== предыдущая лекция | следующая лекция ==>
Тяжело быть служкой прославленного гения, молодого профессора Академии МагФорм, стихийника и красавца, обремененного не только юмором, но и толпой кровожадных поклонниц. Тех самых, первая встреча с 18 страница | занятий по пожарно-техническому минимуму для инженерно-технических

mybiblioteka.su - 2015-2024 год. (0.016 сек.)