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

Задача. . .

Нарисуйте диаграмму состояний КА, который принимает 16-чное число в соответствии с синтаксисом MASM.

Нарисуйте блок-схему одного из состояний КА.

Реализуйте КА. Пользователь вводит 16-чное число с клавиатуры.

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.

Web site Examples

61

Мусин С.Б., каф. ПОИТ, БГУИР, 2007 http://ppl.yohng.com.

 

 

Директивы генерации условных

выражений

Директива .IF

Используемые операторы

Сгенерированный MASM-код

.REPEAT Directive

.WHILE Directive

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.

Web site Examples

62

Мусин С.Б., каф. ПОИТ, БГУИР, 2007 http://ppl.yohng.com.

 

 

Директива .IF

.IF, .ELSE, .ELSEIF, и .ENDIF используются для сравнения значений во время выполнения программы.

Пример:

.IF eax > ebx

.IF eax > ebx && eax > ecx

mov edx,1

mov edx,1

.ELSE

.ELSE

mov edx,2

mov edx,2

.ENDIF

.ENDIF

MASM генерирует “скрытый“ код, который содержит метки, CMP и команды условного перехода.

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.

Web site Examples

63

Мусин С.Б., каф. ПОИТ, БГУИР, 2007 http://ppl.yohng.com.

 

 

Используемые операторы

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.

Web site Examples

64

Мусин С.Б., каф. ПОИТ, БГУИР, 2007 http://ppl.yohng.com.

 

 

 

 

 

Сгенерированный MASM-код

.data

 

val1 DWORD 5

Сгенерированный код:

result DWORD ?

.code

mov eax,6

mov eax,6

cmp eax,val1

.IF eax > val1

jbe @C0001

mov result,1

mov result,1

.ENDIF

@C0001:

MASM автоматически создает переход без знака (JBE), так как переменная val1 без знака.

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.

Web site Examples

65

Мусин С.Б., каф. ПОИТ, БГУИР, 2007 http://ppl.yohng.com.

 

 

Сгенерированный MASM-код

.data

 

val1 SDWORD 5

Сгенерированный код:

result SDWORD ?

.code

mov eax,6

mov eax,6

cmp eax,val1

.IF eax > val1

jle @C0001

mov result,1

mov result,1

.ENDIF

@C0001:

MASM автоматически создает переход со знаком (JLE), так как переменная val1 со знаком.

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.

Web site Examples

66

Мусин С.Б., каф. ПОИТ, БГУИР, 2007 http://ppl.yohng.com.

 

 

11

Сгенерированный MASM-код

.data

Сгенерированный код :

result DWORD ?

.code

mov ebx,5

mov ebx,5

mov eax,6

mov eax,6

cmp eax,ebx

.IF eax > ebx

jbe @C0001

mov result,1

mov result,1

@C0001:

.ENDIF

 

Если регистры –переход без знака (JBE)…

Сгенерированный MASM-код

.data

Сгенерированный код :

result SDWORD ?

.code

mov ebx,5

mov ebx,5

mov eax,6

mov eax,6

cmp eax,ebx

.IF SDWORD PTR eax > ebx

jle @C0001

mov result,1

mov result,1

@C0001:

.ENDIF

 

. . . кроме случая, когда один из регистров имеет префикс

SDWORD PTR.

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.

Web site Examples

67

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.

Web site Examples

68

Мусин С.Б., каф. ПОИТ, БГУИР, 2007 http://ppl.yohng.com.

 

 

Мусин С.Б., каф. ПОИТ, БГУИР, 2007 http://ppl.yohng.com.

 

 

Директива .REPEAT

Создает цикл с проверкой условия после выполнения тела. Условие задается директивой UNTIL.

Пример:

; Display integers 1 – 10:

mov eax,0

.REPEAT inc eax

call WriteDec call Crlf

.UNTIL eax == 10

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.

Web site Examples

69

Мусин С.Б., каф. ПОИТ, БГУИР, 2007 http://ppl.yohng.com.

 

 

Директива .WHILE

Создает цикл с проверкой условия перед выполнением тела. Директива .ENDW задает конец тела цикла.

Пример:

; Display integers 1 – 10:

mov eax,0

.WHILE eax < 10 inc eax

call WriteDec call Crlf

.ENDW

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.

Web site Examples

70

Мусин С.Б., каф. ПОИТ, БГУИР, 2007 http://ppl.yohng.com.

 

 

Заключение

Bitwise instructions (AND, OR, XOR, NOT, TEST)

manipulate individual bits in operands

CMP – compares operands using implied subtraction

sets condition flags

Conditional Jumps & Loops

equality: JE, JNE

flag values: JC, JZ, JNC, JP, ...

signed: JG, JL, JNG, ...

unsigned: JA, JB, JNA, ...

LOOPZ, LOOPNZ, LOOPE, LOOPNE

Flowcharts – logic diagramming tool

Finite-state machine – tracks state changes at runtime

The End

x & (x-1), x & (x+1), x & (-x), ~x&(x+1), ~x&(x-1), x (x-1), x | (x-1)

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.

Web site Examples

71

Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007.

Web site Examples

72

Мусин С.Б., каф. ПОИТ, БГУИР, 2007 http://ppl.yohng.com.

 

 

Мусин С.Б., каф. ПОИТ, БГУИР, 2007 http://ppl.yohng.com.

 

 

12