15279

Команди і директиви мови Асемблер

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторна робота № 4 Тема: Команди і директиви мови Асемблер. Мета роботи: Набути навичок застосування асемблерних команд передачі інформації. Засвоїти способи адресування операндів вказаних груп команд та алгоритми їх виконання.

Украинкский

2013-06-11

122.5 KB

2 чел.

PAGE  6

Лабораторна робота № 4

Тема: Команди і директиви мови Асемблер.

Мета роботи: Набути навичок застосування асемблерних команд передачі інформації. Засвоїти  способи адресування операндів вказаних груп команд та алгоритми їх виконання.                                  

 

  1.  Короткі теоретичні відомості

1.1 Команди передачі інформації

1.1.1 Команди пересилання даних

Окрім часто застосовуваної команди MOV, з якою ми познайомилися в попередніх лабораторних роботах, до цієї групи команд входить ще декілька специфічних команд, які розглянемо нижче.

Команда XCHG взаємозамінює значення двох операндів. Вона виконується за наступним алгоритмом:

operand1 < - > operand2.

Команда підтримує наступні формати:

XCHG REG, mem

XCHG mem, REG

XCHG REG, REG.

Команда LAHF завантажує в регістр AH 8 молодших біт регістру прапорців F. Це безоперандна команда.

Команда LEA завантажує ефективну адресу комірки пам’яті в заданий регістр. Команда підтримує єдиний формат:

LEA REG, memory

і виконується за алгоритмом:

REG = address of memory (offset).

1.2 Принципи організації стеку

Стековим запам’ятовуючим пристроєм або стеком називають запам’ятовуючий пристрій, що працює за принципом: останній увійшов – перший вийшов (LIFO – Last Input First Output), тобто пристрій з послідовним доступом, в якому порядок зчитування даних є обернений до порядку запису. В МПС стек використовують при звертаннях до підпрограм і при обробленні переривань, тобто у випадках, коли потрібно перервати хід виконання основної програми і передати керування підпрограмі чи обробнику переривань.

Організація стеку може бути апаратною або апаратно-програмною.

У першому випадку стек реалізують з використанням регістрового файлу (набору регістрів). Регістри сполучені таким чином, що забезпечується паралельний зсув інформації від першого регістру, який називають вершиною стеку, до останнього регістру. Таким чином останній запис завжди знаходиться у вершині стеку, звідки і починається зчитування даних. Порядок запису/читання стеку при такій організації ілюструє рис.1.

Номер комірки стеку

Порядок розташування даних у стеку

m

D1(n)

m-1

D2(n)

2

Dm-1(n)

Вершина стеку→

1

Dm(n)

Порядок запису у стек

Порядок читання стеку

Рисунок 1 – Порядок запису/читання стеку при його апаратній організації

Організація стеку m×n (m – число слів у стеку, n – розрядність слова стеку) залежить від конкретного мікропроцесора. Для багатьох мікропроцесорів максимальне число слів, що можуть зберігатися у стеку, не перевищує декількох десятків.

При апаратно-програмній організації, що має місце в сучасних персональних комп’ютерах, під стек виділяється частина адресного простору оперативного запам’ятовуючого пристрою (ОЗП) МПС. При цьому стек розташовують у швидкодіючих  ОЗП статичного типу. Для адресування даних, що поміщаються у стек, використовують спеціальний регістр – вказівник стеку (Stack Pointer), який містить адресу останньої зайнятої комірки стеку. Якщо стек пустий, то вказівник стеку містить адресу вершини стеку. При запису даних у стек вміст вказівника стеку кожний раз зменшується на 1 при організації стеку байтами (SP:=SP–2) і на 2 – при організації стеку словами (SP:=SP–2), а при читанні – відповідно збільшується на 1 (SP:=SP+1) у першому випадку та на 2 (SP:=SP+2) – у другому випадку. При апаратно-програмній організації стеку зсуву даних немає, як це мало місце при апаратній організації стеку. Роботу стеку при його апаратно-програмній організації ілюструє рис.2 (організація стеку байтами: n=8).

