Компьютерные основы программирования Представление программ часть1
Форматы данных
Формы операндов
Специальные арифметические операции
Примеры
Регистр флагов (EFlags)
Флаги состояния (Status Flags)
Примеры:
Команды установки байта по условию
3.95M
Категория: ПрограммированиеПрограммирование

Основы ассемблера: регистры, операнды, пересылки. Компьютерные основы программирования. Представление программ, часть 1

1. Компьютерные основы программирования Представление программ часть1

Лекция 5, 16 марта 2017
Лектор: Чуканова Ольга
Владимировна
Кафедра информатики
602 АК
[email protected]

2.

3.

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

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

6.

7.

8.

9.

10.

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

11.

mov
mov
mov
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

12.

13.

14.

15.

16.

17.

18.

19.

20.

21.

22.

23.

24.

25.

26.

27.

0х100
0хАВ
0х108
0хFF
0xAB
0x11
0x13
0xFF
0x11

28.

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

29.

30.

31.

32.

33.

34.

35.

36.

37.

38.

int log(int x, int y){
int t1,t2,mask, rval;
t1=x^y;
t2=t1>>5;
mask=(1<<8) - 7;
rval=t2 & mask;
return t2;}
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

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

40. Примеры

41.

42.

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

44. Флаги состояния (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
Используется в защищенном режиме работы микропроцессора
для контроля доступа к командам ввода-вывода в зависимости
от уровня привилегий задачи.
Используется в защищенном режиме работы микропроцессора для
фиксации того факта, что одна задача вложена в другую.

45. Примеры:

xor
mov
add
ax,ax
al,64
al,64
xor
mov
add
ax,ax
al,128
al,128
xor
mov
add
ax,ax
al,192
al,192
01000000
01000000
10000000
cf=0 pf=0 zf=0 sf =1 of=1
10000000
10000000
(1)00000000
cf=1 pf=1 zf=1 sf=0 of=0
11000000
11000000
(1)10000000
cf=1 pf=0 zf=0 sf=1 of=1

46.

47.

48. Команды установки байта по условию

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

49.

50.

SETccc
Команда
seta/setnbe
setae/setnb
setb/setnae
setbe/set
setc
sete/setz
setg/setnle
setge/setnl
setl/setnge
Условие
cf=0 и zf=0
cf=0
cf=1
cf=1 или zf=1
cf=1
zf=1
zf=0 или sf=of
sf=of
sf≠of
R8
M8
Команда
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

51.

52.

53.

• _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

54.

55.

56.

57.

58.

59.

60.

• _absd
push
mov
mov
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

61.

62.

• _absd1
push
mov
sub
mov
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
English     Русский Правила