информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаПортрет посетителяВсе любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
[ASMinPAS]-string to printer. 27.11.01 23:44  Число просмотров: 1070
Автор: Chingachguk <Chingachguk> Статус: Member
<"чистая" ссылка>
> такая траба:
> хочу вывести стр на принтер...использую 40 fun 21h
> ошибки ф-я никакой не выдает(ax=cx),но почему-то принтер на
> нее жует
> бумагу и отказывается печатать?
> есть какие-нить мысли или предложения?

А как ты это делаешь ?
Может, так:

MyString : string[20] = 'test';
asm
{...}
mov dx,offset MyString
int 21h
end;

Если так, то ds:dx = указывает на первый байт - количество символов в строке.
А совсем не на 't' ж)))
<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 - и прогонит тебе
страницу. Чего не сделает, если ты его не закроешь !

1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach