MSDOS. Передуючі нулі числа не виводяться.
; Параметром підпрограми є зміщення змінної в ВХ.
print: finit ; Очищення стеку 80387
КП.КС-05.00.00.000 ПЗ | Арк.
26
Зм. | Лист | № докум | Підпис | Дата
fild word ptr [bx] ; Читання змінної в 80387
fbstp tbyte ptr conv ; Запис двійково-десяткового числа
mov ah,2 ; Функція виводу на екран
test byte ptr conv+9,80h ; Перевірка знаку числа
jz plus_p ; Обхід, якщо плюс
mov dl,'-' ; Вивід від'ємного
int 21h ; знаку числа
plus_p: cmp dword ptr conv,0 ; Перевірка число на нуль
jnz show ; Вивід ненульового числа
mov dl,'0' ; Вивід нуля
int 21h
jmp end_p ; Перехід в кінець підпрограми
show: mov cl,16 ; Число зсувів числа для аналізу
xor al,al ; Прапорець ненульової тетради = 0
mov ebx,dword ptr conv ; Збереження числа в регістрі
d_out: mov edx,ebx ; Копіювання числа
shr edx,cl ; Зсув для аналізу тетради
and dl,0Fh ; Очищення зайвих біт
test al,1 ; Перевірка прапорця
jnz skip_c ; Пропуск, якщо AL[0]=1
test dl,dl ; Перевірка на нуль
jz zero_n ; Нульова тетрада
skip_c: or dl,30h ; Приведення до ASCII символу
int 21h ; Вивід тетради
mov al,1 ; Знайдена ненулова тетрада
zero_n: sub cl,4 ; Продовження виводу,
jns d_out ; доки CX не дорівнює -4
end_p: mov dl,0Ah ; Перехід в наступний рядок
int 21h ; після виводу змінної
ret ; Вихід з підпрограми
КП.КС-05.00.00.000 ПЗ | Арк.
27
Зм. | Лист | № докум | Підпис | Дата
ВИСНОВКИ
В даному проекті розроблений компілятор, який дозволяє створювати лінійні програми обчислення простих математичних виразів на основі алгоритму трансляції Рутисхаузера. Програма транслює вирази з додаванням, відніманням, множенням і діленням знакових 16-розрядних змінних та літералів. Окрім цього реалізовані функції вводу з клавіатури та виводу змінних на екран. Результатом роботи компілятора є *.exe файл.
КП.КС-05.00.00.000 ПЗ | Арк.
28
Зм. | Арк. | № докум | Підпис | Дата
ПЕРЕЛІК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ
Іщеряков С. М. ОСНОВИ МОВИ АСЕМБЛЕР: конспект лекцій з курсів “Системне програмування”, “Системне програмування та операційні системи. – Івано-Франківськ: Факел, 2004. – 52 с.
Григорьев В. Л. Программирование однокристальных микропроцессоров. – М.: Энергоатомиздат, 1987. – 288 с.
Зубков С.В. Assembler для DOS, Windows и UNIX – 3-е изд., стер. – М.: ДМК Пресс; СПб.: Питер, 2004. – 608с.
Джорден Р. Справочник программиста персональных компьютеров типа IBM PC, XT и AT: Пер. с англ./ Предисл. Н.В. Гайского. – М.: Финансы и статистика, 1992. – 544с.
Фролов А.В., Фролов Г.В. MS-DOS для программиста. – М.: ДИАЛОГ-МИФИ, 1995. – 256с.
Системное программное обеспечение. Учебник для вузов/ А.Ю. Молчанов. - СПб: Питер, 2003. – 396 с.
Костельцев А.В. Построение интерпретаторов и компиляторов. – СПб: Наука и техника, 2001. – 224 с.
Велихов А.В. Макроассемблер: Создание и отладка программ. – М.: Майор, 2001. – 192 с. – (Мой компьютер). 1. Компаниец Р.И., Маньков Е.В., Филатов Н.Е. Системное програмирование. Основы построения трансляторов. - С-П: Корона принт, 2000.
Харт, Джонсон. Системное программирование в среде Win32. 2-е изд. Пер.с англ. – М.: Издательский дом „Вильямс”, 2001. – 464 с.: ил.
Гук М. Дисковая подсистема ПК. - СПб.: Питер, 2001. – 336с.: ил.
Юров В.Assembler. Специальный справочник. – СПб.: Питер, 2001. – 496 с.: ил.
Пирогов В.Ю. Assembler. Учебный курс. - М.: Нолидж, 2001.
А.В.Фролов, Г.В.Фролов. Апаратное обеспечение ПК, том 2. – М.: Диалог-МИФИ, 1998. – 272 с.
КП.КС-05.00.00.000 ПЗ | Арк.
29
Зм. | Арк. | № докум | Підпис | Дата