Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 10 лет назад пользователемМихаил Чурин
2 Основные команды ассемблера Пересылки данныхАрифметическиеЛогические Передачи управления Обработки цепочек Управления работой ЦП
3 Команды пересылки данных Общего назначения Работы с адресами Работы со стеком Преобразования данных MovLeaPuchXlat XchgLssPop LdsPucha LesPopa LfsPuchf LgsPopf
4 Инструкция MOV I8,16,32 R8,16,32 M8,16,32 Sr MOVI8,16,32 M8,16,32R8,16,32 Sr R16 Sr M16
5 Инструкция обмена данными R8,16,32 XCHGM8,16,32 R8,16,32
6 Инструкция обмена данными R8,16,32 XCHGM8,16,32 R8,16,32 Инструкции загрузки адреса LEAR16M8,16,32 LSS LDSR16M32 LES
7 Инструкции работы со стеком I16,32 R16,32 pushpopM16,32 SR
8 Инструкция перекодировки xlat 16-е число … BX AL … Таблица перекодировки Tpdb ABCDEF Adb14
9 Инструкция перекодировки xlat … 67 BX AL … Таблица перекодировки Leabx,Tp Moval,A
10 Инструкция перекодировки xlat 14 Адрес таблицы перекодировки … 67 BX AL … Таблица перекодировки Xlat es:Tp
11 Инструкция перекодировки xlat E 14 Адрес таблицы перекодировки … 67 BX AL … Таблица перекодировки
12 Арифметические команды Преобразования типов Двоичной арифметики Десятичной арифметики Прочие CbwAddImulAaaCmp CwdAdcMulDaaSetcc CwdeIncIdivAas CdqSubDivDas MovsxSbbNegAam MovzxDecAad
13 Преобразование Байта в слово ah al Слова в двойное слово –Cwd: ax dx –Cwde: ax eax Двойного слова в учетверенное –Cdq:eax edx ******* ******* cbw Пересылка
14 Преобразование Байта в слово ah al Слова в двойное слово –Cwd: ax dx –Cwde: ax eax Двойного слова в учетверенное –Cdq:eax edx ******* ******* cbw R8 R16 M8 с учетом знака movsx movsx, movzx R8,16 без учета знака movzx R32 M8,16 Пересылка
15 Двоичная арифметика Inc – увеличение на 1 *) Dec – уменьшение на 1 *) Neg – смена знака *) Не изменяет флага cf. inc dec neg R8,16,32 M8,16,32
16 Сложение, вычитание сравнение Add i8,16,32 Adc r8,16,32 Sub m8,16,32 Sbb i8,16,32 m8,16,32 Cmp r8,16,32
17 Пример cfah al Mov ax, Add al, Adc ah, Adc ah,
18 Умножение, деление mul div imul idiv R8,16,32 M8,16,32 Второй сомножитель или делитель Тип операнда Первый сомножитель РезультатДелимое Результат ЧастноеОстаток 8alax alah 16axdx:ax axdx 32eaxedx:eax eaxedx Делитель 0 или частное велико – исключительная ситуация
19 Десятичная арифметика ИмяСодержание Для неупакованных BCD чисел в регистре al AaaASCII-коррекция после сложения AasASCII-коррекция после вычитания AamASCII-коррекция после умножения AadASCII-коррекция перед делением Для упакованных BCD чисел в регистре al DaaДесятичная коррекция после сложения DasДесятичная коррекция после вычитания
20 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
21 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 **
22 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
23 КомандаУсловиеКомандаУсловие 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
24 Логические команды ЛогическиеОбработки битСдвига AndBsfSar OrBsrSal XorBtShl NotBtcShr TestBtrShld BtsShrd Rcl Rcr Rol Ror
25 Побитовые булевские операции 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
26 Операции с битами R16,32 Bsf / BsrR16,32 M16,32 R16,32 Bt/Btc/Bts/Btr M16,32i8
27 Примеры 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
28 Операции сдвига R8,16,32I3,4,5 sal/sar shl/shr rol/ror rcl/rcr M8,16,32cl R16,32I4,5 shld/shrdR16,32 M16,32cl
29 sal,shlcf ****…*** 0 shr0 ****…*** cf sar****…*** cf rolcf ****…*** ror****…*** cf rclcf ****…*** rcr****…*** cf
30 Команды передачи управления Безусловная Взаимодействия с процедурами УсловныеЦиклы JmpCallJl=JngeJcJncLoop RetJle=JngJpJnpLoope Jg=JnleJzJnzLoopz IntJge=JnlJsJnsLoopne IretJb=JnaeJoJnoLoopnz Jbe=Jna Ja=JnbeJcxz Jae=JnbJecxz «выше» - «ниже» - для чисел без знака «больше» - «меньше» - для чисел со знаком
31 Операторы перехода по условию Jxx Loop Short Loopz/Loope Loopnz/Loopne cx 0 cx 0 & zf = 1 cx 0 & zf = 0 loop cx=… jcxz cx=0
32 Инструкции передачи управления Short Метка Far ptr Jmp R16,32 Call Word ptr M16,32 Dword ptr i4 Ret При передаче управления вперед Идентификатор – имя переменной, а не метка
33 Инструкции работы с прерываниями Int i8 – вызов процедуры обслуживания прерывания с номером, заданным операндом команды: pushfcli puch csjmp … push ip Iret – возврат из программы обработки прерывания в прерванную программу: pop ippopf pop csjmp …
34 Команды работы с цепочками ПересылкаСравнениеСканированиеЗагрузкаСохранение MovsCmpsScasLodsStos MovsbCmpsbScasbLodsbStosb MovswCmpswScaswLodswStosw MovsdCmpsdScasdLodsdStosd RepRepzRepe RepnzRepne
35 ИсточникПриемникРезультат 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
36 .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 Результат:
37 Команды управления ЦП Флаг переноса Флаг направления Флаг прерываний Регистр флагов StcStdStiLahf ClcCldCliSahf Cmc
38 Загрузка регистра флагов LAHF – в регистр AHSAHF – из регистра AH AH FLAGSsfzfafpfcf AL
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.