Команды вызова процедуры или возврата из процедуры. — КиберПедия 

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Команды вызова процедуры или возврата из процедуры.

2017-12-21 163
Команды вызова процедуры или возврата из процедуры. 0.00 из 5.00 0 оценок
Заказать работу

На языке Ассемблер команда вызова процедуры имеет следующий вид:

Callop1.

Еслиop1 = i16, r16, m16, то это близкий вызов процедуры.

Команда вызова процедур по-другому, называется командами перехода с запомненными точками возврата [4].

Битовые операции в языке Ассемблер.

Логические операции с битами- OR, XOR, NOT, AND. Эти команды работают с приемником и источником, исключение команды ‘ NOT ’. Каждый бит в приемнике сравнивается с тем же самым битом в источнике, и в зависимости от команды 0 и 1 помещается в бит приемник:

 

Команда AND OR XOR NOT
Бит источника                            
Бит приемника                         X X
Бит результата                            

 

Для выполнения операции логического И предназначена команда AND. У этой команды 2 операнда, результат помещается на место первого операнда. Часто эта команда используется для обнуления определённых битов числа. При этом второй операнд называют маской. Обнуляются те биты операнда, которые в маске равны 0, значения остальных битов сохраняются.
ЛогическоеИЛИ вычисляется с помощью команды OR. У этой команды тоже 2 операнда и результат помещается на место первого. Часто эта команда используется для установки в 1 определённых битов числа. Если бит маски равен 1, то бит результата будет равен 1, остальные биты сохранят свои значения.

Обозначение операции в комментарии к первой строке используется во многих языках высокого уровня. Часто XOR используется для обнуления регистров. Если операнды равны, то результат операции равен 0. Такой способ обнуления работает быстрее и, в отличии от команды MOV, не содержит непосредственного операнда, поэтому команда получается короче (и не содержит нулевых байтов).

Каждый бит операнда меняет своё значение на противоположное (0- 1, 1- 0).

Операция выполняется с помощью команды NOT. У этой команды только один операнд. Результат помещается на место операнда. Эта команда не изменяет значение флагов.

Ещё одна команда сравнения- TEST. Команда TEST выполняет операцию AND с двумя операндами и в зависимости от результата устанавливает или сбрасывает соответствующие флаги. Результат не сохраняется. TEST используется для проверки бит, например в регистре:

Test eax, 100b

jnz смещение

Команда jnz выполнит переход, если в регистре eax третий бит справа- установлен. Очень часто команду testиспользуют для проверки, равен ли регистр нулю:

Testecx, ecx

jz смещение

Команда jz выполнит переход, если ecx =0 [8].

Примеры использования битовых операций.

Примеры с использованием командыOR:

Установить 3 и 0 биты в регистре al, остальные биты не изменять.

oral, 00001001b

Допустим:

al, 11000011, тогда 3 и 0 биты будут равняться 1,т.к.:

Таким образом, операция OR служит для установки бита в 1.

 

Пример с использованием командыAND:

Сбросить 4 и 6 биты в регистре al, остальные биты не изменять.

andal, 10101111

Допустим:

al, 1101000, тогда 4 и 6 биты сбросятся до 1, т.к.:

 

Таким образом, операция ANDслужит для сбрасывания каких-то определённых битов.

 

Пример с использованием команды NOT:

Посчитать число единицы в регистре al, рассматривая байт, как набор бит.

movcx, b:число сдвига

xorbl, bl:обнуление Bl

LL: shlal, 1:сдвиг влево на один разряд

jncNO:переход, если нет переноса

incbl:иначе увеличитьBl

NO: loopLL:возврат, если сх 0

Получается, что команда NOTсчитает число единиц в регистре, при этом рассматривая байт, как набор битов.

 

Пример с использованием команды XOR:

Инвертировать 2 и 4 биты в регистре al, остальные биты не изменять.

xoral, 00010100b

Допустим al, 00001111

Из этого следует, что команда XORинвертирует биты в регистре.

 

Пример с использованием команды TEST:

Дан массив из 10 байт. Все байты имеют нулевые старшие биты. Необходимо каждый байт содержащий единицу в нулевом бите дополнить до чётного числа единиц установкой седьмого бита.

data segment

NB db 04h, 07h, 14h, 23h, 04h, 38h, 3Fh, 2Ah0Dh, 34h

data ends

code segment

assumecs: code, ds:data

start: mov ax, data

