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

Презентация:



Advertisements
Похожие презентации
Архитектура ЭВМ Практика 3. Линейные программы на языке ассемблера.
Advertisements

Учебный курс Архитектура ЭВМ и язык ассемблера Лекция 3 заместитель министра связи и массовых коммуникаций РФ, старший преподаватель Северов Дмитрий Станиславович.
Программирование на Ассемблер к.т.н., доц. Красов А.В. Лекция 4 ФакультетМТС Курс3 Семестр6 Форма контролязачет Лекции14 часов Лабораторные работы12 часов.
Арифметическиеи логические команды языка Ассемблер. Битовые команды.
Микропроцессоры и микропроцессорные системы. 1. Пересылка данных MOV приемник, источник- Пересылка данных Базовая команда пересылки данных. Копирует содержимое.
1 Системное программное обеспечение Лекции: Ассемблер, система прерываний, основы построения компиляторов, ассемблер «под Windows» Семинары: подготовка.
С ИСТЕМА КОМАНД ЕОМ. С ТРУКТУРА ТА ФОРМАТИ КОМАНД.
Организация циклов в Ассемблере. Цикл – это многократно повторяющаяся последовательность операторов.
1 Лекция 1 Система команд универсальных микропроцессоров Лектор: Люличева И.А.
N – входной блок (64 бита) X – раундовый ключ (32 бита) H – таблица замен.
Циклы в языке Ассемблер.. Цикл со счетчиком Цикл со счетчиком можно организовать с помощью конструкций IF и GOTO. В нашем примере тело цикла должно повторяться.
Архитектура ЭВМ Практика 4. Программы с ветвлениями.
1 Лекция 1 Система команд универсальных микропроцессоров Лектор: Люличева И.А.
Язык ASSEMBLER Команды пересылки данных Лекция доцента кафедры ИВТ ГрГУ кандидата технических наук Ливак Е.Н.
Intel архитектура IA16 Основа большинства современных компьютеров.
Программирование на Ассемблер к.т.н., доц. Красов А.В. Лекция 6 ФакультетМТС Курс3 Семестр6 Форма контролязачет Лекции14 часов Лабораторные работы12 часов.
Программирование на Ассемблер к.т.н., доц. Красов А.В. Лекция 2 ФакультетМТС Курс3 Семестр6 Форма контролязачет Лекции14 часов Лабораторные работы12 часов.
Программирование на языке ассемблер (Assembler)
Машинное кодирование Лекция 3 Логические операции:
Числа со знаком и дополнительный код Синтаксис FASM Для записи отрицательного числа в программе на ассемблере используется символ -, например: x db -5.
Транксрипт:

Основные команды ассемблера Пересылки данныхАрифметическиеЛогические Передачи управления Обработки цепочек Управления работой ЦП

Команды пересылки данных Общего назначения Работы с адресами Работы со стеком Преобразования данных MovLeaPuchXlat XchgLssPop LdsPucha LesPopa LfsPuchf LgsPopf

Инструкция MOV I8,16,32 R8,16,32 M8,16,32 Sr MOVI8,16,32 M8,16,32R8,16,32 Sr R16 Sr M16

Инструкция обмена данными R8,16,32 XCHGM8,16,32 R8,16,32

Инструкция обмена данными R8,16,32 XCHGM8,16,32 R8,16,32 Инструкции загрузки адреса LEAR16M8,16,32 LSS LDSR16M32 LES

Инструкции работы со стеком I16,32 R16,32 pushpopM16,32 SR

Инструкция перекодировки xlat 16-е число … BX AL … Таблица перекодировки Tpdb ABCDEF Adb14

Инструкция перекодировки xlat … 67 BX AL … Таблица перекодировки Leabx,Tp Moval,A

Инструкция перекодировки xlat 14 Адрес таблицы перекодировки … 67 BX AL … Таблица перекодировки Xlat es:Tp

Инструкция перекодировки xlat E 14 Адрес таблицы перекодировки … 67 BX AL … Таблица перекодировки

Арифметические команды Преобразования типов Двоичной арифметики Десятичной арифметики Прочие CbwAddImulAaaCmp CwdAdcMulDaaSetcc CwdeIncIdivAas CdqSubDivDas MovsxSbbNegAam MovzxDecAad

Преобразование Байта в слово ah al Слова в двойное слово –Cwd: ax dx –Cwde: ax eax Двойного слова в учетверенное –Cdq:eax edx ******* ******* cbw Пересылка

Преобразование Байта в слово ah al Слова в двойное слово –Cwd: ax dx –Cwde: ax eax Двойного слова в учетверенное –Cdq:eax edx ******* ******* cbw R8 R16 M8 с учетом знака movsx movsx, movzx R8,16 без учета знака movzx R32 M8,16 Пересылка

Двоичная арифметика Inc – увеличение на 1 *) Dec – уменьшение на 1 *) Neg – смена знака *) Не изменяет флага cf. inc dec neg R8,16,32 M8,16,32

Сложение, вычитание сравнение Add i8,16,32 Adc r8,16,32 Sub m8,16,32 Sbb i8,16,32 m8,16,32 Cmp r8,16,32

Пример cfah al Mov ax, Add al, Adc ah, Adc ah,

Умножение, деление mul div imul idiv R8,16,32 M8,16,32 Второй сомножитель или делитель Тип операнда Первый сомножитель РезультатДелимое Результат ЧастноеОстаток 8alax alah 16axdx:ax axdx 32eaxedx:eax eaxedx Делитель 0 или частное велико – исключительная ситуация

