Автор работы: Пользователь скрыл имя, 03 Ноября 2013 в 21:46, курсовая работа
В заданной РЭС осуществить управляющую функцию по одному из заданных параметров с помощью контроллера, построенного на МПК, разработать электрическую принципиальную схему проектируемого контроллера и составить программу (драйвер) реализуемую управляющую функцию на языке Ассемблер заданного МПК.
В каждом конкретном случае разработчик должен определить, какая часть названных средств и в каком объеме может удовлетворять поставленной задаче. Наиболее распространенной и общей для одноплатных микроконтроллеров является структура с тремя шинами, представленная на рис. 1.1. Шиной системы называют физическую группу линий передачи сигналов, имеющих схожие функции в рамках системы.
sub ah,dh ; словами кол-ва сдвигов меньшей мантиссы
mov P,ch ; Занесение в P большего порядка
mov al,dl ; \
mov bl,[di] ; В AX,BX заносится меньшее число
mov bh,[di+1] ;/
mov SIGL,al ; Сохранение знака меньшего числа
mov dl,[si] ; В CX,DX заносится большее число
mov dh,[si+1] ; (по модулю)
mov SIGN,cl ; Сохранение знака результата
jmp @L2
;
; 2.2. Порядок X меньше порядка Y (Px < Py) (CH) < (DH).
@L1:
mov ah,dh ; Нахождение разности порядков или другими
sub ah,ch ; словами кол-ва сдвигов меньшей мантиссы.
mov P,dh ; Занесение в P большего порядка
mov al,cl ;\
mov bl,[si] ; В AX,BX заносится меньшее число
mov bh,[si+1] ;/
mov SIGL,al ; Сохранение знака меньшего числа
mov cl,dl ; \
mov dl,[di] ; В CX,DX заносится большее число
mov dh,[di+1] ;/ (по модулю)
mov SIGN,cl ; Сохранение знака результата
;
; 3. Преобразование мантисс слагаемых в дополнительный код.
;
; 3.1. Перевод трех байт мантиссы меньшего числа (al,bx)
; из прямого кода в дополнительный
@L2:
sal al,1 ; бит (C) ¬ (регистр al) ¬ 0
jae @L3 ; Переход к метке @L3, если (C) = 0, т.е.
; число в регистрах (al,bx) - неотрицательное
rcr al,1 ; Возврат "1" из бита (C) в старший бит (al).
not bx ; \
not al ; Перевод в ДК
add bx,1 ; отрицательного числа в регистрах (al,bx)
adc al,0 ;/
jmp @L4
@L3:
rcr al,1 ; Возврат "0" из бита (C) в старший бит (al).
add al,80H ; Принудительная установка старшего бита
; регистра (al) в "1" (его вес = 1/2)
;
; 3.2. Перевод трех байт мантиссы большего числа (cl,dx)
; из прямого кода в дополнительный
@L4:
sal cl,1 ; бит (C) ¬ (регистр cl) ¬ 0
jae @L5 ; Переход к метке @L5, если (C) = 0, т.е.
; число в регистрах (cl,dx) - неотрицательное
rcr cl,1 ; Возврат "1" из бита (C) в старший бит (cl)
not dx ;\
not cl ; Перевод в ДК
add dx,1 ; отрицательного числа в регистрах (cl,dx)
adc cl,0 ;/
jmp @L6
@L5:
rcr cl,1 ; Возврат "0" из бита (C) в старший бит (cl)
add cl,80H ; Принудительная установка старшего бита
; регистра (al) в "1" (его вес = 1/2)
;
; 4. Значение полученной разности используется как количество
; сдвигов вправо мантиссы числа с меньшим порядком
@L6:
cmp ah,0
je @L7
mov ch,SIGL ;\
sal ch,1 ; Сдвиг вправо
rcr al,1 ; меньшего числа
rcr bx,1 ;/
dec ah ; Уменьшение на 1 значения счетчика сдвигов
jmp @L6
;
; 5. Сложение мантисс по правилам сложения чисел с фиксиро-
; ванной запятой
@L7:
add bx,dx ; Сложение
adc al,cl ; мантисс
; 6. Преобразование мантиссы результата в прямой код
@L8:
mov cl,SIGN ; Дублирование
sar cl,1 ; знака результата
sal cl,1 ; Проверка знака результата (числа с большим
; порядком)
jae @L9 ; Переход к метке @L9, если (C) = 0, т.е.
; если мантисса суммы неотрицательна
sub bx,1 ;\
sbb al,0 ; Перевод отрицательной
not bx ; (al,bx) из дополнительного кода в прямой
not al ;/
;
; 7. Нормализация мантиссы результата и при необходимости
; коррекция значения его порядка
@L9:
sal bx,1
rcl al,1
jb @L10
sub ah,1
jmp @L9
;
; 8. Получение порядка и окончательного результата
@L10:
add ah,P
;
sal cl,1 ; бит (C) ¬ 0, (регистр al)¬ 0
rcr ax,1
rcr bx,1
;
mov [si],bl ;\
mov [si+1],bh ; Пересылка результата
mov [si+2],al ; в память
mov [si+3],ah ;/
ret
;
FSUMMA ENDP
;=============================
; подпрограмма преобразования целого числа в формат ПЗ
;=============================
ITOF PROC FAR
;
MOV BH,0 ;Сбросить регистр ВН
MOV AX,SI ;Проверить исходное число
OR AX,BX ;на ноль
JZ EXIT ;Число равно нулю
MOV AL,BL ;Сохранить знак в регистре AL
TEST AL,80H ;Проверить знак числа
JC NOC ;Число положительное
NOT SI ;Число отрицательное,
NOT BL ;образовать его
ADD SI,1 ;абсолютное значение
JNC NOC
INC BL
NOC: MOV BH,151 ;Исходный порядок
SLOOP: TEST BL,80H ;Проверить старший бит
JNZ FORM ;Нормализация закончена
SHL SI,1 ;Сдвинуть число влево
RCL BL,1
DEC BH ;Декремент порядка
JMP SLOOP ;Повторять нормализацию
FORM: ADD AL,AL ;Передать знак во флажок CF
RCR BH,1 ;Знак числа на месте
RCR AH,1 ;Младший бит прядка АН7
OR AH,7FH ;Образовать маску
AND BL,AH ;Образовать второй байт числа
EXIT: RET ;Возврат
ITOF ENDP
LINK2 ENDP
;-----------------------------
CSEG ENDS
END LINK2