Similar presentations:
Основы ассемблера: регистры, операнды, пересылки. Компьютерные основы программирования. Представление программ, часть 1
1. Компьютерные основы программирования Представление программ часть1
Лекция 5, 16 марта 2017Лектор: Чуканова Ольга
Владимировна
Кафедра информатики
602 АК
[email protected]
2.
3.
4. Форматы данных
5. Формы операндов
6.
7.
8.
9.
10.
mov eax, 4050hmov esp, ebp
mov eax, [edi+ecx]
mov [esp], -17
mov [ebp – 12], eax
11.
movmov
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х1000хАВ
0х108
0хFF
0xAB
0x11
0x13
0xFF
0x11
28.
movax,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. Примеры:
xormov
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 farpush 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.
• _absdpush
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.
• _absd1push
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