Адреса комірки стеку (SP)

Порядок розташування даних у стеку

00…00

Dm(n)

00…01

Dm-1(n)

Am-2

D2(n)

Вершина стеку→

Am-1

D1(n)

Рисунок 2 – Порядок запису/читання стеку при його апаратно-прогрмній організації

Для організації стеку відведений сегмент, що складається з m комірок ОЗП, адресування яких всередині сегменту є лінійним в діапазоні від нуля до адреси Am-1.

 1.3 Команди роботи зі стеком

Команда PUSH зберігає 16 біт величину в стеку. Команда підтримує наступні формати: 

PUSH REG

PUSH SREG
PUSH memory

Алгоритм виконання команди:

SP = SP - 2

SS:[SP] (вершина стеку) = operand.

Команда PUSHF зберігає регістр прапорців у стеку. Команда використовується без операнду і виконується за алгоритмом:

SP = SP - 2

SS:[SP] (вершина стеку) = flags.

Команда POP повертає 16 біт величину зі стеку. Команда підтримує наступні формати:

POP REG

POP SREG
POP memory

Алгоритм виконання команди:

operand = SS:[SP] (вершина стеку)

SP = SP + 2.

Команда POPF повертає регістр прапорців зі стеку. Команда використовується без операнду і виконується за алгоритмом:

flags = SS:[SP] (вершина стеку)

SP = SP + 2.

  1.  Постановка завдання

  1.  Використовуючи середовище емулятора МП і8086, створити проект асемблерної програми відповідно до індивідуального завдання за нижченаведеним шаблоном програми:

ORG 100H

MOV OP1, C1H

MOV OP2, C2H

XCHG OP1, OP2

LAHF

XCHG R1, AH

LEA R2, mem1

MOV SR, R2

PUSH R1

PUSH SR

PUSH mem1

MOV R3, 0

MOV R1, R3

MOV SR, R3

MOV mem1, R3

POP R1

POP SR

POP mem1

RET

MEM1 dw C3H

END.

  1.  Використовуючи середовище емулятора скласти лістинг програми (табл..1)

Таблиця 1 Лістинг програми

Зміщення

Код (Hex)

Мнемокод команди

К-сть байт

Коментар

100

B8

MOV AX, 0000h

3

Код операції – запис числа 0000h в регістр AX

101

00

Молодший байт числа

102

00

Старший байт числа

  1.  Використовуючи покроковий режим роботи емулятора, проаналізувати хід виконання програми. Заповнити табл..2 результатів досліджень.

  1.  Варіанти індивідуальних завдань

  1.  Варіанти індивідуальних завдань до даної лабораторної роботи наведені у табл.. 3.

  1.  Методичні вказівки

  1.  Увійти в середовище емулятора Emu8086.
    1.  Створити новий проект типу “com” під власним іменем.
    2.  У створеному проекті набрати текст програми відповідно до п.2.1 і індивідуального завдання.
    3.  Скомпілювати створений проект.
    4.  Проаналізувати повідомлення про помилки, якщо такі мають місце. Записати повідомлення у звіт до лабораторної роботи. Пояснити причини виникнення помилок і вказати шляхи їх усунення.
    5.  Після успішного завершення процедури компілювання проекту перейти до аналізу роботи створеної програми відповідно до п.п.2.2 і 2.3, використовуючи покроковий режим роботи емулятора.
    6.  В процесі аналізу роботи програми контролювати і записувати зміни вмісту регістрів, що приймають участь в роботі програми.

  1.  Зміст звіту

  1.  Назва теми.
    1.  Мета роботи.
    2.  Індивідуальне завдання.
    3.  Лістинг програми відповідно до п.2.2 з відповідними коментарями.
    4.  Результати досліджень регістрів відповідно до п.2.3.
    5.  Відповіді на контрольні запитання.
    6.  Висновки, в яких дати характеристику досліджуваних команд.

  1.  Контрольні запитання

  1.  Які команди відносяться до групи  команд передавання інформації?
    1.  Дайте характеристику команди XCHG.
    2.  Дайте характеристику команди LEA.
    3.  . Дайте характеристику команди LAHF.
    4.  Яке призначення стекової памяті?
    5.  Поясніть порядок запису/читання стеку при його апаратно програмній організації.
    6.  Дайте характеристику команди PUSH.
    7.  Дайте характеристику команди POP.
    8.  Дайте характеристику команд PUSHF і POPF.


