Скачать презентацию Компьютерные основы программирования Представление программ часть1 Лекция 5 Скачать презентацию Компьютерные основы программирования Представление программ часть1 Лекция 5

Lektsia_5_predstavlenie_programm_na_mashinnom_urovne_2_2017.ppt

  • Количество слайдов: 62

Компьютерные основы программирования Представление программ часть1 Лекция 5, 16 марта 2017 Лектор: Чуканова Ольга Компьютерные основы программирования Представление программ часть1 Лекция 5, 16 марта 2017 Лектор: Чуканова Ольга Владимировна Кафедра информатики 602 АК ovcha@mail. ru

Форматы данных Форматы данных

Формы операндов Формы операндов

mov eax, 4050 h mov esp, ebp mov eax, [edi+ecx] mov [esp], -17 mov mov eax, 4050 h mov esp, ebp mov eax, [edi+ecx] mov [esp], -17 mov [ebp – 12], eax

mov mov mov edx, dword ptr [ebp + 8] ecx, dword ptr [ebp + mov mov mov edx, dword ptr [ebp + 8] ecx, dword ptr [ebp + 12] ebx, dword ptr [edx] eax, dword ptr [ecx] dword ptr [edx], eax dword ptr [ecx], ebx

0 х100 0 х. АВ 0 х108 0 х. FF 0 x. AB 0 0 х100 0 х. АВ 0 х108 0 х. FF 0 x. AB 0 x 11 0 x 13 0 x. FF 0 x 11

mov ax, word ptr [bp+6] mov dx, 12 imul dx mov ax, word ptr [bp+6] mov dx, 12 imul dx

int log(int x, int y){ int t 1, t 2, mask, rval; t 1=x^y; int log(int x, int y){ int t 1, t 2, mask, rval; t 1=x^y; t 2=t 1>>5; mask=(1<<8) - 7; rval=t 2 & mask; return t 2; } log proc push mov sub mov xor mov sar mov and mov pop ret far bp bp, sp sp, 6 ax, word ptr [bp+6] ax, word ptr [bp+8] cl, 5 ax, cl word ptr [bp-4], 249 ax, word ptr [bp-4] sp, bp bp

Специальные арифметические операции Специальные арифметические операции

Примеры Примеры

Регистр флагов (EFlags) Регистр флагов (EFlags)

Флаги состояния (Status Flags) № бита Мнемо ника Флаг Содержание и назначение cf Carry Флаги состояния (Status Flags) № бита Мнемо ника Флаг Содержание и назначение cf Carry Flag 1 - арифметическая операция произвела перенос из старшего бита результата. Старшим является 7 -й, 15 -й или 31 -й бит в зависимости от размерности операнда; 0 - переноса не было. 2 pf Parity Flag Этот флаг - только для 8 младших разрядов операнда любого размера. 1, когда 8 младших разрядов результата содержат четное число единиц; 0, когда 8 младших разрядов результата содержат нечетное число единиц. 4 Auxiliary carry Flag 0 6 7 11 af zf Zero Flag 1 - результат нулевой; 0 - результат ненулевой. sf Sign Flag Отражает состояние старшего бита результата (биты 7, 15 или 31 для 8, 16 или 32 -разрядных операндов соответственно). of Overflow Flag Фиксирует факт потери значащего бита при арифметических операциях. 1 - произошел перенос(заем) из(в) старшего или знакового бита; 0 – произошел перенос(заем) из(в) старшего и знакового бита или переноса не было. 12 iopl 13 14 Только для команд, работающих с ВСD-числами: 1 - в результате операции сложения был произведен перенос из разряда 3 в старший разряд или при вычитании был заем в разряд 3 младшей тетрады из значения в старшей тетраде; 0 -переносов не было. Input/Output Privilege Level nt Nested Task Используется в защищенном режиме работы микропроцессора для контроля доступа к командам ввода-вывода в зависимости от уровня привилегий задачи. Используется в защищенном режиме работы микропроцессора для фиксации того факта, что одна задача вложена в другую.

Примеры: xor mov add ax, ax al, 64 xor mov add ax, ax al, Примеры: xor mov add ax, ax al, 64 xor mov add ax, ax al, 128 xor mov add ax, ax al, 192 010000000 cf=0 pf=0 zf=0 sf =1 of=1 10000000 (1)0000 cf=1 pf=1 zf=1 sf=0 of=0 11000000 (1)10000000 cf=1 pf=0 zf=0 sf=1 of=1

Команды установки байта по условию SETccc операнд Команды проверяют условие, заданное модификатором ссc в Команды установки байта по условию SETccc операнд Команды проверяют условие, заданное модификатором ссc в коде операции (фактически, состояние флагов) и устанавливают операнд логическим значением 1 или 0 в зависимости от истинности условия. Команды Setccc можно использовать после любой команды, изменяющей флаги, при необходимости анализа результата изменения. Если проанализировать условия для команд Jccc, то обнаружится их полное соответствие с условиями, обрабатываемыми командами Jccc.

SETccc Команда seta/setnbe setae/setnb setb/setnae setbe/set setc sete/setz setg/setnle setge/setnl setl/setnge Условие cf=0 и SETccc Команда seta/setnbe setae/setnb setb/setnae setbe/set setc sete/setz setg/setnle setge/setnl setl/setnge Условие cf=0 и zf=0 cf=1 или zf=1 cf=1 zf=0 или sf=of sf≠of R 8 M 8 Команда setle/setng setnc setne/setnz setno setnp/setpo setns seto setp/setpe sets Условие zf=1 или sf≠of cf=0 zf=0 of=0 pf=0 sf=0 of=1 pf=1 sf=1

 • _qt proc far • push bp • mov bp, sp • mov • _qt proc far • push bp • mov bp, sp • mov ax, word ptr [bp+6] • cmp ax, word ptr [bp+8] • jle short @1@86 • mov ax, 1 • jmp short @1@114 • @1@86: • xor ax, ax • @1@114: • pop bp • ret

 • _absd • push • mov • cmp • jle • mov • • _absd • push • mov • cmp • jle • mov • sub • jmp • @1@86: • mov • sub • @1@114: • pop • ret proc far bp bp, sp dx, word ptr [bp+6] bx, word ptr [bp+8] dx, bx short @1@86 ax, dx ax, bx short @1@114 ax, bx ax, dx bp

 • _absd 1 • push • mov • sub • mov • cmp • _absd 1 • push • mov • sub • mov • cmp • jle • mov • sub • jmp • @1@86: • mov • sub • @1@114: • mov • pop • ret proc far bp bp, sp sp, 2 dx, word ptr [bp+6] bx, word ptr [bp+8] dx, bx short @1@86 ax, dx ax, bx short @1@114 ax, bx ax, dx sp, bp bp