Десятичная арифметика ИмяСодержание Для неупакованных BCD чисел в регистре al AaaASCII-коррекция после сложения AasASCII-коррекция после вычитания AamASCII-коррекция после умножения AadASCII-коррекция перед делением Для упакованных BCD чисел в регистре al DaaДесятичная коррекция после сложения DasДесятичная коррекция после вычитания

AAA и AAS: примеры mov ax,8 add al,5 aaa mov ax,18 add al,9 aaa mov ax,18 sub al,9 aas dal > 9, af = af = cf = af = af = cf = faf = af = cf = 1

AAM и AAD: примеры mov al,9 mov bl,9 mul bl aam mov al,99 aam mov ax,0703h aad mov bl,9 div bl mov ax,99 aad sub al,10h ** 09 **

DAA и DAS: примеры mov ax,44h add al,37h daa Mov ax,57h sub al,19h das Mov ax,88h add al,12h daa Mov ax,88h sub al,99h das Bal l > 9, af= af = Eaf = Aal l > af = cf = EFaf = cf = af = cf =1

КомандаУсловиеКомандаУсловие seta/setnbecf=0 и zf=0setle/setngzf=1 или sfof setae/setnbcf=0setnccf=0 setb/setnaecf=1setne/setnzzf=0 setbe/setcf=1 или zf=1setnoof=0 setccf=1setnp/setpopf=0 sete/setzzf=1setnssf=0 setg/setnlezf=0 или sf=ofsetoof=1 setge/setnlsf=ofsetp/setpepf=1 setl/setngesfofsetssf=1 R8 M8 SETcc

Логические команды ЛогическиеОбработки битСдвига AndBsfSar OrBsrSal XorBtShl NotBtcShr TestBtrShld BtsShrd Rcl Rcr Rol Ror

Побитовые булевские операции i8,16,32 And r8,16,32 Or m8,16,32 Xor i8,16,32 Test m8,16,32 r8,16,32 устанавливает флаг zf без формирования результата and Not r8,16,32 m8,16,32

Операции с битами R16,32 Bsf / BsrR16,32 M16,32 R16,32 Bt/Btc/Bts/Btr M16,32i8

Примеры Adw0000h Bdw0110h ….386 bsfax,A bsfax,B bsr ax,B bt b,ax btc b,ax btr b,4 bts b,1 zf=1 ax=4, zf=0 ax=8, zf=0 cf=1 cf=1, b=0010h cf=1, b=0000h cf=0, b=0002h

Операции сдвига R8,16,32I3,4,5 sal/sar shl/shr rol/ror rcl/rcr M8,16,32cl R16,32I4,5 shld/shrdR16,32 M16,32cl

sal,shlcf ****…*** 0 shr0 ****…*** cf sar****…*** cf rolcf ****…*** ror****…*** cf rclcf ****…*** rcr****…*** cf

Команды передачи управления Безусловная Взаимодействия с процедурами УсловныеЦиклы JmpCallJl=JngeJcJncLoop RetJle=JngJpJnpLoope Jg=JnleJzJnzLoopz IntJge=JnlJsJnsLoopne IretJb=JnaeJoJnoLoopnz Jbe=Jna Ja=JnbeJcxz Jae=JnbJecxz «выше» - «ниже» - для чисел без знака «больше» - «меньше» - для чисел со знаком

Операторы перехода по условию Jxx Loop Short Loopz/Loope Loopnz/Loopne cx 0 cx 0 & zf = 1 cx 0 & zf = 0 loop cx=… jcxz cx=0

Инструкции передачи управления Short Метка Far ptr Jmp R16,32 Call Word ptr M16,32 Dword ptr i4 Ret При передаче управления вперед Идентификатор – имя переменной, а не метка

Инструкции работы с прерываниями Int i8 – вызов процедуры обслуживания прерывания с номером, заданным операндом команды: pushfcli puch csjmp … push ip Iret – возврат из программы обработки прерывания в прерванную программу: pop ippopf pop csjmp …

Команды работы с цепочками ПересылкаСравнениеСканированиеЗагрузкаСохранение MovsCmpsScasLodsStos MovsbCmpsbScasbLodsbStosb MovswCmpswScaswLodswStosw MovsdCmpsdScasdLodsdStosd RepRepzRepe RepnzRepne

ИсточникПриемникРезультат CmpsDs:siEs:di Cf, zf, si,di 1 LodsDs:siEax/ax/al Ds:[si] al, si 1 ПриемникИсточникРезультат MovsEs:diDs:si [si] [di], si,di 1 ScasEs:diEax/ax/al Zf, di 1 StosEs:diEax/ax/al al [di], di 1 Movs Cmpssourcedest Scas Lods Stos dest source dest source

.model small.stack 256.data adb' ','$ bdb' ','$'.code mainproc assume mov mov ds,ax mov es,ax mov ah,9 lea dx,b int 21h lea si,a lea di,b mov cx,10 rep movsb mov ah,9 lea dx,b int 21h.exit 0 mainendp endmain Результат:

Команды управления ЦП Флаг переноса Флаг направления Флаг прерываний Регистр флагов StcStdStiLahf ClcCldCliSahf Cmc

Загрузка регистра флагов LAHF – в регистр AHSAHF – из регистра AH AH FLAGSsfzfafpfcf AL