Molniev
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору blaro, такое знание асма ввергло меня в уныние... Это неправильный синтаксис. Есть два варианта вызова функций: 1. Через call. В этом случае, данные помещаються в стек и отдаёться комманда call [имя функции]. 2. Через макрос invoke. Почти так как во втором вашем варианте invoke [имя функции], [параметр1], [параметр2]... Чтоб не быть голословным: Код: include \masm32\include\masm32rt.inc .data ;ltpname db "\\.\LPT1" ltpname db "C:\test.txt" n dd 0 hFile dd 0 .code start: push 0 push 0 ;push OPEN_EXISTING push CREATE_ALWAYS push 0 push 0 push GENERIC_WRITE push offset ltpname call CreateFileA mov hFile, eax push 0 push offset n push 5 push offset ltpname push eax call WriteFile push 0 call ExitProcess end start | программа создат файл C:\test.txt и запищет в него C:\te Если закоментированые строчки раскоментировать, а следующие за ними раскоментировать: Код: ltpname db "\\.\LPT1" ;ltpname db "C:\test.txt" push OPEN_EXISTING ;push CREATE_ALWAYS | то по идее тоже самое должно быть выведено на ваш принтер. Аналогичный код для invoke: Код: include \masm32\include\masm32rt.inc .data ltpname db "C:\test.txt" n dd 0 .code start: invoke CreateFileA, offset ltpname, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0 invoke WriteFile, eax, offset ltpname, 5, offset n, 0 invoke ExitProcess, 0 end start | Ну и для полного сщастья, в той книге, что я советовал выше (Assembler: Практикум, В.И. Юров) - на страницах 267, 268 подробно и с коментариами расписан аналог первого варианта. Советую так же все же ознакомиться с форматом комманды call и макросом invoke. Ну и дополнить код обработкой ошибок. PS. Во всех языках программирования и ассемблере в том числе, строки принято как то выделять. Обычно кавычками. В ассемблере двойными. Поэтому \\.\LPT1 - ну совсем не правильно, а вот "\\.\LPT1" - ближе к истине. И я не уверен что LPT портов, как COM в системе много. Попробуйте вариант без единицы в имени. "\\.\LPT" PPS. Это действительно очень слабое знание ассемблера - лучше взяться за книги, чем за клавиатуру. | Всего записей: 176 | Зарегистр. 13-03-2008 | Отправлено: 18:48 18-04-2011 | Исправлено: Molniev, 18:53 18-04-2011 |
|