Разработка ассемблерной программы вычисления специальной функцииРефераты >> Программирование и компьютеры >> Разработка ассемблерной программы вычисления специальной функции
mov ax,xni ;значение x
add ax,hk ;x+h
mov xni,ax ;сохраняем новое значение x
ret
zf endp
;----------------------------------------------------------------------------------------------------------
cod proc ;процедура перевода введённого значения с клавиатуры
;в соответствующий ей по номеру порядковый символ ASCII
;для удобства вычислений (см. таб. ASCII)
xor ax,ax ;обнуление регистра AX
mov cods,ax ;чистим переменную decods
mov cx,10 ;заносим в регистр CX значение 10
cd: mov al,[si+bx] ;выбор ASCII - символа
and AX,000fh ;удаление 3 (AL&0Fh)
mul mn ;умножение на множитель для преобразования
add cods,ax ;добавление к полученому результату
mov ax,mn ;вычисление следующего значения множителя
mul cx ;умножение AX на CX
mov mn,ax ;запись в переменную mn значения AX
dec bx ;если не последняя цифра, то - продолжать
jnz cd ;переход по метке cd если не ноль
xor ax,ax ;обнуление регистра AX
mov ax,mn ;записываем в регистр множитель
mov mn,1 ;записываем 1 в переменную mn
ret ;выход из процедуры
cod endp ;результат после выхода из процедуры в cods
;----------------------------------------------------------------------------------------------------------
decod proc ;процедура перевода результата представленного в
;символах кода ASCII,
;в форму приемлимую для вывода (в виде чисел)
mov ascii,0 ;записываем 0 в переменную asc
mov cx,10 ;заносим в регистр CX значение 10
lea si,ascii+4 ;заносим в регистр si значение asc смещенное на 4
dcd2: cmp ax,10 ;сравниваем значение в регистре AX с 10
jb dcd1 ;если в АХ число меньше 10, то - выход
xor dx,dx ;обнуление
div cx ;деление содержимого AX на 10; остаток - в DL
or dl,30h ;формирование кода ASCII очередной цифры
mov [si],dl ;сохранение ASCII - символа
dec si ;декремент si-1
jmp dcd2 ;переход на dcd2
dcd1: or al,30h ;формирование кода ASCII последней (старшей) цифры
mov [si],al ;сохранение ASCII - символа
ret ;выход из процедуры
decod endp
;----------------------------------------------------------------------------------------------------------
CODE ENDS
END begin
Приложение С. Пример выполнения программы.
Пример выявления ошибки на 0