Задача. . .
•Нарисуйте диаграмму состояний КА, который принимает 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