Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Реализация ветвления

1.9K
22 декабря 2013 года
alexandrv
39 / / 21.01.2010
Добрый вечер! Даны два числа a и x. Пишу программу реализующую нахождение y по условию, если x<3, то y=7+x. В противном случае, y=a+x.
Вот текст программы. Почему то при ввод данных выводит ответ то Ф, то У, хотя добавляю к регистру dl код нулевого символа.

...
mov al,3
cmp x,al
jl lower
heigher:
mov al,a
add al,x
jmp short l1
lower:
mov al,7
add al,x
l1:
mov dl,al
add dl,'0'
mov ah,2
int 21h
...
326
22 декабря 2013 года
sadovoya
757 / / 19.11.2005
Так только от 0 до 9 цифры можно вывести (прибавкой символа 0). Смотрите форум, где-то аналогичное обсуждалось..
1.9K
22 декабря 2013 года
alexandrv
39 / / 21.01.2010
Цитата: sadovoya
Так только от 0 до 9 цифры можно вывести (прибавкой символа 0). Смотрите форум, где-то аналогичное обсуждалось..


при вводе исходных данных 3 и1 как раз и получается одно число, одна цифра

326
22 декабря 2013 года
sadovoya
757 / / 19.11.2005
Может вы данные как-то не так вводите. У меня все работает. Вот код на Masm для DOS:

Код:
;------------------------------------------------------------------
; Задача: если x<3, то y=7+x. В противном случае, y=a+x.
;
; Для ответа состоящего из одной цифры только.
;
; Компилировать: ml /AT dig.asm
;------------------------------------------------------------------

code segment
        assume cs:code, ds:code
        org 100h
begin:
    jmp short cd
    a db 1
    x db 3
 cd:
    mov al,3
    cmp x,al
    jl lower
 heigher:
    mov al,a
    add al,x
    jmp short l1
 lower:
    mov al,7
    add al,x
 l1:
    mov dl,al
    add dl,'0'
    mov ah,2
    int 21h
       
        ret
code ends
        end begin
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог