Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| | | |
[ASMinPAS]- ? 28.11.01 01:37 Число просмотров: 956
Автор: kar Статус: Незарегистрированный пользователь
|
> Тогда надоть ему 12 еще кидать - 1 байт - до кучи. > А еще лучше - просто "файл" - PRN твой > открывать и закрывать до и после печати.
я ызвиняюсь но я ничего не понял из твоих слов.
под словом 'жует' понимаю что мой принтер берет бумагу
,немного затягивает и там ее оставляет(вдобавок горит ламп.
"подачи бумаги" если я не ошибаюсь в ее названии,в рез-те - ничего
нет)
не понял вот выше стоящ. 3 строчки - если можно поясни.
|
<programming>
|
[ASMinPAS]-string to printer. 27.11.01 20:32
Автор: kar Статус: Незарегистрированный пользователь
|
такая траба:
хочу вывести стр на принтер...использую 40 fun 21h
ошибки ф-я никакой не выдает(ax=cx),но почему-то принтер на нее жует
бумагу и отказывается печатать?
есть какие-нить мысли или предложения?
|
|
[ASMinPAS]-string to printer. 27.11.01 23:44
Автор: Chingachguk <Chingachguk> Статус: Member
|
> такая траба: > хочу вывести стр на принтер...использую 40 fun 21h > ошибки ф-я никакой не выдает(ax=cx),но почему-то принтер на > нее жует > бумагу и отказывается печатать? > есть какие-нить мысли или предложения?
А как ты это делаешь ?
Может, так:
MyString : string[20] = 'test';
asm
{...}
mov dx,offset MyString
int 21h
end;
Если так, то ds:dx = указывает на первый байт - количество символов в строке.
А совсем не на 't' ж)))
|
| |
[ASMinPAS]- "ж)))" 28.11.01 00:05
Автор: kar Статус: Незарегистрированный пользователь
|
хаха о4ень смешно)
код:
{$M 16384,0,9000}
procedure prnt_scr;assembler;
asm
push ds
push es
push bx
mov ah,48h
mov bx,125
int 21h
push ax
pop es {es=save seg of block}
push 0b800h
pop ds {ds=b800}
xor si,si
xor di,di
mov cx,80*25
@l1:lodsw
stosb
loop @l1 {[b800]->[free 2000bytes mem]}
mov ax,3
int 10h {prosto tak - mogno ybrat'}
mov ah,08h
int 21h
mov ah,40h { vuvod str "ж)))" }
mov bx,4
push es
pop ds
xor dx,dx
mov cx,80*25
int 21h
mov ah,49h {dispose}
int 21h
pop bx {straxyem gopy}
pop es
pop ds
end;
begin
prnt_scr;
end.
конец кода.
да кстати обрати плз внимание на мой пред-й вопрос.
|
| | |
[ASMinPAS]- "ж)))" 28.11.01 00:21
Автор: Chingachguk <Chingachguk> Статус: Member
|
> хаха о4ень смешно) > ... > конец кода.
Хороший код - у меня все работает.
Принтер - ЛКусто из под 98 вин.
Что ты имеешь в виду под "жует" ?
Не прогоняет стрнаницу ?
Тогда надоть ему 12 еще кидать - 1 байт - до кучи.
А еще лучше - просто "файл" - PRN твой
открывать и закрывать до и после печати.
> да кстати обрати плз внимание на мой пред-й вопрос.
Сорр, я в хипах не силен.
Почему просто ты не получаешь блок от паса и через указатель на
него не работаешь с ним на асме ?
|
| | | |
[ASMinPAS]- ? 28.11.01 01:37
Автор: kar Статус: Незарегистрированный пользователь
|
> Тогда надоть ему 12 еще кидать - 1 байт - до кучи. > А еще лучше - просто "файл" - PRN твой > открывать и закрывать до и после печати.
я ызвиняюсь но я ничего не понял из твоих слов.
под словом 'жует' понимаю что мой принтер берет бумагу
,немного затягивает и там ее оставляет(вдобавок горит ламп.
"подачи бумаги" если я не ошибаюсь в ее названии,в рез-те - ничего
нет)
не понял вот выше стоящ. 3 строчки - если можно поясни.
|
| | | | |
[ASMinPAS]- ! 28.11.01 09:27
Автор: Chingachguk <Chingachguk> Статус: Member
|
> > Тогда надоть ему 12 еще кидать - 1 байт - до кучи. > > А еще лучше - просто "файл" - PRN твой > > открывать и закрывать до и после печати. > я ызвиняюсь но я ничего не понял из твоих слов. > под словом 'жует' понимаю что мой принтер берет бумагу > ,немного затягивает и там ее оставляет(вдобавок горит ламп. > "подачи бумаги" если я не ошибаюсь в ее названии,в рез-те - > ничего > нет)
Все правильно ! А почему так ? Потому, что на принтер,
чтобы он прогон бумаги выполнил, надо послать
(на печать) символ с кодом 12. Я так делал когда-то, только
использовал ф-цию ah=05h, а не файловую, как ты.
Но ! Потом я понял, что гораздо проще печатать через файл "PRN"
- что ты и делаешь. Но прогон страницы не выполнялся, так же,
как и у тебя... Тогда я просто открывал файл перед печатью(prn),
закрывал его после - и дос(виндовс) сама выталкивала страницу !
> не понял вот выше стоящ. 3 строчки - если можно поясни.
|
| | | | | |
[ASMinPAS]- ! 28.11.01 19:42
Автор: kar Статус: Незарегистрированный пользователь
|
> Но ! Потом я понял, что гораздо проще печатать через файл > "PRN" > - что ты и делаешь. Но прогон страницы не выполнялся, так > же, > как и у тебя... Тогда я просто открывал файл перед > печатью(prn), > закрывал его после
ты не мог ли пояснить c файлом prn?
как я понял (раз уж я так делаю) что это наименование моей fun
(тем более у меня она называется "писать в файл через описатель
") тогда всплывает вопрос о открытии и закрытии файла?
|
| | | | | | |
[ASMinPAS]- PRN ! 28.11.01 23:02
Автор: Chingachguk <Chingachguk> Статус: Member
|
> ты не мог ли пояснить c файлом prn? > как я понял (раз уж я так делаю) что это наименование моей > fun > (тем более у меня она называется "писать в файл через > описатель > ") тогда всплывает вопрос о открытии и закрытии файла?
Смотри ! Грят, было раньше у Юникса, а теперь и у доса такая фича -
- работать с устройствами следующим образом:
1) Открываешь устройство(файл, к примеру) по его имени.
Открыв его, получаешь дескриптор для работы с ним (только !).
В данном случае этот дескриптор тебе возвращают ф-ции 3ch(создать),
3dh(открыть) или еще какие в виде ворда в ax.
2) Для работы с устройством (писать, читать) ты используешь только
этот дескриптор - ос сама въедет, с чем ты хочешь иметь дело.
3) Поработав с у-вом, закрой его (3eh) опять через дескриптор.
У доса же есть предопределенные дескрипторы, которые УЖЕ связаны
с устройствами: 0 - точно не помню, кажись, экран, а вот 4 - это дескриптор
для ПРИНТЕРА ПО УМОЛЧАНИЮ. Да, да, если у тебя в винде стоит сетевой
принтер по умолчанию, то писать как раз ты будешь на него. !
В нашем случае делать можно так:
STDPRINTER db 'PRN',0 ; Вот он, "файл" !
mov ax,3d02h
mov dx,offset STDPRINTER
int 21h
mov bx,ax
; И в ax получишь 4 !
; Запиши в него чего-нить
; И закрой
mov ah,3eh
int 21h
И дос увидит, что файл ты закрыл - файл PRN - и прогонит тебе
страницу. Чего не сделает, если ты его не закроешь !
|
|
|