Обмен по шине IEEE-488

Тема в разделе "WASM.BEGINNERS", создана пользователем rcarlos, 26 сен 2007.

  1. rcarlos

    rcarlos New Member

    Публикаций:
    0
    Регистрация:
    25 сен 2007
    Сообщения:
    3
    Здравствуйте! Извините, что пришел с таким(возможно очень легким или тупым вопросом, но я, если честно не могу сделать) вопросом. Если кто может помочь или что то подсазать, будьте добры помогите вот с такой задачкой. Я с портами пока не умею работать, а хотелось бы понять и научиться. Заранее большое спасибо.

    Тема: Состав и структура системы ввода-вывода современного ПК.
    Тема: Программирование основных режимов обмена интерфейса IEEE-488 (канал общего пользования).

    Контроллер, управляющий обменом по шине IEEE488, использует три порта ввода-вывода процессора.

    - порт 0200h, определяющий режим работы контроллера "говорящий" - "слушающий". Нулевое значение записываемого в порт байта означает режим "говорящий"; ненулевое - режим "слушающий".
    - порт 0202h обеспечивает управление линиями синхронизации и управления либо прием сигналов по этим линиям в соответствии с таблицей 1.

    Табл.1.
    Номер бита 7 6 5 4 3 2 1 0
    Линия УП СД ГП ДП ЗО ДУ ОИ КП

    - порт 0204h обеспечивает установление байта данных на линиях данных.


    Задание для выполнения лабораторной работы:

    1 Разработать алгоритмы и соответствующие программные процедуры на языке высокого уровня информационного обмена по шине IEEE488:
    - вывода байта данных;
    - ввода байта данных;
    - вывода байта команды.

    Надо написать как бы три блока для ввода байта данных, для вывода и для ввода байта команд. Вот мои попытка(3 моих блока, которые я пытался сделать)

    Код (Text):
    1. ;          ВВОД БАЙТА ДАННЫХ
    2. ;          
    3. ;ВЫПОЛНИЛ: студент группы 4-СKC-76 Бессмельцкв Андрей
    4.  
    5.  
    6. ;-------Сегмент данных-------------------------------------
    7. DATASG      SEGMENT PARA    'Data'
    8.  
    9.  
    10. DATASG      ENDS               
    11. ;-----------Конец сегмента данных--------------------------
    12.  
    13. ;--------------------Сегмент стека-------------------------
    14. STK     SEGMENT STACK
    15. DB      256 DUP ('?')
    16. STK         ENDS               
    17. ;---------------Конец сегмента стека-----------------------
    18.  
    19. ;------------------------Сегмент кода---------------------
    20. CODE        SEGMENT PARA    PUBLIC  'CODE'
    21. MAIN    PROC FAR
    22. ASSUME  CS:CODE, DS:DATASG, ES:DATASG, SS:STK
    23.  
    24. XOR AL,AL     ; устанавливаем на адаптере 0,
    25. MOV DX,0200h      ; показываем, что контроллер cлушатель
    26. MOV DX,0204h
    27. IN  AL,DX     ;вводим  байт
    28.          
    29.  
    30.  
    31. CODE ENDS
    32. MAIN ENDP
    33. END  MAIN
    34.  
    35.  
    36.  
    37.  
    38. ;          ВЫВОД БАЙТА ДАННЫХ
    39. ;          
    40. ;ВЫПОЛНИЛ: студент группы 4-СKC-76 Бессмельцкв Андрей
    41.  
    42.  
    43. ;-------Сегмент данных-------------------------------------
    44. DATASG      SEGMENT PARA    'Data'
    45.  
    46.  
    47. DATASG      ENDS               
    48. ;-----------Конец сегмента данных--------------------------
    49.  
    50. ;--------------------Сегмент стека-------------------------
    51. STK     SEGMENT STACK
    52. DB      256 DUP ('?')
    53. STK         ENDS               
    54. ;---------------Конец сегмента стека-----------------------
    55.  
    56. ;------------------------Сегмент кода---------------------
    57. CODE        SEGMENT PARA    PUBLIC  'CODE'
    58. MAIN    PROC FAR
    59. ASSUME  CS:CODE, DS:DATASG, ES:DATASG, SS:STK
    60.  
    61. XOR AL,AL    ; устанавливаем на адаптере 0,
    62. MOV DX,0200h     ; показываем, что контроллер говорящий
    63. MOV AL,10010101b  ; заносим байт данных
    64. MOV DX,0204h
    65. OUT DX,AL    ; байт данных на шине
    66.          
    67.  
    68.  
    69. CODE ENDS
    70. MAIN ENDP
    71. END  MAIN
    72.  
    73.  
    74.  
    75.  
    76. ;          ВЫВОД БАЙТА  КОМАНДЫ
    77. ;          
    78. ;ВЫПОЛНИЛ: студент группы 4-СKC-76 Бессмельцкв Андрей
    79.  
    80.  
    81. ;-------Сегмент данных-------------------------------------
    82. DATASG      SEGMENT PARA    'Data'
    83.  
    84.  
    85. DATASG      ENDS               
    86. ;-----------Конец сегмента данных--------------------------
    87.  
    88. ;--------------------Сегмент стека-------------------------
    89. STK     SEGMENT STACK
    90. DB      256 DUP ('?')
    91. STK         ENDS               
    92. ;---------------Конец сегмента стека-----------------------
    93.  
    94. ;------------------------Сегмент кода---------------------
    95. CODE        SEGMENT PARA    PUBLIC  'CODE'
    96. MAIN    PROC FAR
    97. ASSUME  CS:CODE, DS:DATASG, ES:DATASG, SS:STK
    98.  
    99. XOR AL,AL     ; устанавливаем  0,
    100. MOV DX,0202h     
    101. IN  AL,DX
    102. AND AL,7Fh
    103. OUT DX,AL     ;выыодим  байт
    104. XOR AL,AL
    105. MOV DX,0204h
    106. MOV AL,10110101b
    107. IN  AL,DX
    108.          
    109.  
    110.  
    111. CODE ENDS
    112. MAIN ENDP
    113. END  MAIN