Разработка ассемблерной программы вычисления специальной функцииРефераты >> Программирование и компьютеры >> Разработка ассемблерной программы вычисления специальной функции
Приложение Б. Схема программы
Блок-схема вычисления значения функции
Приложение В. Текст программы.
CODE SEGMENT ;начало сегмента кода
ORG 100h
start proc
ASSUME cs:code ;директива установки сегмента кода
begin:
call clear ;вызов процедуры очистки экрана
mov dx,0000h ;записываем в dх координаты курсора
call cursor ;вызов процедуры установки курсора
lea dx,t0 ;указываем ссылку на сообщение
call oput ;вызываем процедуру вывода
mov dx,0100h ;записываем в dх координаты курсора
call cursor ;вызов процедуры установки курсора
lea dx,t1 ;указываем ссылку на сообщение
call oput ;вызываем процедуру вывода
mov dx,0200h ;записываем в dх координаты курсора
call cursor ;вызов процедуры установки курсора
lea dx,t2 ;указываем ссылку на сообщение
call oput ;вызываем процедуру вывода
mov dx,0320h ;записываем в dх координаты курсора
call cursor ;вызов процедуры установки курсора
lea dx,t3 ;указываем ссылку на сообщение
call oput ;вызываем процедуру вывода
mov dx,0420h ;записываем в dх координаты курсора
call cursor ;вызов процедуры установки курсора
lea dx,t4 ;указываем ссылку на сообщение
call oput ;вызываем процедуру вывода
mov dx,0520h ;записываем в dх координаты курсора
call cursor ;вызов процедуры установки курсора
lea dx,t5 ;указываем ссылку на сообщение
call oput ;вызываем процедуру вывода
mov dx,0600h ;записываем в dх координаты курсора
call cursor ;вызов процедуры установки курсора
lea dx,t6 ;указываем ссылку на сообщение
call oput ;вызываем процедуру вывода
;Ввод значения А
mov dx,0600h ;координаты курсора
call cursor ;вызов процедуры
lea dx,t7 ;загружаем подсказку
call oput ;выводим на экран
mov ah,0ah ;считываем ввод
lea dx,A ;записываем в регистр
int 21h ;прерывание DOS
mov bl,A+1 ;в bl записываем значение A со смещением на 1
lea si,A+1 ;в si записываем значение A со смещением на 1
call cod ;вызываем процедуру перевода
sub ax,ax ;чистим регистр
mov ax,cods ;пишем в ax введённое значение
mov Ak,ax ;записываем переведённое значение
;Ввод значения B
mov dx,0700h ;координаты курсора
call cursor ;вызов процедуры
lea dx,t8 ;загружаем подсказку
call oput ;выводим на экран
mov ah,0ah ;считываем ввод
lea dx,B ;записываем в регистр
int 21h ;прерывание DOS
mov bl,B+1 ;в bl записываем значение B со смещением на 1
lea si,B+1 ;в si записываем значение B со смещением на 1
call cod ;вызываем процедуру перевода
sub ax,ax ;чистим регистр
mov ax,cods ;пишем в ax введённое значение
mov Bk,ax ;записываем переведённое значение
;Ввод значения C
mov dx,0800h ;координаты курсора
call cursor ;вызов процедуры
lea dx,t9 ;загружаем подсказку
call oput ;выводим на экран
mov ah,0ah ;считываем ввод
lea dx,C ;записываем в регистр
int 21h ;прерывание DOS
mov bl,C+1 ;в bl записываем значение C со смещением на 1
lea si,C+1 ;в si записываем значение C со смещением на 1
call cod ;вызываем процедуру перевода
sub ax,ax ;обнуляем регистр
mov ax,cods ;пишем в ax введённое значение
mov Ck,ax ;записываем переведённое значение
;Ввод значения Y
mov dx,0900h ;координаты курсора
call cursor ;вызов процедуры
lea dx,t10 ;загружаем подсказку
call oput ;выводим на экран
mov ah,0ah ;считываем ввод
lea dx,y ;записываем в регистр
int 21h ;прерывание DOS
mov bl,y+1 ;в bl записываем значение Y со смещением на 1
lea si,y+1 ;в si записываем значение Y со смещением на 1
call cod ;вызываем процедуру перевода
sub ax,ax ;чистим регистр
mov ax,cods ;пишем в ax введённое значение
mov Yk,ax ;записываем переведённое значение
;Ввод значения X1
mov dx,0A00h ;координаты курсора
call cursor ;вызов процедуры
lea dx,t11 ;загружаем подсказку
call oput ;выводим на экран
mov ah,0ah ;считываем ввод
lea dx,x1 ;записываем в регистр
int 21h ;прерывание DOS
mov bl,x1+1 ;в bl записываем значение X1 со смещением на 1
lea si,x1+1 ;в si записываем значение X1 со смещением на 1
call cod ;вызываем процедуру перевода
sub ax,ax ;чистим регистр
mov ax,cods ;пишем в ax введённое значение
mov X1k,ax ;записываем переведённое значение
;Ввод значения Xn
mov dx,0B00h ;координаты курсора
call cursor ;вызов процедуры
lea dx,t12 ;загружаем подсказку
call oput ;выводим на экран
mov ah,0ah ;считываем ввод
lea dx,xn ;записываем в регистр
int 21h ;прерывание DOS
mov bl,xn+1 ;в bl записываем значение Xn со смещением на 1
lea si,xn+1 ;в si записываем значение Xn со смещением на 1
call cod ;вызываем процедуру перевода
sub ax,ax ;чистим регистр
mov ax,cods ;пишем в ax введённое значение
mov Xnk,ax ;записываем переведённое значение
;Ввод значения h
mov dx,0C00h ;координаты курсора
call cursor ;вызов процедуры
lea dx,t13 ;загружаем подсказку
call oput ;выводим на экран
mov ah,0ah ;считываем ввод
lea dx,h ;записываем в регистр
int 21h ;прерывание DOS
mov bl,h+1 ;в bl записываем значение h со смещением на 1
lea si,h+1 ;в si записываем значение h со смещением на 1
call cod ;вызываем процедуру перевода
sub ax,ax ;чистим регистр
mov ax,cods ;пишем в ax введённое значение
mov hk,ax ;записываем переведённое значение
mov cur,0D00h ;сохранение в переменной координаты курсора
;Вычисление функции
mov ax,X1k ;пишем в ax значение X1k
mov Xni,ax ;устанавливаем в xni значение X1
mov ax,Xni ;пишем в ax значение Xcod
cmp ax,Yk ;пишем в ax значение Yk
je er ;переход по метке er если X=Y
jg Bbol ;переход по метке Bbol если X>Y
er: ;метка
call error ;вызов процедуры обработки ошибки
Bbol: ;metka