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

Деление беззнаковое

Схема команды: div делитель 

Назначение: выполнение операции деления двух двоичных беззнаковых значений.

Алгоритм работы: Для команды необходимо задание двух операндов — делимого и делителя. Делимое задается неявно и размер его зависит от размера делителя, который указывается в команде:

  • если делитель размером в байт, то делимое должно быть расположено в регистре ax. После операции частное помещается в al, а остаток — в ah;

  • если делитель размером в слово, то делимое должно быть расположено в паре регистров dx:ax, причем младшая часть делимого находится в ax. После операции частное помещается в ax, а остаток — в dx;

  • если делитель размером в двойное слово, то делимое должно быть расположено в паре регистров edx:eax, причем младшая часть делимого находится в eax. После операции частное помещается в eax, а остаток — в edx.

Применение: Команда выполняет целочисленное деление операндов с выдачей результата деления в виде частного и остатка от деления. При выполнении операции деления возможно возникновение исключительной ситуации: 0 — ошибка деления. Эта ситуация возникает в одном из двух случаев: делитель равен 0 или частное слишком велико для его размещения в регистре eax/ax/al.

        mov     ax,10234

        mov     bl,154

        div     bl      ;ah=остаток, al=частное

        

Результатом команды деления являются значения частного и остатка. Варианты местоположения и размеров операндов операции деления показаны в табл. 2.

Таблица 2. Расположение операндов и результата при делении

Делимое

Делитель

Частное

Остаток

16 бит в регистре ax

8 бит регистр или ячейка памяти

Байт  в регистре al

Байт  в регистре ah

32 бит dx — старшая часть ax — младшая часть 

Слово 16 бит регистр или ячейка памяти

Слово 16 бит в  регистре ax

Слово 16 бит в регистре dx

64 бит edx — старшая часть eax — младшая часть

Двойное слово 32 бит регистр или ячейка памяти

Двойное слово 32 бит в  регистре eax

Двойное слово 32 бит в регистре edx

Для деления чисел со знаком предназначена команда idiv (integer divide).

idiv <делитель>

Для этой команды справедливы все рассмотренные положения, касающиеся команд и чисел со знаком.

Команды логических операций

And (Логическое и)

Схема команды: and приемник,источник 

Назначение: операция логического умножения для операндов приемник и источник размерностью байт, слово или двойное слово.

Алгоритм работы:

  • выполнить операцию логического умножения над операндами источник и приемник: каждый бит результата равен 1, если соответствующие биты операндов равны 1, в остальных случаях бит результата равен 0;

  • записать результат операции в приемник;

  • установить флаги.

Применение: Команда and используется для логического умножения двух операндов. Результат операции помещается по адресу первого операнда. Эту команду удобно использовать для принудительной установки или сброса определенных битов операнда. Например, преобразуем двузначное упакованное BCD-число в его символьный эквивалент.

u_BCD   db      25h ;упакованное BCD-число

s_ch    dw      0 ;место для результата

...

        xor     ax,ax   ;очистка ax

        mov     al,u_BCD

        shl     ax,4    ;ax=0250

        mov     al,u_BCD        ;ax=0225

;преобразование в символьное представление:

        and     ax,3f3fh        ;ax=3235h

        mov     s_ch,ax

        

OR (logical OR)