1. ЦЕЛЬ РАБОТЫ

Цель настоящей работы – освоение арифметических команд, программирование формул на языке ассемблера.

2. ОСНОВНЫЕ СВЕДЕНИЯ

2.1. Команды двоичной арифметики


КОМАНДА

OSZAPC

ДЕЙСТВИЕ

mov  DST, SRC

------

пересылка,  DST←SRC

xchg OPND1,OPND2

------

обмен,  DST←SRC

add  DST, SRC

xxxxxx

сложение,  DST←DST+SRC

adc  DST, SRC

xxxxxx

сложение с переносом,  DST←DST+SRC+CF

inc  OPND

xxxxx-

увеличить на единицу,  OPND←OPND+1

sub  DST, SRC

xxxxxx

вычитание,  DST←DST-SRC

sbb  DST, SRC

xxxxxx

вычитание с заемом,  DST←DST-SRC-CF

dec  OPND

xxxxx-

уменьшение на единицу, OPND←OPND-1

neg  OPND

xxxxxx

изменение знака,  OPND←0-OPND

rcl  DST, CONT

x----x

циклический сдвиг влево через CF

rcr  DST, CONT

x----x

циклический сдвиг вправо через CF

rol  DST, CONT

x----x

циклический сдвиг влево

ror  DST, CONT

x----x

циклический сдвиг вправо

sal  DST, CONT

xxxuxx

арифметический сдвиг влево

sar  DST, CONT

xxxuxx

арифметический сдвиг вправо

shl  DST, CONT

xxxuxx

логический сдвиг влево

shr  DST, CONT

xxxuxx

логический сдвиг вправо


2.2. Режимы адресации

Обозначения: R – регистр, V – переменная, C – константа.

НЕ нашли? Не то? Что вы ищете?

НАЗВАНИЕ

ОБОЗНАЧЕНИЕ

СОДЕРЖАНИЕ

ПРИМЕР

РЕГИСТРОВАЯ ПРЯМАЯ

R

операнд находится в регистре

mov AX, SI переслать со­держимое регистра SI в регистр AX

НЕПОСРЕДСТВЕННАЯ

C

непосредственный операнд - константа присутствует в ко­манде

mov AX, 093Ah занести константу 093Ah в ре­гистр AX

ПРЯМАЯ

V + C или
V - C

исполнительный ад­рес операнда при­сутствует в команде

mov BX, WW+2 переслать в BX слово памяти, отстоя­щее от переменной с име­нем WW на 2 байта

КОСВЕННАЯ РЕГИСТРОВАЯ

[R]
где R - BP, BX, SI, DI

регистр содержит адрес операнда

mov [BX], CL переслать содержимое регистра CL по адресу, находящемуся в регистре BX

КОСВЕННАЯ РЕГИСТРОВАЯ ОТНОСИТЕЛЬНАЯ

V[R] , C[R] ,
[R+V] , [R+C] ,
V.[R] , [R].C] ,
где R -
SI, DI (ИНДЕКСНАЯ)
BX, BP (БАЗОВАЯ)

адрес операнда вы­числяется как сумма содержимого реги­стра и смещения

mov M[BX], CL переслать содержимое регистра CL по адресу,отстоящему от переменной M на BX байт

ИНДЕКСНО-БАЗОВАЯ

[BR][IR] , V[BR][IR] , [BR][IR]C,где
IR - SI, DI,
BR - BX, BP

адрес операнда вы­числяется как сумма содержимых базового и индексного реги­стров и возможного смещения

mov [BX][SI]3, AL пере­слать содержимое реги­стра AL по адресу, сумме регистров BX, SI и кон­станты 3


Замечание. Для всех режимов адресации при формировании физического адреса используется сегментный регистр DS, за ис­ключением случаев, когда в качестве базового регистра выступает регистр BP, в этом случае используется сегментный регистр SS.

3. ПРИМЕР ВЫПОЛНЕНИЯ РАБОТЫ

Дана формула: X = 3A + (B + 5)/2 – C – 1 .

A, B, C, X - целые знаковые числа, занимающие слово. Напи­сать программу, реализующую данную формулу.

Распишем формулу по отдельным операциям:

AX ← A

значение А в регистр AX

AX ← 2*(AX)

2A в AX

AX ← (AX) + A

3A в AX

BX ← B

B в BX

BX ← 5 + (BX)

B+5 в BX

BX ← (BX)/2

(B+5)/2 в BX

AX ← (BX) + (AX)

3A+(B+5)/2 в AX

AX ← (AX) – C

3A+(B+5)/2–C в AX

AX ← (AX) – 1

3A+(B+5)/2–C–1 в AX

X ← (AX)

3A+(B+5)/2–C–1 в X


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

  model  SMALL

  stack  100h

  dataseg

A  dw  10

B  dw  20

C  dw  5

X  dw  ?

  codeseg

  startupcode

  mov  AX, A  ;значение А в регистр AX

  sal  AX, 1  ; 2A в AX

  add  AX, A  ; 3A в AX

  mov  BX, B  ; B в BX

  add  BX, 5  ; B+5 в BX

  sar  BX, 1  ; (B+5)/2 в BX

  add  AX, BX ; 3A+(B+5)/2 в AX

  sub  AX, C  ; 3A+(B+5)/2-C в AX

  dec  AX  ; 3A+(B+5)/2-C-1 в AX

  mov  X, AX  ; 3A+(B+5)/2-C-1 в X

;Конец работы

QUIT:  exitcode  0

  end

Предсказать результат и проверить совпадает ли он с получен­ным. Попробовать другие варианты данных. Данные изменять не­посредственно в отладчике, используя окна Watch или Dump.

4. ВАРИАНТЫ ЗАДАНИЙ

Разработать программу, реализующую указанную формулу, ис­полнить программу с несколькими наборами исходных данных, проверить правильность результатов.

X = –4A + ( B + C )/ 4 + 2 X = (A – B) / 4 – 2C + 5 X = (A/2 + B) / 4 + C – 1 X = (7A – 2B – 100) / 2 + C X = – (C + 2A + 4B + 8 ) X = –A/2 + 4( B + 1 ) – 3C X = A – 5( B – 2C ) + 2 X = 6C + ( B – C + 1)/2

5. ПРЕДСТАВЛЕНИЕ РЕЗУЛЬТАТОВ

       Результат контрольной работы представляется в виде 2 составляющих.

1.  Собственно контрольная работа. Состоит из титульного листа, четкой формулировки задания, описания процесса выполнения задания согласно приведенному примеру, описания процесса тестирования и подтверждения правильности программы (перечень исходных данных и полученных результатов).

2. Файл с программой. Формат – обычный текстовый файл. Файл требуется для проверки преподавателем,  правильно ли работает ваша программа.

       Для зачтения контрольной работы необходимо представить саму работу + файл. После проверки работы программы она либо отправляется обратно на доработку, либо работа считается зачтенной с определенной оценкой. На оценку влияет качество программы и ее описания в контрольной работе.

       Вопросы и прием работ по электронной почте: *****@***ru.