Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Топ:
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Устройство и оснащение процедурного кабинета: Решающая роль в обеспечении правильного лечения пациентов отводится процедурной медсестре...
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Интересное:
Национальное богатство страны и его составляющие: для оценки элементов национального богатства используются...
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Средства для ингаляционного наркоза: Наркоз наступает в результате вдыхания (ингаляции) средств, которое осуществляют или с помощью маски...
Дисциплины:
2017-12-21 | 163 |
5.00
из
|
Заказать работу |
|
|
На языке Ассемблер команда вызова процедуры имеет следующий вид:
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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!