Таблиця 2 Результати досліджень

№ кроку

IP

Команда

CS

SS

SP

BP

SI

DI

DS

ES

BX

CX

AX

DX

Коментар

H

L

H

L

H

L

H

L

0

100

MOV AX, 0000H

0B56

0B56

FFFE

0000

0000

0000

0B56

0B56

00

00

00

17

00

00

00

00

очистка регістру AX

1

103

Таблиця 3 Індивідуальні завдання до лабораторної роботи №4

№ варіанту

OP1

OP2

R1

R2

R3

SR

C1h

C2h

C3h

Примітка

1

[200H]

AX

BL

SI

DX

ES

A501H

105AH

dw A0H

2

BX

[220H]

CH

DI

AX

DS

B0C5H

5C0BH

dw B0H

3

[BX]

CX

DL

SI

AX

SS

C1D2H

2D1CH

dw C0H

BX<230H

4

DX

[BX]

CL

DI

AX

ES

D505H

505DH

dw D0H

BX<220H

5

[DI]

AX

BH

SI

CX

DS

E102H

201EH

dw E0H

DI<200H

6

BX

[SI]

DH

DI

AX

SS

F307H

703FH

dw F0H

SI<210H

7

[BX+DI]

AX

DL

SI

CX

ES

E469H

964EH

dw A5H

BX<220H; DI<AH

8

CX

[BX+SI]

DH

DI

AX

DS

D103H

301DH

dw D5H

BX<200H; SI<10H

9

AX

[200H]

BL

SI

DX

SS

105AH

A501H

dw E0H

10

[220H]

BX

CH

DI

AX

ES

5C0BH

B0C5H

dw F0H

11

CX

[BX]

DL

SI

AX

DS

2D1CH

C1D2H

dw A5H

BX<230H

12

[BX]

DX

CL

DI

AX

SS

505DH

D505H

dw D5H

BX<220H

13

AX

[DI]

BH

SI

CX

ES

201EH

E102H

dw A0H

DI<200H

14

[SI]

BX

DH

DI

AX

DS

703FH

F307H

dw B0H

SI<210H

15

AX

[BX+DI]

DL

SI

CX

SS

964EH

E469H

dw C0H

BX<220H; DI<AH

16

[BX+SI]

CX

DH

DI

AX

ES

301DH

D103H

dw D0H

BX<200H; SI<10H


  1.  Джерела інформації

  1.  Ю.І. Якименко, Т.О. Терещенко, Є.І. Сокол та ін. Мікропроцесорна техніка: Підручник. – Київ. – ІВЦ «Видавництво «Політехніка». – 2004. – 439 с.
    1.  Юров В., Хорошенко С. Assembler: учебный курс – СПб: Питер Ком, 1999. – 672 с.

PAGE  2


PAGE  2


PAGE  


PAGE  7


 

А также другие работы, которые могут Вас заинтересовать

28531. Гаммирование с обратной связью 16.05 KB
  Данный режим очень похож на режим гаммирования и отличается от него только способом выработки элементов гаммы очередной элемент гаммы вырабатывается как результат преобразования по циклу 32З предыдущего блока зашифрованных данных а для зашифрования первого блока массива данных элемент гаммы вырабатывается как результат преобразования синхропосылки по тому же циклу 32З. Как видно из соответствующего уравнения при расшифровании блока данных в режиме гаммирования с обратной связью блок открытых данных зависит от соответствующего и...
