Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 10.06.2016
Сообщений: 3

Составить программу тестирования параллельного порта, к которому подключен матричный принтер

10.06.2016, 20:07. Показов 1646. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здравствуйте. Тут такое дело, ввели один семестр ассемблера я вообще не понимаю не фига, учусь заочно естественно. Нам дали задание на экзамен 2 теоретических вопроса и одна задача каждому. Может кто сделает? Кому скучно или просто интересно это. Буду премного благодарен.

Вот само задание

Составить программу тестирования параллельного порта, к которому подключен матричный принтер. Если принтер не включен, то печатать сообщение "Принтер не включен", иначе "Тест прошел успешно". Прерывание по ESC.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.06.2016, 20:07
Ответы с готовыми решениями:

Программа тестирования параллельного порта
Всем привет! Ребят, озадачили меня вот такой задачкой Составить программу тестирования параллельного порта, к которому подключен...

Найти порт коммутатора, к которому подключен хост
Какими командами и какой утилитой можно узнать порт DGS-3120-48TC к которому подключен хост. В инете много примеров про Сisco, но я не...

Не печатает матричный принтер
Здравствуйте! возникла проблема: на одном из 3 одинаковых по железу компов (windows 7 pro, лицензия) перестал печатать матричный принтер...

4
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6211 / 2445 / 403
Регистрация: 29.07.2014
Сообщений: 3,175
Записей в блоге: 4
10.06.2016, 20:14
..мда. С тестом софтины будут проблемы. Где найти-то такой принтер, чтоб опросить его? Если только наугад писать..
0
0 / 0 / 0
Регистрация: 10.06.2016
Сообщений: 3
10.06.2016, 20:33  [ТС]
Можно и на угадай лишь бы на правду похоже было....так как в универе матричных принтеров таких как Epson Fx-890 нету не в одной аудитории где проводят практические занятия
0
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6211 / 2445 / 403
Регистрация: 29.07.2014
Сообщений: 3,175
Записей в блоге: 4
10.06.2016, 23:43
Цитата Сообщение от Kr_anto Посмотреть сообщение
тестирования параллельного порта,
..можно осуществить несколькими способами: порты в/в, через int(17), или-же fn.(40) дос, установив дескриптор в 4 (устройство "PRN"). Чтобы было правдоподобно можно организовать скан всех/четырёх портов, и номер найденного вывести на экран. Нужно учитывать, что на этом порту может висеть не обязательно матричный, но и любой принт. Функции будут возвращать данные любых устройств, которые висят на LPT.
Почитай про INT-17h, и про INT-21h:AH=40h,BX=4
0
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6211 / 2445 / 403
Регистрация: 29.07.2014
Сообщений: 3,175
Записей в блоге: 4
11.06.2016, 12:05
Лучший ответ Сообщение было отмечено Constantin Cat как решение

Решение

Kr_anto, вот тебе вариант. Сканит параллельные порты и если находит устройство, то отправляет ему тестовую станицу печати. Вне зависимости от результата поиска выводит статус порта на экран. Есть описание битовых полей этого статуса (биты считаются справа-налево, отсчёт с нуля). Стартует по-клавише(S), выходит по-клавише(Q). Вывод на печать не тестировал - нет принтера, но в теории должно работать:

Кликните здесь для просмотра всего текста

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
; Fasm code.........
org 100h
jmp start
 
mes0    db  13,10,' SCAN LPT DEVICE ----- [S:scan | Q:quit] ---'
        db  13,10,' ===========================================',13,10,' $'
mes1    db  13,10,'  LPT-1: $'
mes2    db  13,10,' -----------------------------'
        db  13,10,' Status: $'
mes3    db  13
        db  10,10,'    Bit: 7 - Busy      0=Error'
        db  13,10,'         6 - Return    0=OK'
        db  13,10,'         5 - Paper     0=OK'
        db  13,10,'         4 - On-line   0=Error'
        db  13,10,'         3 - Device    0=Error'
        db  13,10,'         2 - Reserved  0'
        db  13,10,'         1 - Reserved  0'
        db  13,10,'         0 - TimeOut   0=OK$'
 
mes4    db  13
        db  10,10,' Print Test-Page? y/n ...$'
string  db  13,10,' This is "TEST-PAGE'
        db  13,10,' ************************'
        db  13,10,' ABCDEF....0123456789','$'
