Четверг, 17.07.2025, 11:24
Приветствую Вас Гость |Ваши ЛС: | Регистрация | Вход

Журнал "Мой Компьютер"

Меню сайта
Форма входа
Друзья сайта
Нас посетили

Помогите с програмой ! - Народный Форум

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Помогите с програмой !
TherinoДата: Суббота, 10.05.2008, 11:36 | Сообщение # 1
NewComer(Новичок)
Группа: Пользователи
Сообщений: 2
Репутация: 0
Статус: Offline
Люди выручайте.Очень нужна програма на Assembler, которая будет определять марку и тип плоттера ( или хоть что-то из этого ) Буду очень благодарен тому кто поможэт ! Заранее спасибо ! Жду ответа... sad
 
TherinoДата: Вторник, 20.05.2008, 11:51 | Сообщение # 2
NewComer(Новичок)
Группа: Пользователи
Сообщений: 2
Репутация: 0
Статус: Offline
Костя можєш подсказать г де в єтой програме ошибка ? И можєтли вообще она определять марку или тип плотера, принтера ?
Буду очень благодарен

;=========================================================================
; КОМПИЛЯЦИЯ:
; 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 // smile
;Длина строки.
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. Можэт ли кто-то обяснить как поменять что бы она писала, то что мне нужно.
Или если кто-то можэт изменить как-то её, что бы она всётаки определяла марку и тип плоттера ( принтера ) Был бы очень благодарен!Спасибо заранее !..

 
  • Страница 1 из 1
  • 1
Поиск: