.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. в Азы (встроенный ассемблер) есть Тектовый ввод/вывод... апшибка