0 / 0 / 0
Регистрация: 10.06.2016
Сообщений: 3

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

10.06.2016, 20:07. Показов 1667. Ответов 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
6213 / 2447 / 403
Регистрация: 29.07.2014
Сообщений: 3,178
Записей в блоге: 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
6213 / 2447 / 403
Регистрация: 29.07.2014
Сообщений: 3,178
Записей в блоге: 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
6213 / 2447 / 403
Регистрация: 29.07.2014
Сообщений: 3,178
Записей в блоге: 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru