Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ по Асм №1.doc
Скачиваний:
12
Добавлен:
06.02.2016
Размер:
313.86 Кб
Скачать

1.11.2. Команды деления

Как умножение, деление чисел без знака и со знаком также реализуется двумя командами:

Деление целых без знака: DIV op

Деление целых со знаком: IDIV op

Команды действуют следующим образом:

  • а) деление слова на байт (op: r8,m8)

AH:=Ax mod <op>, Al:=Ax div op

  • б) деление двойного слова на слово: (op: r16,m16)

Dx:=(Dx,Ax) mod <op>, Ax:=(Dx,Ax) Div <op>

Примечание: При выполнении команды деления возможно появление ошибки с названием «деление на 0 или переполнение ». Она возникает в двух случаях:

-делитель равен 0 (ор=0);

-не полное частное не вмещается в отведённое ему место (например, при делении слова=600 на байт =2 результат типа байт =300 не войдет в AL)

При такой ошибке ПК прекращает выполнение программы.

1.12. Изменение размеров числа

Зачастую приходится увеличивать размер числа. Например, если необходимо сложить число, размером в слово, с числом размером в байт; таких команд в ПК нет, поэтому следует увеличить байт до слова. Если число трактуется как беззнаковое, то слева добавляются нули. А если число трактуется как знаковое, то в этом случае следует посмотреть на его знак и добавлять нули, если число 0 и FFh , если число < 0.

Для осуществления расширения числа типа Byteсо знаком в ЯА используется команда:

Расширение байта до слова:CBW

В этой команде операнд берётся из AL, а результат записывается в AX, т.е.

Флаги эта команда не меняет.

Аналогичная команда осуществляет расширение знакового числа из слова до двойного слова: AX (Dx, Ax)

Расширение слова до двойного слова: CWD

Действие команды:

  1. Задание

Из таблицы 1 взять задание и написать программу, вычисляющую значение переменной R при указанных значениях.

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

  1. Что такое регистр? Какие регистры Вы знаете?

  2. Какие размеры данных Вы знаете?

  3. Для чего используются флаги?

  4. Каким образом хранятся в компьютере положительные и отрицательные числа, символы?

  5. Что такое идентификатор? По каким правилам он строится?

  6. Как строятся комментарии?

  7. Опишите общие правила построения команды в ЯА?

  8. Что такое директивы? Для чего они применяются?

  9. Какие директивы используются для описания данных и констант?

  10. Как записывается операнд-конструкция повторения?

  11. Какие команды пересылки Вы знаете?

  12. Расскажите о командах сложения и вычитания? В чем отличие команд сложения и вычитания, учитывающих значение флага CF, где они применяются?

  13. Различают ли команды сложения и вычитания знаковых и беззнаковых чисел?

  14. Расскажите о командах умножения и деления? Почему в этих командах один операнд?

  15. Каким образом можно изменить размер числа? В каких случаях это может пригодиться?

Литература

  1. Бредли Д. Програмирование на языке ассемблера для персональной ЭВМ фирмы IBM: Пер. в англ.- М.: Радио и связь, 1988. –448 с.

  2. Скэнлон Л. Персональные ЭВМ IBM РС и ХТ. Програмирование на языке ассемблера: Пер. с англ. – М.: Радио и связь, 1991. –336 с.

  3. Абель П. Язык Ассемблера для IBM РС и програмирования: Пер. с англ. – М.: Высшая школа, 1992. –477 с.

  4. Нортон П., Сохуэ Д. Язык ассемблера для IBM РС: Пер. с англ. – М.: Издательство «Компьютер»; Финансы и статистика, 1992. –352 с.

  5. Использование Turbo Assembler при разработке программ. – Киев: «Диалектика», 1994. –228 с.

  6. Лямин Л. В. Макроассемблер MASM. – М.: Радио и связь, 1994. –320 с.

  7. Пильщиков В.Н. Програмирование на языке ассемблера IBM РС. – М.: «ДИАЛОГ-МИФИ», 1996. –288 с.

  8. Майко Г.В. Ассемблер для IBM РС: - М.: «Бизнес-Информ», «Сирин» 1997.-212 с.

Таблица 1

1

R=x2+y2,где x=a+b-c, y=b·c-a b=8, 106; a=30, 250;

c=7, -3

2

R=x-y·z, где x=m-n, y=m+n, z=m·n-1 m=16,80; n=3,180

3

R=x+y-z, где x=m·n, y=m+n, z=m-n2 m=25,190; n=4,-60

4

R=x2-x·y, где x=m+n, y=m-n, z=x+y m=42,-15; n=15,51

5

R=x+y2-z, где x=3·m-h, y=m+3·n, m=8·n-15;

z=3·x+y n=12 и 200

6

R=m·x+y+n·z, где a=m+m·r, y=n2+m2 m=3,-1; n=8,36

7

R=x·z-y, где x=m-2·r, y=m+2·n m=6,50; n=10,300

8

R=m·x+y2, где x=m+n, y=m-2·n m=42,-15; n=15,51

9

R=m·x+y·z-n, x=m+2·n, y=2·m-n m=6 и 380;

z=x+y n=18 и 254

10

R=x-y-z, где x=m+n2, y=m2+n, m=3,-16;

z=m2-n2 n=12,256

11

R=(x+y)·2 m=3,-19; n=24,260