Скачиваний:
94
Добавлен:
15.06.2014
Размер:
443.64 Кб
Скачать

Целые числа со знаком и без

сточки зрения аппаратуры

Команды ЦП оперируют с числами со знаком и без знака одинаково

ЦП не различает чисел со знаком и без знака

Программист, самостоятельно определяет

использование правильного типа для каждой

команды

Мусин С.Б., каф. ПОИТ, БГУИР, 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.

 

 

Соседние файлы в папке lec_4