Анализ технического задания. Составление карты распределения адресного пространства. Модуль управления и индикации CPAN, страница 22

Приложение 2. Листинг программы

Turbo Assembler  Version 2.01        11/12/00 03:49:04

prog1.asm

1                              ;***************************************************************

2                              ; Михалевич Михаил

3                              ; А-9-97

4                              ; Программное обеспечение для МПС

5                              ; (реализованной на базе процессора 1810ВМ86)

6                              ;***************************************************************

7 0000                         .model tiny

8 0000                         .code

9                              org 7FF0h    ;Указание начального адреса программы в ПЗУ

10                                           ;(с учетом того, что старшие

11                                           ;адреса в данной МПС не используются)

12 7FF0                         start:

13 7FF0  E9 C00D 90 90          JMP far ptr BEGIN ;переход на реальное начало программы

14                              org 4000h

15 4000                         BEGIN label far ;начало программы по адресу 4000h

16                                           ; Установка сегментных регистров, организация стека,

17                                           ; программирование параллельного интерфейса, таймера,

18                                           ; контроллера прерываний, контроллера дисплея и клавиатуры

19 4000  FA                        cli    ;Запрещение всех аппаратных прерываний.

20                                        ; Организация стека.

21                                        ; Установка сегментных регистров

22 4001  33 C0                     xor ax,ax

23 4003  8E D0                     mov ss,ax

24 4005  BC 0FFF                   mov sp,0FFFh ; 0FFFh - старшая ячейка ОЗУ

25 4008  8E D8                     mov ds,ax

26                                     ;Программирование параллельного интерфейса .

27                                     ;  Порт А - вывод информации (значения Q4     через ЦАП)

28                                     ; разряды С0-С2 порта С вывод - Y1-Y3

29                                     ; разряд C3 порта C - вывод сигнала "Авария"

30                                     ; разряды С4-С7 порта С - ввод значений Х1-Х4

31 400A  B0 8A                     mov al,10001010b

32 400C  32 C0                     xor al,al

33 400E  E6 53                     out [53h],al

34                                     ;Программирование контроллера прерываний.

35                                     ;СКИ1

36 4010  B0 12                     mov al,byte ptr 00010010b

37 4012  E6 40                     out [40h],al

38                                     ; СКИ2

39 4014  B0 00                     mov al,byte ptr 00000000b

40 4016  E6 41                     out [41h],al

41                                     ; Заполнение таблицы векторов прерываний.

42                                     ;Прерывание 0

43 4018  33 DB                     xor bx,bx

44 401A  C7 07 40C8r               mov [bx],offset IRQ0;

45 401E  C7 47 02 0000s            mov [bx+2],word ptr seg IRQ0

46                                      ;Прерывание 1

47 4023  C7 47 04 4155r            mov [bx+4],offset IRQ1;

48 4028  C7 47 06 0000s            mov [bx+6],word ptr seg IRQ1

49                                      ;Прерывание 2

50 402D  C7 47 08 41AAr            mov [bx+8],offset IRQ2;

51 4032  C7 47 0A 0000s            mov [bx+10],word ptr seg IRQ2

52                                      ; Программирование контроллера клавиатуры/дисплея

53 4037  B0 01                     mov al,00000001b

54 4039  E6 49                     out [49h],al

55 403B  B0 39                     mov al,39h       ;частота перебора линий сканирования

56 403D  E6 49                     out [49h],al

57                                      ;гашение всех индикаторных элементов.