movds, ax;загрузитьсегментныйадресданных

leabx, NB;bx-текущий адрес массиваNB

movcx, 10;cx-счетчик числа интерации

BEG: moval, [bx];считать очередной байт массива

testal, 1b;установлен ли бит 0?

jzBITOCLR;нет, бит 0 сброшен

;бит 0 установлен

testal, ffh;четное число единиц?

jpOK;да, больше ничего делать не надо

oral, 80h;нечетное дополнить до четного

jmpshortOK;бит 0 сброшен

BITOCLR: testal, ffh;четноечислоединиц?

jnpOK;нет, больше делать не нужно

oral, 80h;нечетное дополнить до четного

OK: mov [bx], al;записать измененный байт массива

loopBEG

QUIT: movax, 4c00h;код завершения 0

int 21h;выход в DOS

codeends

endstart

 

 

Практический раздел

2.1 Индивидуальное задание практической части

Задача:

Дан массив из 8 байт. Рассматривая его как массив логических значений (trueесть не нулевые биты в байте, falseвсе биты нулевые), вычислить логическую формулу:

Решение:

include io.asm

data segment

masdb 8 dup (?);исходный массив

xdb 8 dup (?)

fdw?

data ends

code segment

assumeCS:code,ds:data

start: movax,data

movds,ax;загрузить сегментный адрес данных

;ввод элементов массива

movcx,8

movbx, offsetmas;перенос первых байтов массива в ячейку bx

m4: inintax;ввод знака целого числа

mov [bx],al;переходим в [bx],адрес которого лежит в al

incbx;увеличение значенияbx в регистре

loopm4;возвращение на метку m4

mov cx,8

movbx,offsetmas;вbxзаписывается адрес начала mas

xorsi,si; обнулениеsi

m3: moval,[bx];вal записывается начала массива [bx]

cmpal,0;сравнение al с 0

jem1;прыжок на метку m1

movx[si],1;записывание 1 в x[si]

jmpm2;выполнение условного перехода на метку m2

m1: movx[si],0;записывание 0 в x[si]

; outintx[si],2;вывод целого числа

m2: incbx;увеличение значенияbxв регистре

incsi;увеличение значения siв регистре

loopm3;возвращение к метке m3

xoral,al;обнулениеal

moval,x[7];занесли в al значение х[7]

andal,x[6];х[7]and x[6]

andal,x[1];х[6] and [1]

movah,x[6];занесли в аh значение х[6]

andah,x[4];х[6] and х[4]

andah,x[2];х[4] and х[2]

andah,x[1];х[2] and х[1]

andah,x[0];х[1] and х[0]

movbl,x[7];занесли в bl значение х[7]

andbl,x[6];х[7] and х[6]

andbl,x[3];х[6] and х[3]

andbl,x[1];х[3] and х[1]

oral,ah

oral,bl

cbw;расширение байта до ворда

movf,ax;переходим с ах на f

outintf;вывод результата f

finish;завершение программы

;стандартное завершение программы

;mov ah,4ch

;int 21h

code ends

endstart

 

 

 

Заключение

В ходе выполнения курсовой работы были изучены основные сведения о языке Ассемблер.В основные сведения входилиструктура и компоненты программы на Ассемблере, формат команд, представление данных в памяти,режим адресации,рассмотрение программ-дизассемблер и др.

Повторили виды битовых операций,логику и формат логических команд Ассемблера.

Рассмотрели примеры использования логических команд в Ассемблере.

Сделали решение и описание задачи.Предоставили скрин индивидуального задания с применением логических битовых операций в Ассемблере.

Все поставленные задачи решены.

 

Списоклитературы

1. http://progopedia.ru/language/assembler/

2. Аблязов Р.- Программирование на Ассемблере на платформе х86,х64, 2011 г.

3. Столяров А.- Программирование на языке Ассемблера Nasm для OCUnix, 2011 г.

4. Владислав Пирогов.- Ассемблер и дизассемблирование. 2006 г.,464 стр.

5. Калашников О.А.- Ассемблер? Это просто!, 2008 г.

6. https://bobych.ru/lection/informatika/glava2.html

7. Вострикова З.П.- Программирование на языке ассемблера ЕС ЭВМ. М.: Наука, 1985г.

8. Юров В., Хорошенко С., Assembler: учебный курс. 2000 г., 672 стр.


Поделиться с друзьями:

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.031 с.