Реферат Курсовая Конспект
Теоретические сведения - раздел Компьютеры, Темы для предварительной проработки: объекты ядра ОС Windows, API WIN32, MASM Рассмотрим Пример Консольной Программы Для Ос Windows. ...
|
Рассмотрим пример консольной программы для ОС Windows.
Пример. Программа выводит текст в консоли, ждет 5 секунд и завершает свою работу.
.386
.model flat,stdcall
option casemap:none
includelib kernel32.lib
include windows.inc
include kernel32.inc
.const
sTitle db 'Console Application',0
sText1 db 'This Is The Text. Sleeping 5 secs.'
.code
Lngth 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
Lngth ENDP
Main PROC
LOCAL hStdout :DWORD
LOCAL dSize :DWORD
invoke SetConsoleTitle, offset sTitle
invoke GetStdHandle, STD_OUTPUT_HANDLE
mov hStdout,EAX
push offset sText1
call Lngth
mov dSize,EBX
invoke WriteConsole, hStdout, offset sText1, dSize, NULL, NULL
invoke Sleep, 5000d
invoke ExitProcess, NULL
Main ENDP
end Main
Вызов системных функций API win32 из программы на ассемблере подчиняется набору соглашений stdcall: именование функций – как в языке C, передача аргументов – как в языке Pascal. С точки зрения прикладного программиста и с учетом специфики Windows и MASM эти соглашения заключаются в следующем:
Соблюдение перечисленных соглашений обеспечивается компилятором автоматически. Для этого необходимо включить в начало исходного файла комбинацию директив:
.386
model flat,stdcall
Директиву .386 можно заменить на более высокую в зависимости от того, какой процессор используется. Директива model определяет сегментную модель приложения. Для всех приложений win32 она должна иметь именно такой вид.
Для вызова API функций используется оператор invoke. Приведем в качестве примера два эквивалентных фрагмента программы:
push NULL
push NULL
push dSize
push offset sText1
push hStdout
call WriteConsole
и
invoke WriteConsole, hStdout, offset sText1, dSize, NULL, NULL
Для создания исполняемого модуля консольного приложения необходимо использовать транслятор ml с параметрами:
ml /c /coff FILE.asm
и линкер link с параметрами
link /SUBSYSTEM:CONSOLE FILE.obj
Постановка задачи: разработать консольное приложение в среде программирования MASM. В качестве задачи выбрать любое консольное приложение, написанное ранее на лабораторных работах по Системному программному обеспечению в среде программирования Microsoft Visual C++.
– Конец работы –
Эта тема принадлежит разделу:
Консольные приложения на ассемблере для ОС Windows... Цель работы изучить основные механизмы создания консольных приложений на ассемблере в операционной системе Windows...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Теоретические сведения
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов