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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[ASMinPAS]- "ж)))" 28.11.01 00:21  Число просмотров: 984
Автор: 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




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


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach