IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

> Проблема с вводом числа
moviegear
сообщение 13.02.2005 0:45
Сообщение #1


Гость






.Model Tiny 
.Code
org     100h

start:
xor ax, ax
xor bx, bx
xor dx, dx  
lea DX,Inputx  
mov ah,09h      
int 21h
mov ax,5
  mov bx,10
  cmp ax,bx
  jg xbigten

  mov bx,1
  cmp ax,bx
  jg xoneten

  sub ax,2
  jmp xend
xbigten:
 inc ax
 mov cx,2
 imul cx
 mov cx,5
 add ax,cx
 jmp xend
xoneten:
 mov cx,2
 imul cx
 inc ax
 cwd
 idiv cx
 jmp xend
xend:
               lea     di, dResult - 2
               call    PrintDEC   ; Преобразование числа в символьный вид  
               mov     dx, offset sResult
               mov     ah, 09h
               int     21h        ; Печать результата на экране  
               int     20h        ; Завершение работы программы

PrintDEC        PROC
                  std
PH1:            xor     dx, dx     ; dx =0 чтобы избежать переполнения при
                                  ; деление на 10
               mov     cx, 10
               div     cx
               add     dl, '0'    ; преобразуем число в символьный вид
               xchg    ax, dx
               stosb              ; запоминаем в памяти по es:di
               xchg    ax, dx
               test    ax, ax     ; Пока не ноль преобразуем в десятичный вид
               jnz     PH1
               ret
ENDP            PrintDEC

Inputx db 0Dh,0Ah
db 'Введите х: ','$'  
sResult         db     0Dh,0Ah
                  db     'Результат равен      $'
dResult        equ     $

end start


У меня следующее задание:
Представить алгоритм и программу вычисления при заданном X значения функции
Y =5+2*( X +1) при X >10. Y =( X **2+1)/2 при 1< X <10. Y = X -2 при X <=1.

Сам алгоритм написал, мучался с выводом, вроде получилось...
Но теперь проблема с вводом =) Для проверки я вручную ложил в ах (тут я ложил 5)... Знаю насчёт mov ah, 01h - но она не поможет, т.к. диапазон от 0 до 9...

Помогите пожалуйста с вводом числа... при 1 выводит мне 65535, 10 я не могу... это понятно... Но что тогда делать?

Заранее благодарю за прочтение!!!...

p.s. в Азы (встроенный ассемблер) есть Тектовый ввод/вывод... апшибка
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 27.07.2025 11:16
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"