28532. Выработка имитовставки к массиву данных 15.64 KB
  Ранее мы обсудили влияние искажения шифрованных данных на соответствующие открытые данные. Мы установили что при расшифровании в режиме простой замены соответствующий блок открытых данных оказывается искаженным непредсказуемым образом а при расшифровании блока в режиме гаммирования изменения предсказуемы. Означает ли это что с точки зрения защиты от навязывания ложных данных режим гаммирования является плохим а режимы простой замены и гаммирования с обратной связью хорошими Ни в коем случае.
28533. Криптографические средства 24 KB
  Они имеют своей задачей защиту информации при передаче по линиям связи хранении на магнитных носителях а так же препятствуют вводу ложной информации имитостойкость. Основные задачи криптографии Криптографические методы защиты информации используются как самостоятельно так и в качестве вспомогательного средства для решения задач не имеющих на первый взгляд отношения к криптографии. Интересы криптографии сосредоточены на двух задачах: обеспечение конфиденциальности при хранении и передаче информации когда никто кроме владельца...
28534. Характер криптографической деятельности 68.5 KB
  Вместе с тем большую если не центральную роль в защите информации играет ранее сверх засекреченная область деятельности криптография. Криптография в переводе с греческого означает тайнопись как систему изменения правил написания текстов с целью сделать эти тексты непонятными для непосвященных лиц не путать с тайнописью основанной на сокрытии самого факта написания текста например симпатическими чернилами и т. Шифровались религиозные тексты прорицания жрецов медицинские рецепты использовалась криптография и в государственной сфере....
28535. Защита данных с помощью шифрования 44.5 KB
  Защита данных с помощью шифрования одно из возможных решений проблемы безопасности. Зашифрованные данные становятся доступными только тем кто знает как их расшифровать и поэтому похищение зашифрованных данных абсолютно бессмысленно для несанкционированных пользователей. Основные направления использования криптографических методов передача конфиденциальной информации по каналам связи например электронная почта установление подлинности передаваемых сообщений хранение информации документов баз данных на носителях в...
28536. Требования к криптосистемам 29 KB
  Независимо от способа реализации для современных криптографических систем защиты информации сформулированы следующие общепринятые требования: стойкость шифра противостоять криптоанализу должна быть такой чтобы вскрытие его могло быть осуществлено только решением задачи полного перебора ключей и должно либо выходить за пределы возможностей современных компьютеров с учетом возможности организации сетевых вычислений или требовать создания использования дорогих вычислительных систем; криптостойкость обеспечивается не секретностью...
28537. Имитостойкость и помехоустойчивость шифров 13.41 KB
  Они имеют своей задачей защиту информации при передаче по линиям связи хранении на магнитных носителях а так же препятствуют вводу ложной информации имитостойкость. Различают стойкость ключа сложность раскрытия ключа наилучшим известным алгоритмом стойкость бесключевого чтения имитостойкость сложность навязывания ложной информации наилучшим известным алгоритмом и вероятность навязывания ложной информации. Аналогично можно различать стойкость собственно криптоалгоритма стойкость протокола стойкость алгоритма генерации и...
28538. КРАТКИЕ СВЕДЕНИЯ О КРИПТОАНАЛИЗЕ 39.5 KB
  Нарушителю доступны все зашифрованные тексты. Нарушитель может иметь доступ к некоторым исходным текстам для которых известны соответствующие им зашифрованные тексты. Его применение осложнено тем что в реальных криптосистемах информация перед шифрованием подвергается сжатию превращая исходный текст в случайную последовательность символов или в случае гаммирования используются псевдослучайные последовательности большой длины. Дифференциальный или разностный криптоанализ основан на анализе зависимости изменения шифрованного текста...
28539. Получение случайных чисел 45 KB
  Последовательности случайных чисел найденные алгоритмически на самом деле не являются случайными т. Однако при решении практических задач программно получаемую последовательность часто все же можно рассматривать как случайную при условии что объем выборки случайных чисел не слишком велик. В связи с этим для случайных чисел найденных программным путем часто применяют название псевдослучайные числа.