

Целые числа со знаком и без
сточки зрения аппаратуры
•Команды ЦП оперируют с числами со знаком и без знака одинаково
•ЦП не различает чисел со знаком и без знака
•Программист, самостоятельно определяет
использование правильного типа для каждой
команды
Мусин С.Б., каф. ПОИТ, БГУИР, 2006 http://ppl.yohng.com |
Web site Examples |
31 |
|
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. |
|||
|
|
Added Slide. Gerald Cahill, Antelope Valley College

Флаг переноса и переполнения
сточки зрения аппаратуры
•Команда ADD изменяет OFи CF следующим образом:
•OF = (перенос из MSB) XOR (перенос в MSB)
•CF = (перенос из MSB)
•Команда SUB изменяет OF и CF:
•NEG источника и ADD с приемником
•OF = (перенос из MSB) XOR (перенос в MSB)
•CF = ИНВЕРТИРОВАТЬ (перенос из MSB)
MSB = Most Significant Bit (старший бит)
XOR = eXclusive-OR (исключающее или)
NEG = Negate (SUB 0,operand )
Мусин С.Б., каф. ПОИТ, БГУИР, 2006 http://ppl.yohng.com |
Web site Examples |
32 |
|
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. |
|||
|
|
Added Slide. Gerald Cahill, Antelope Valley College

Флаг переноса (CF)
Флаг CF (Carry flag) устанавливается если в результате
выполнения операции возник перенос и приемник содержит
значение без знака.
mov |
al,0FFh |
; CF = 1, AL = 00 |
add |
al,1 |
; Try to go below zero:
mov |
al,0 |
; CF = 1, AL = FF |
sub al,1 |
Мусин С.Б., каф. ПОИТ, БГУИР, 2006 http://ppl.yohng.com |
Web site Examples |
33 |
|
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. |
|||
|
|

Задача
Укажите содержимое приемника и установку SF, ZF и CF:
mov ax,00FFh |
; AX= |
SF= |
ZF= |
CF= |
add ax,1 |
||||
sub ax,1 |
; AX= |
SF= |
ZF= |
CF= |
add al,1 |
; AL= |
SF= |
ZF= |
CF= |
mov bh,6Ch |
; BH= |
SF= |
ZF= |
CF= |
add bh,95h |
||||
mov al,2 |
; AL= |
SF= |
ZF= |
CF= |
sub al,3 |
Мусин С.Б., каф. ПОИТ, БГУИР, 2006 http://ppl.yohng.com |
Web site Examples |
34 |
|
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. |
|||
|
|

Флаг переполнения (OF)
Флаг OF (Overflow flag) определяет выход знакового результата за границы диапазона, т.е. может ли результат быть правильно
представлен с помощью заданного количества битов.
; Пример 1 |
|
|
mov al,+127 |
; OF = 1, |
AL = ?? |
add al,1 |
||
; Пример 2 |
; OF = 1, |
AL = 80h |
mov al,7Fh |
||
add al,1 |
|
|
Примеры идентичны, т.к. 7Fh = +127. Для определения содержимого приемника, обычно удобнее пользоваться шестнадцатеричным представлением числа.
Мусин С.Б., каф. ПОИТ, БГУИР, 2006 http://ppl.yohng.com |
Web site Examples |
35 |
|
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. |
|||
|
|

Правило применения
•При сложении двух целых чисел A и B помните,
что флаг OF устанавливается если . . .
•A>0, B>0 и A+B<0
•A<0, B<0 и A+B>0
Задача: определите значение флага переполнения
mov al,80h |
; OF = |
add al,92h |
|
mov al,-2 |
; OF = |
add al,+127 |
Мусин С.Б., каф. ПОИТ, БГУИР, 2006 http://ppl.yohng.com |
Web site Examples |
36 |
|
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. |
|||
|
|

Задача
Определите значения флагов
mov al,-128 |
; CF = |
OF = |
neg al |
||
mov ax,8000h |
; CF = |
OF = |
add ax,2 |
||
mov ax,0 |
; CF = |
OF = |
sub ax,2 |
||
mov al,-5 |
; OF = |
|
sub al,+125 |
|
Мусин С.Б., каф. ПОИТ, БГУИР, 2006 http://ppl.yohng.com |
Web site Examples |
37 |
|
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. |
|||
|
|

Операторы и директивы для работы с
данными
•Оператор OFFSET
•Оператор PTR
•Оператор TYPE
•Оператор LENGTHOF
•Оператор SIZEOF
•Директива LABEL
Мусин С.Б., каф. ПОИТ, БГУИР, 2006 http://ppl.yohng.com |
Web site Examples |
38 |
|
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. |
|||
|
|

Оператор OFFSET
•OFFSET смещение переменной в байтах относительно
начала сегмента
• Защищенный режим: 32 bits
еальный режим 16 bits
offset
data segment:
myByte
При работе в защищенном режиме мы рассматриваем
только один сегмент (flat memory model).
Мусин С.Б., каф. ПОИТ, БГУИР, 2006 http://ppl.yohng.com |
Web site Examples |
39 |
|
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. |
|||
|
|

Примеры использования OFFSET
Пусть сегмент данных начинается с адреса 00404000h:
.data
bVal BYTE ? wVal WORD ? dVal DWORD ? dVal2 DWORD ?
.code |
; ESI = 00404000 |
|
mov esi,OFFSET bVal |
||
mov esi,OFFSET wVal |
; ESI = 00404001 |
|
mov esi,OFFSET dVal |
; ESI = |
00404003 |
mov esi,OFFSET dVal2 |
; ESI = |
00404007 |
Мусин С.Б., каф. ПОИТ, БГУИР, 2006 http://ppl.yohng.com |
Web site Examples |
40 |
|
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. |
|||
|
|