len     =   $ - string           ; длина строки для печати
 
start:  mov   dx,mes0            ;
        call  message            ;
@cmd1:  xor   ax,ax              ; ждём команду юзера..
        int   16h                ;
        cmp   al,'Q'             ; Q - выход
        je    exit               ;
        cmp   al,'S'             ; S - поиск активных портов
        jne   @cmd1              ; игнор остальных клавиш
 
        mov   cx,3               ; всего LPT-портов в системе
        xor   bx,bx              ; начинаем с нулевого (LPT1)
@find:  mov   dx,mes1            ; мессага
        call  message            ;
        mov   dx,bx              ; DX - номер порта
        mov   ah,2               ; дать статус!
        int   17h                ;
        test  ah,1000b           ; проверим бит ошибки
        jnz   @okey              ; ОК - если бит не нуль (порт найден)
        mov   al,'0'             ; иначе: ошибка (выводим нуль)
        int   29h                ;
        inc   bx                 ; сл.порт..
        inc   byte[mes1+8]       ; меняем в мессаге № порта
        loop  @find              ; мотаем цикл СХ-раз..
        jmp   @begin             ; ошибка поиска! Обработаем её..
 
@okey:  call  PrintPage          ; порт нашёлся!
                                 ; Распечатываем тестовую страницу
@begin: push  ax                 ; в AH лежит статус порта. Запомним его..
        mov   dx,mes2            ;
        call  message            ;
        pop   bx                 ; выводим статус на экран в виде маски
        mov   cx,8               ; всего битов для вывода
@code:  xor   ax,ax              ;
        shld  ax,bx,1            ;
        or    al,30h             ;
        int   29h                ; выводим очередной бит на экран
        shl   bx,1               ; следующий бит..
        loop  @code              ; мотаем цикл СХ-раз..
 
        mov   dx,mes3            ; выводим описание битовой маски
        call  message            ;
 
exit:   xor   ax,ax              ;
        int   16h                ;
        int   20h                ; на выход!
 
:-----------------------------------------------------------------------
;ннннннннннннннннннн П Р О Ц Е Д У Р Ы ннннннннннннннннннннннннннннннннн
message: mov  ah,9               ;
         int  21h                ;
         ret                     ;
;---------------------------------------------------------------
PrintPage:                       ; Печать тестовой станицы
        push  ax                 ; запомним возвращённый статус порта
        mov   al,'1'             ; метка найденного принтера
        int   29h                ;
        mov   dx,mes4            ;
        call  message            ;
@cmd2:  xor   ax,ax              ; распечатать страницу?
        int   16h                ; yes/no
        cmp   al,'n'             ;
        je    @fuck              ; нет - молча выходим
        cmp   al,'y'             ;
        jne   @cmd2              ;
        xor   ax,ax              ; да - fn(0) INT-17h
        mov   si,string          ; адрес строки
        mov   cx,len             ; её длина
@prn:   lodsb                    ;
        int   17h                ; выводим строку по-символьно!
        loop  @prn               ;
@fuck:  pop   ax                 ; возвращаем статус порта
        ret                      ;
Миниатюры
Составить программу тестирования параллельного порта, к которому подключен матричный принтер  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.06.2016, 12:05
Помогаю со студенческими работами здесь

Матричный принтер - управление ПГ
Ребята, нужна помощь. Давно ищу способ программно или с помощью ESC-последовательностей управлять ПГ матричного принтера, тоесть: заставить...

Не работает эмулятор параллельного порта XDS 510
На EBAY купил эмулятор параллельного порта XDS 510 от TI. имеет 2 разъема-стандартный 14-JTAG и 25 для ЛПТ порта.Не работает. Разобрал, на...

Матричный принтер печатает мимо
Вобщем есть принтер Epson fx-890 печатает на готовых бланках, иногда(!) начинает промахиваться, тоесть печатает не в том месте где должен....

Получить данные о сети: IP роутера к которому подключен телефон, MAC
Как получить данные о сети. а именно - IP роутера к которому подключен телефон, MAC и т.д.

Печать из DOS программ на матричный принтер
Добрый день, ПК с win10, принтер Epson 2190, необходимо печатать обычные документы, и из программы APM, стоит программа dosprn (установлен...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru