Костя можєш подсказать г де в єтой програме ошибка ? И можєтли вообще она определять марку или тип плотера, принтера ?
Буду очень благодарен ;=========================================================================
; КОМПИЛЯЦИЯ:
; tasm32 /ml cons1.asm
; tlink32 /ap consl.obj
;
;=========================================================================
.386P
;Плоская модель памяти.
.MODEL FLAT, STDCALL
;Константы.
STD_OUTPUT_HANDLE equ -11
;Прототипы внешних процедур.
EXTERN GetStdHandle:NEAR
EXTERN WriteConsoleA:NEAR
EXTERN GetProfileStringA:NEAR
EXTERN ExitProcess:NEAR
;Директивы компоновщику для подключения библиотек.
includelib IMPORT32.LIB
;Сегмент данных.
_DATA SEGMENT DWORD PUBLIC USE32 'DATA'
;Строка в DOS-овской!!! кодировке.
STR1 DB "Console Application",0
LENS DD ? ;Количество выведенных символов.
RES DD ?
HCONS DD ?
dev DB "device",0
Win DB "Windows",0
PRNNAME DB ? ; Printer's name
_DATA ENDS
;Сегмент кода.
_TEXT SEGMENT DWORD PUBLIC USE32 'CODE'
START:
;Получить HANDLE вывода.
PUSH STD_OUTPUT_HANDLE
CALL GetStdHandle
MOV HCONS, EAX
PUSH 255
PUSH OFFSET PRNNAME
PUSH 0
PUSH OFFSET dev
PUSH OFFSET Win
CALL GetProfileStringA //
;Длина строки.
PUSH OFFSET PRNNAME
CALL LENSTR
;Вывести строку.
PUSH OFFSET RES ;Резерв.
PUSH OFFSET LENS ;Выведено символов.
PUSH EBX ;Длина строки.
PUSH OFFSET PRNNAME ;Адрес строки.
PUSH HCONS ;HANDLE вывода.
CALL WriteConsoleA
PUSH 0
CALL ExitProcess
;Строка - [EBP+08H].
;Длина в ЕВХ
LENSTR PROC
PUSH EBP
MOV EBP,ESP
PUSH EAX
;----------------------
CLD
MOV EDI,DWORD PTR [EBP+08H]
MOV EBX,EDI
MOV ECX,100 ;Ограничить длину строки.
XOR AL,AL
REPNE SCASB ;Найти символ 0.
SUB EDI,EBX ;Длина строки, включая 0.
MOV EBX,EDI
DEC EBX
;----------------------
POP EAX
POP EBP
RET 4
LENSTR ENDP
_TEXT ENDS
END START
Добавлено (20.05.2008, 11:51)
---------------------------------------------
Так, я ужє немножко розобрался в ней...Вот ошибки что нужно исправить :
Используем EXTRN, а не EXTERN,
убираем грязь там, где // стоит. Это не Си и это не комент.
Ну и юзаем tasm32 и tlink32.
Ещё, она работает совсем не так как мне нужно.Она прост пишет когда запускаеш её : Micrisoft Office Document Image Writer,winspool,Ne00. Можэт ли кто-то обяснить как поменять что бы она писала, то что мне нужно.
Или если кто-то можэт изменить как-то её, что бы она всётаки определяла марку и тип плоттера ( принтера ) Был бы очень благодарен!Спасибо заранее !..