Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
TooLikk
0 / 0 / 0
Регистрация: 01.12.2011
Сообщений: 4
1

Помогите с программой вывода на печать 256 символов с лазерного принтера

02.12.2011, 22:40. Просмотров 1605. Ответов 4
Метки нет (Все метки)

Нашел программу печати 256 символов, немножко переделал, так как она работала не совсем корректно.
Изначально она предназначалась для матричного принтера, но по словам преподавателя она должна выводить на печать символы на любом принтере.

Текст программы:
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
99
100
101
102
103
.model small
.data
strin db 'Программа выводит на печать ASCII таблицу. Символы, что не напечатались принтером не поддерживаются$'
.code
alpha:
call strn1
call strn2
call strn3
call strn4
mov dx,0Eh;
call spec;
mov dx,0Fh
call spec;
jmp m2;
 
spec proc near
mov ah,40h
mov bx,04
mov cx,01
call strn1
call strn2
call strn3
call strn4
ret
spec endp
 
strn1 proc near
mov cx,64
mov al,15h
mov dl,0000h
m11:
inc al
mov ah,05h
mov dl,al
int 21h
loop m11
ret
strn1 endp
 
strn2 proc near
mov ah,05h
mov dl,0ah
int 21h
mov ah,05h
mov dl,0dh
int 21h
mov cx,64
mov al,55h
mov dl,0000h
m12:
inc al
mov ah,05h
mov dl,al
int 21h
loop m12
ret
strn2 endp
 
strn3 proc near
mov ah,05h
mov dl,0ah
int 21h
mov ah,05h
mov dl,0dh
int 21h
mov cx,64
mov al,95h
mov dl,0000h
m13:
inc al
mov ah,05h
mov dl,al
int 21h
loop m13
ret
strn3 endp
 
strn4 proc near
mov ah,05h
mov dl,0ah
int 21h
mov ah,05h
mov dl,0dh
int 21h
mov cx,64
mov al,0d5h
mov dl,0000h
m14:
inc al
mov ah,05h
mov dl,al
int 21h
loop m14
ret
strn4 endp
 
m2:xor dx,dx
mov ah,09h
lea dx,[strin]
int 21h
mov ax,4c00h
int 21h
end alpha
Может ли быть причина неработоспособности программы в том что лазерный принтер подключен к компьютеру через USB-порт или же в том что программа запускалась не из под ДОСа, а из под ВиндовсаХР? Ведь на матричном принтере, подключенном через LPT-порт, работала нормально, а сейчас программа "виснет", при этом ничего не происходит, и состояние принтера не меняется.

Добавлено через 22 часа 51 минуту
Немного измененный код, с комментариями:
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
99
100
101
102
103
104
105
106
107
108
109
.model small
.data
strin db 'Программа выводит на печать ASCII таблицу. Символы, что не напечатались принтером не поддерживаются$'
.code
alpha:
call strn1
call strn2
call strn3
call strn4
mov dx,0Eh         ;номер группы спецсимволов
call spec
mov dx,0Fh         ;номер группы спецсимволов
call spec
jmp m2
 
spec proc near       ;процедура печати спецсимволов
mov ah,05h           ;функция управления принтером
mov dl,0ah            ;перевод строки
int 21h     
mov ah,05h           ;функция управления принтером
mov dl,0dh            ;возврат каретки
int 21h
mov ah,40h
mov bx,04
mov cx,01
call strn1
call strn2
call strn3
call strn4
ret
spec endp
 
strn1 proc near       ;первая строка ASCII таблицы
mov cx,64              ;число символов в строке
mov al,15h             ;число, на 1 меньше номера первого символа в строке
mov dl,0000h
m11:
inc al
mov ah,05h            ;функция управления принтером
mov dl,al                ;печать содержимого младшего байта регистра dx
int 21h
loop m11
ret
strn1 endp
 
strn2 proc near     ;вторая строка ASCII таблицы
mov ah,05h          ;функция управления принтером
mov dl,0ah           ;перевод строки
int 21h     
mov ah,05h         ;функция управления принтером
mov dl,0dh          ;возврат каретки
int 21h     
mov cx,64          ;число символов в строке
mov al,55h          ;число, на 1 меньше номера первого символа в строке
mov dl,0000h
m12:
inc al
mov ah,05h          ;функция управления принтером
mov dl,al             ;печать содержимого младшего байта регистра dx
int 21h
loop m12
ret
strn2 endp
 
