информационная безопасность
без паники и всерьез
 подробно о проекте
Все любят медГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Критическая уязвимость UEFI позволяет... 
 Японский хостинг попросил клиентов... 
 Компрометация eMudhra вынудила... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[ASMinPAS]- "ж)))" 28.11.01 00:21  Число просмотров: 1245
Автор: Chingachguk <Chingachguk> Статус: Member
<"чистая" ссылка>
> хаха о4ень смешно)
> ...
> конец кода.

Хороший код - у меня все работает.
Принтер - ЛКусто из под 98 вин.
Что ты имеешь в виду под "жует" ?
Не прогоняет стрнаницу ?
Тогда надоть ему 12 еще кидать - 1 байт - до кучи.
А еще лучше - просто "файл" - PRN твой
открывать и закрывать до и после печати.

> да кстати обрати плз внимание на мой пред-й вопрос.

Сорр, я в хипах не силен.
Почему просто ты не получаешь блок от паса и через указатель на
него не работаешь с ним на асме ?
<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





Рейтинг@Mail.ru


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