Вы находитесь на странице: 1из 7

Дробинка А.Н гр.

2-131

Лабораторная работа № 12
Тема: Использование в программах ветвления.
Цель занятия: Ознакомиться с возможной последовательностью команд в
ассемблерной программе, с вариантами ввода и вывода данных, изучить
принципы функционирования памяти и микропроцессора компьютера при
выполнении ветвлений. Приобрести навыки использования команд
условного и безусловного переходов при написании ассемблерных программ.
Получить представление об особенностях обработки данных, команд и
режимах доступа к данным при организации ветвлений.

Задание 1
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc
include \masm32\include\debug.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\debug.lib
.data
.code
start:

mov al,4
mov cl,10

cmp al,cl
Дробинка А.Н гр. 2-131

JE PrintDec1
JA PrintDec2
JB PrintDec3
PrintDec1:
PrintDec al
jmp end_if
PrintDec2:
PrintDec al
jmp end_if
PrintDec3:
PrintDec cl
jmp end_if
end_if:

end start
При А=4, Б=10

При А=5, Б=2

При А=5, Б=5


Дробинка А.Н гр. 2-131

Задание 2
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc
include \masm32\include\debug.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\debug.lib
.data
.code
start:

mov al,4
mov cl,5

cmp al,cl
JA PrintDec1
JB PrintDec2
PrintDec1:
add al,cl
PrintDec al
jmp end_if
PrintDec2:
sub al,cl
Дробинка А.Н гр. 2-131

PrintDec al
jmp end_if
end_if:

end start

При А=4, Б=5

При А=6, Б=2

При А=8, Б=15

Задание 3
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc
include \masm32\include\debug.inc
Дробинка А.Н гр. 2-131

includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\debug.lib
.data
.code
start:

mov al,6
mov bl,2
mov cl,al

cmp al,bl
JA PrintDec1
JB PrintDec2
PrintDec1:
mul bl
PrintDec al
jmp end_if
PrintDec2:
mov al,bl
mov bl,cl
PrintDec al
PrintDec bl
jmp end_if
end_if:

end start
Дробинка А.Н гр. 2-131

При А=6, Б=2

При А=5, Б=18

При А=6, Б=5

1. Что означают условный и безусловный переходы? Условный переход


выполняется на указанную метку в том случае если условие истинно, если
условие не выполнятеся, то процессор продолжит выполнять программу со
следующей команды. Безусловного перехода, так сказать переключает на
выполнение команды по указанному адресу.
2. Объясните назначение регистра флагов. Выполнение логических операций.
3. Объясните назначение команды TEST. Приведите примеры. Команда TEST
работает подобно СМР, но вместо вычитания она вычисляет поразрядное И
операндов. Результат инструкции — измененные флаги регистра признаков.
Команда TEST используется для проверки значений отдельных битов в
массиве битов.
4. Какую принципиальную роль играет оператор безусловного перехода JMP
при организации ветвлений? jmp — так называемой команды без условного
перехода. Она перезаписывает указатель команд (регистр IP или CS), что
заставляет процессор «переключиться» на выполнение команды по
указанному адресу.
Вывод: Ознакомился с возможной последовательностью команд в
ассемблерной программе, с вариантами ввода и вывода данных, изучил
принципы функционирования памяти и микропроцессора компьютера при
выполнении ветвлений. Приобрел навыки использования команд условного и
безусловного переходов при написании ассемблерных программ. Получил
Дробинка А.Н гр. 2-131

представление об особенностях обработки данных, команд и режимах


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