Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

В данной СРС рассматриваются арифметические операции над без знаковыми числами



Используются следующие команды:

ADD - сложить, SUB - вычесть.

Описание команд: Работают с 8 и 16 битовыми операндами, инструкция ADD выполняет сложение операнда источника(правого операнда) с содержимым операнда приемника (левый операнд), результат помещается в операнд приемник. Инструкция SUB делает тоже самое, только она вычитает операнд источник из операнда приемника, результат помещается в операнд приемник. Операндами могут быть регистры, константы, ячейки памяти в различных комбинациях, но нельзя добавить (вычесть) значение одной ячейки памяти к другой, а так же в качестве операнда источника использовать константу (непосредственное значение. Команда воздействует на шесть флагов:AF,CF,OF,PF,SF,ZF.

Например флаг переноса CF=1 если результат действия не помещается в операнде приемнике, в противном случае CF=0.

MUL умножить.

Описание команд инструкция MUL перемножает 8 и 16 битовые безнаковые множители, создавая 16 или 32 битовое произведение. При 8 битовом произведении один из операндов в регистре AL другой может быть 8 битовым регистром общего назначения или переменной памяти соответствующего назначения. Результат помеща­ется в регистр АХ (16 битовый).При 16 битовых множителях один из сомножителей в 16 битовом регистре общего назначения другой в переменной памяти,32 битовый результат в регистрах DХ:АХ. При этом младшие 16 бит в АХ старшие в DX. Команда воздействует на два флага: СР,ОF.

DIV - разделить.

Описание команд позволяет разделить 32 битовое значение на 16 битовое значение или 16 битовое на 8 битовое. При делении 16 битового значения делимое помещается в АХ 8 битовый делитель помещается в регистр или в переменную соответствующего размера. Результат (8 битовый) помещается в AL, остаток в АН. Состояние флагов не определено, но если частное не помещается в регистре AL (АХ) процессор генерирует прерывание типа 0 (деление на 0).

В заданиях используются директивы и команды, изученные на предыдущих СРСах.

ОПИСАНИЕ ЗАДАЧИ

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

A *2 + B * С Формула вычислений: X =D-3

Приведенная Программа сначала резервирует ячейки памяти под переменные, затем выполняет умножение однобайтовых чисел (А * 2),результат умножения - двухбайтовое число в регистре АХ. Cохраняется в регистре СХ, далее выполняется умножение однобайтовых чисел (В * С), результат - двухбайтовое число хранится в аккумуляторе АХ. После сложения двух сомножителей и вычисления знаменателя (D - 3) выполняется деление. Результат присваивается переменной X.

ЗАДАНИЕ 1

1.1. Наберите приведенную программу, запишите исходный файл с расширением *.ASM. получите файл с расширением *.ЕХЕ.

1.2.Загрузите программу в отладчик DEBUG (команда DEBUG *.exe). Изучите файл помощи для работы с программой DEBUG (DEBUGRUS.HLP). Выполните программу по шагам, команда t,посмотрите, как она работает, получите результат. При выполнении программы по шагам заполните таблицу IN (где N -номер варианта программы.всего вариантов 5) таблица 1N номер шага команда АХ ВХ СХ DX CS IP DS

1.3.Выполните программу с 5 вариантами различных начальных значений переменных A,B.C,D по шагам (см. таблицу 2) и запишите результат выполнения в таблицу 2(в регистре AL - частное, АН - остаток). Переведите результат в десятичную систему.

Таблица 2

Вариант            
  А   0AH     20H
Значение B   5H     9H
  C   8H     4H
  D   9H     1CH
Частное AL          
Остаток AH          

Программа 1

:X=(A*2+B*C) (D-3)

progl

.MODEL SMALL

.STACK 100H

.DATA

A DB?

В DB?

С DB?;Резервируем память для переменных

D DB '?; A.B.C AX

X DW?

.CODE

start:

MOV AX. @DATA

MOV DS.AX

MOV A.3

MOV B.4

MOV C.2

MOV D.5

MOV AL.2

MULA

MOV CX. AX

MOV, AL.B

MULC

ADDAX,CX

MOV CL,D

SUB CL,3

DIV CL

MOV X,AX

MOV AH.4CH

INT21IH

END start

ЗАДАНИЕ 2

В определенных ячейках оперативной памяти хранится различная служебная информация, например информация о типе IBM РС, информация о дате создания программы BIOS и.т.д.(см.файл tipibm.txt). Необходимо с помощью программы DEBUG прочитать эту информацию и занести в отчет.

К отчету представить:

1. Программа 1 с комментариями.

2. Блок схему программы.

3. Заполненную таблицу1N для пошагового выполнения 5 вариантов программы.

4. Результат вычислений. заполненная таблица 2.

5. Тип машины и дата создания BIOS.

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

1. Назвать программы отладчики, их назначение, возможности.

2. Укажите отличие между директивой ассемблера и командой языка ассемблер.

3. По какому биту регистра флагов можно установить, что предшествующее вычитание привело к отрицательному результату.

4. Предположим в программе DEBUG была введена следующая команда:

-dds:02000:0000 09 56 23 46 12 44 78 DF-1C 6А 3D 42 58 68 D4 88. Напишите командy для корректировки восьмого байта информации на значение А6

5. Назначение команды IMUL и ее основное отличие от команды MUL.

6. Предположим во время отладки программы в DEBUG на экране следующая

информация:

-t

AX=2DOE BX=0000 CX=003A DX=0000 SP=0100 ВР=0000 SI=0000 DI=0000

DS=2CFA ES=2CFA SS=2DOF CS=2DOA IP=0003 NV UP El PL NZ NA PO NC

2DOA:0003 8ED8 MOV DS.AX

-q

- определите адрес памяти начала сегмента кодов;

- определите адрес памяти начала сегмента данных;

- определите исполняемый адрес выполняемой команды;

- определите содержимое регистра CL:

- определите машинный код данной команды;

- расшифруйте машинный код команды.

СРС №4





Дата публикования: 2015-10-09; Прочитано: 627 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.009 с)...