Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
ПМ-11 ОССП Прокопенко Д.
Практична робота №23
Тема: Програмування розгалужень.
Мета: Навчитися створювати програми на асемблері, виконуючі команди умови (розгалуження).
Устаткування: ПК. Програма Turbo Assembler 5.0.
1 Описати кожен рядок програми з примера1 (письмово).
masm ;формат директиви
model small ;модель памяті
.stack 100h ;початок сегменту стека
.data ;початок сегменту даних
n equ 10
stroka db 'acvfgrndup'
.code ;початок сегменту коду
start:
mov ax,@data
mov ds,ax ;команда пересилки даних
xor ax,ax ;логічне виключення АБО
mov cx,n
lea bx,stroka ;завантаження ефективної адреси
m1:
mov al,[bx]
cmp al,61h ;порівняння операндів
jb next ;перехід нижче (jump перехід, b Below)
;
cmp al,7ah
ja next ;перехід вище (jump перехід, а Above)
;
and al,11011111b ;логічне і
mov [bx],al
next:
inc bx ;збільшити операнд на 1
dec cx ;зменшення операнда на одиницю
jnz m1
exit: ;функція зав. програми
mov ax,4c00h ;код завершення програми
int 21h ;переривання
end start ;кінець тексту програми
Одержати виконуваний файл програми з примера1.
Затем цикл повторяется 10 раз.
Висновок: навчився створювати програми на асемблері, виконуючі команди умови (розгалуження)
Контрольні питання.
Назва прапора |
Номер бита в регістрі eflags/flags |
Команда умовного переходу |
Значення прапора для здійснення переходу |
Перенесення CF |
1 |
JC |
CF = 1 |
Парності PF |
2 |
JP |
PF = 1 |
Нуля ZF |
6 |
JZ |
ZF = 1 |
Знаку SF |
7 |
JS |
SF = 1 |
Переповнювання OF |
11 |
JO |
OF = 1 |
Перенесення CF |
1 |
JNC |
CF = 0 |
Парності PF |
2 |
JNP |
PF = 0 |
Нуля ZF |
6 |
JNZ |
ZF = 0 |
Знаку SF |
7 |
JNS |
SF = 0 |
Переповнювання OF |
11 |
JNO |
OF = 0 |
Команда порівняння СМР (СоМРаrе) має цікавий принцип роботи. Він абсолютно такій же, як у команди віднімання SUB. Команда СМР так само, як і команда SUB, виконує віднімання операндів і за наслідками порівняння встановлює прапори. Єдине, чого вона не робить, не записує результат віднімання на місце першого операнда.
Синтаксис команди СМР:
cmp операнд_1,операнд_2
Синтаксис команди:
loop метка_перехода
Команда реалізує описані далі дії.
Команди LOOPE і LOOPZ (Loop still сх <> 0 or Zero flag = 0 повторити цикл поки СХ<> 0 або ZF = 0) абсолютні синоніми.
Юппе Ян 1ПМ-11 ОССП