Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2013, 18:21   #1
803
Пользователь
 
Регистрация: 13.02.2012
Сообщений: 89
По умолчанию Условные переходы (if)

Здравствующие. Подскажите как написать программу типа пожарный датчик которая выводит сообщение «Опасная ситуация», если t >= 45C.
Ввод есть а вот с if проблемы не получается.
Помогите пожалуйста, заранее спасибо.
Код:
masm
model small
.386
.stack 100h
.data
x dw ?
y dw ?
.code
start:
mov ax, @data
mov ds, ax
mov ah,01h
int 21h ; в al - первый символ
sub al,30h ; теперь первая цифра
mov ah,0 ; расширение до слова
mov bx,10
mov cx,ax ; в cx - первая цифра
Loop: mov ah,01h
int 21h ; в al следующий символ
cmp al,0dh ; сравнение с символом Enter
je Enld ; конец ввода
sub al,30h ; в al - следующая цифра 
cbw ; расширение до слова
xchg ax,cx ; теперь в ax - предыдущее число, в cx - следующая
mul bx ; ax*10
add cx,ax ; cx=ax*10+cx
jmp Loop ; продолжение ввода
Enld: mov x,cx 

;тут должен быть if (но его нет)
	
push -1 ;Сохраним признак конца числа
mov cx,10 ;Делим на 10
l: mov dx,0 ;Очистим регистр dx (xor dx,dx - оптимальнее)
div cx ;Делим 
push dx ;Сохраним цифру
cmp ax,0 ;Остался 0? (оптимальнее or ax,ax)
jne l ;нет -> продолжим
mov ah,2h
l2: pop dx ;Восстановим цифру
cmp dx,-1 ;Дошли до конца -> выход {оптимальнее: or dx,dx jl ex}
je ex
add dl,'0' ;Преобразуем число в цифру
int 21h ;Выведем цифру на экран
jmp l2 ;И продолжим 
ex:mov ah, 01h
int 21h
cmp al, 0dh
je End3
jmp ex
End3:
mov ax, 4c00h
int 21h
end start
803 вне форума Ответить с цитированием
Старый 05.05.2013, 17:51   #2
wanes101
Форумчанин
 
Регистрация: 04.06.2010
Сообщений: 212
По умолчанию

В общем случае так

1. сравнение: cmp eax,ebx ;сравниваем eax и ebx
потом следующей командой пишеш условный переход в зависимости от условия
2. Вот к примеру:
JE/JZ Переход, если равно/нуль ZF
JNE/JNZ Переход, если не равно/не нуль ZF
JA/JNBE Переход, если выше/не ниже или равно ZF,CF
JAE/JNB Переход, если выше или равно/не ниже CF
JB/JNAE Переход, если ниже/не выше или равно CF
JBE/JNA Переход, если ниже или равно/не выше CF,AF
к примеру если такая КОП
"jae m1", то
if (eax>=ebx) <=> переход на метку m1, иначе следующая команда
wanes101 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не работают условные переходы Gooch Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 23.05.2012 05:03
условные переходы на асм L0L Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 31.03.2012 12:38
Условные переходы серг Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 15.04.2010 22:24
ассемблер условные переходы серг Помощь студентам 0 15.04.2010 19:25