Студопедия

Главная страница Случайная страница

Разделы сайта

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






Охарактеризувати макродирективи асемблера.






Директиви повторення WHILE, REPT
Синтаксис:
WHILE константний_вираз
послідовність_рядків

ENDM
REPT константний_вираз
послідовність_рядків

ENDM

При використанні цих директив транслятор буде повторювати послідовність_рядків до тих пір, поки константний_вираз не стане рівним нулю. При використанні директиви WHILE константний_вираз має змінюватися всередині послідовність_рядків, директива REPT автоматично зменшує на одиницю значення константного виразу після кожної ітерації.

Директиви повторення IRP, IRPC

Синтаксис директиви IRP:


IRP формальний_аргумент, < рядок_символів_1, рядок_символів_2,... рядок_символів_n>

послідовність_рядків

ENDM

 

Директива IRP повторює послідовність_рядків n разів, замінюючи формальний_аргумент рядком символів з другого операнду.

Синтаксис директиви IRPC:

 

IRPC формальний_аргумент, < рядок_символів >

послідовність_рядків

ENDM

 

Дія даної директиви схожа до IRP, але вона при кожній черговій ітерації замінює формальний_аргумент черговим символом із рядок_символів. Кількість повторень послідовності рядків визначається кількістю символів в рядок_символів.

 

1.2.3.Директиви умовної компіляції IF, IFE

Синтаксис цих директив:

 

IF(E) логічний_вираз
фрагмент_програми_1

ELSE

фрагмент_програми_2

ENDIF

 

Якщо директиві IF логічний вираз істинний, то в об’єктний модуль поміщується фрагмент_програми_1. Якщо логічний вираз хибний, то при наявності директиви ELSE в об’єктний код поміщується фрагмент_програми_2. Хибним логічний вираз буде, якщо його значення дорівнює нулю, а істинним – при будь-якому значенні, відмінному від нуля.

Директива IFE також аналізує значення логічного виразу, але для включення в об’єктний модуль фрагмент_програми_1 потрібно, щоб логічний_вираз мав хибне значення.

  1. Розробити програму мовою асемблера, яка обчислює значення виразу

y = S (1+ 3i)

i=1

y = S (2 * i)

i=1

page 60, 80

TITLE EX_LOOP (EXE)

STACKSG SEGMENT PARA STACK 'STACK'

DW 128 DUP (?)

STACKSG ENDS

 

DATASG SEGMENT PARA 'DATA'

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

N DW 10

I DW 1; Елементи даних

RESULT DW 0

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

DATASG ENDS

CODESG SEGMENT PARA 'Code '

BEGIN PROC FAR

ASSUME CS: CODESG, DS: DATASG, SS: STACKSG

PUSH DS; Ініціалізація програми

SUB AX, AX

PUSH AX

MOV AX, DATASG

MOV DS, AX

SUB AX, AX

MOV CX, N; Запис до СХ числа циклів

BEGIN_LOOP:; Початок циклу

MOV AX, I; Пересилання І до регістра АХ

MOV BX, 2

MUL BX; Отримання добутку 2*І

ADD RESULT, AX; Накопичення суми ряду в змінній RESULT

SUB AX, AX

INC I; Збільшення І на 1

LOOP BEGIN_LOOP; Кінець опису циклу

RET

BEGIN ENDP

CODESG ENDS

END BEGIN

№ 21

1. Описати регістри стану і керування.

В МП включено декілька регістрів, які постійно містять інформацію як про стан самого МП
До цих регістрів відносяться:
- регістр прапорів eflags/flags;
- регістр вказівника команди eip/ip

eflags/flags (flag register) - регістр прапорів. Розрядність 32/16 бітів. Окремі біти мають певне функціональне призначення і називаються прапорами
Прапори регістра eflags/flags можна розділити на три групи:
- 8 прапорів стану: Прапори стану регістра eflags відображають особливості результату виконання арифметичних або логічних операцій. Це дає можливість аналізувати стан обчислювального процесу
- 1 прапор керування - df (Directory flag), df визначає напрямок поелементної обробки: від початку строки до кінця (df=0), від кінця до початку (df=1).
- 5 системних прапорів, що керують вводом/виводом, перериваннями, відладкою, переключенням між задачами
ПРАПОРИ СТАНУ:
- Cf прапор переносу 0- переносу не було, 1-арифметична операція зробила перенос
- Pf Прапор паритету 0-вісім молодших розрядів результату містять непарне число одиниць(1 парне)
- af Допоміжний прапор переносу 1- в результаті операції додавання відбувся перенос(0 не було)
- zf Прапор нуля 1-результат нульовий, 0-результат ненульовий
- sf Прапор знаку 1-старший біт результату дорівнює 1; 0=0
- of Прапор переповнення 1-в результаті операції відбувається перенесення(0 невідбув)
- iopl Рівень привілей ввода-вивода
СИСТЕМНІ ПРАПОРИ
- Tf Прапор трасування
- If Прапор переривання 1-апаратні переривання дозволені; (0 не дозвл)
- rf Прапор відновлення
- vm Прапор віртуального 8086
- ac Прапор конролю вирівнювання
- Vif Прапор віртуального переривання
- Vip Прапор відкладеного віртуального переривання
- Id Прапор ідентифікації

 

2. Описати віднімання двійкових чисел.

Віднімання двійкових чисел без знаку

У системі команд процесора є наступні команди двійкового віднімання:

 

1. dec операнд

Операція декременту, тобто зменшення значення операнда на 1.

Приклади: DEC CH

DEC Array[Bx+DI]

 

2. sub операнд1, операнд2

команда віднімання з принципом дії:

 

операнд1 = операнд1 - операнд2

Приклади: SUB AX, 2000h






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.