strn3 proc near        ;третья строка ASCII таблицы
mov ah,05h             ;функция управления принтером
mov dl,0ah              ;перевод строки
int 21h     
mov ah,05h             ;функция управления принтером
mov dl,0dh              ;возврат каретки
int 21h     
mov cx,64               ;число символов в строке
mov al,95h               ;число, на 1 меньше номера первого символа в строке
mov dl,0000h
m13:
inc al
mov ah,05h              ;функция управления принтером
mov dl,al                 ;печать содержимого младшего байта регистра dx
int 21h
loop m13
ret
strn3 endp
 
strn4 proc near          ;четвертая строка ASCII таблицы
mov ah,05h               ;функция управления принтером
mov dl,0ah                ;перевод строки
int 21h      
mov ah,05h               ;функция управления принтером
mov dl,0dh                ;возврат каретки
int 21h     
mov cx,64                 ;число символов в строке
mov al,0d5h               ;число, на 1 меньше номера первого символа в строке
mov dl,0000h
m14:
inc al
mov ah,05h               ;функция управления принтером
mov dl,al                   ;печать содержимого младшего байта регистра dx
int 21h
loop m14
ret
strn4 endp
 
m2:xor dx,dx             ;обнуление регистра dx
mov ah,09h               ;функция вывода на экран
lea dx,strin                ;содержимого регистра dx
int 21h
mov ax,4c00h
int 21h
end alpha
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2011, 22:40
Ответы с готовыми решениями:

Подключение обычного лазерного принтера вместо принтера чеков в 1с предприятие 8 (ресторан)
Добрый день! Подскажите реально подключить к 1с предприятие 8 Ресторан вместо принтера чеков...

Печать без вывода диалога выбора принтера
Задача такая. Нужно чтобы при нажатие на кнопочку печать, внешней обработки, открывается...

Элементы лазерного принтера
Здравствуйте! Исследую лазерный

Выбор лазерного принтера
Всем привет, хочу взять себе лазерник ч/б для печатанья документов. Что вы могли бы мне...

Устройство лазерного принтера
Здравствуйте, подскажите литературу или ссылки в интернете, из чего состоит принтер лазерный?

4
Charles Kludge
Клюг
7647 / 3162 / 383
Регистрация: 03.05.2011
Сообщений: 8,382
02.12.2011, 22:56 2
лазерный принтер подключен к компьютеру через USB-порт или же в том что программа запускалась не из под ДОСа, а из под ВиндовсаХР?
Дело в том, что из ДОСи на USB-принтер без специального драйвера печать вообще невозможна.
А для Хрюши - просто имя принтера не ассоциировано с устройством LPT1, на которое пытается печатать ваша прога. Обратитесь к системному администратору(не преподу), он настроит, это несложно.
1
TooLikk
0 / 0 / 0
Регистрация: 01.12.2011
Сообщений: 4
12.12.2011, 02:12  [ТС] 3
Цитата Сообщение от Charles Kludge Посмотреть сообщение
имя принтера не ассоциировано с устройством LPT1
Спасибо за совет. Эти настройки я нашел и изменил, после чего запустил прогу и получил неоспоримый результат: прога успешно выполнена, а на дисплее принтера - "ПК печать отложена". Вывод: прогресс очевиден - принтер увидел запрос на печать, вот только печатать не захотел. Можно ли изменить такой ход событий так, чтобы в итоге 256 символов распечатались?..
0
TooLikk
0 / 0 / 0
Регистрация: 01.12.2011
Сообщений: 4
25.12.2011, 14:20  [ТС] 4
Итоги: чтобы программа вывела на печать 256 символов, необходимо найти принтер, совместимый с программой (например НР LaserJet 1100), подключить его к LPT-разъему и запустить программу.
0
Charles Kludge
Клюг
7647 / 3162 / 383
Регистрация: 03.05.2011
Сообщений: 8,382
02.02.2012, 15:27 5
Вдогонку - прога DOSPrint позволяет пользователю ассоциировать досовские LPT1-LPT9 с любым доступным ему локальным/сетевым принтером/очередью для печати из ДОС-проги. Freeware.
0
02.02.2012, 15:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.02.2012, 15:27

Посоветуйте выбор лазерного принтера
Печатать около 2-3 тыс. Страниц в месяц. Нужно чтобы обходился в заправке не дорого) бюджет до 10к...

Выбор цветного лазерного принтера
Хочу купить принтер для печати книг и фото. Что можете посоветовать? Бюджет до 220$. Я с Украины,...

Помогите получить HDC принтера вывести печать текста функцией DrawText
Написал программку (для бух.) и хочу сделать свою процедуру печати. Помогите получить HDC принтера...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru