Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Tlink hello, hello, , import.lib, hello




Tasm hello.asm

This program must be run under Microsoft Windows.

Используя данную директиву вы можете написать программу которая будет прекрасно работать как под Dos так и под Windows.

После написания файлов hello.asm и hello.def вы должны компилировать и компоновать программу, используя такие параметры для Turbo Assembler:

После компиляции вы должны получить.OBJ файл.

После компоновки вы получите готовый к исполнению файл Windows:)

Если вы используете импорт функций API или импорт функций из других DLL, вы обязательно должны включить в компоновку библиотеку import.lib для 16-битных приложений, или библиотеку import32.lib для 32-битных приложений.

 

Исходный текст программы


.model large, WINDOWS PASCAL

; Подключаем файл где описаны константы (типа "MB_OK", "MB_ICONEXCLAMATION")

include windows.inc

; Говорим что будем использовать функции Windows API

extrn MESSAGEBOX:proc

extrn INITAPP:PROC

extrn INITTASK:PROC

; Сегмент данных

.data

; резервируем память для служебной области памяти

freespace db 16 dup(0)

; заголовок диалогового окна

lpszTitle db 'Generic Sample Assembly Application', 0

; текст диалогового окна

lpszText db 'Hello World!', 0

; идентификатор приложения

hInstance dw 0

;Сегмент кода

.code

; точка входа в приложение (На самом деле WinMain)

start:

; Инициализируем задачу и получаем входные параметры

call INITTASK

or ax, ax

; Если инициализация прошла успешно

jnz @@OK

; Если ошибка

jmp @@Fail

@@OK:

; Сохраняем HINSTANCE

mov [hInstance], di

; Инициализируем приложение

call INITAPP, hInstance

or ax, ax

jnz @@InitOK

@@Fail:

; Если инициализация завершилась неудачно

mov ax, 4CFFh

int 21h; terminate program

@@InitOK:

; Выводим на экран диалоговое окно

call MESSAGEBOX, 0, ds offset lpszText, ds offset lpszTitle, MB_OK+MB_ICONEXCLAMATION

;завершение приложения

mov ax, 4c00h

int 21h

end start


 

Текст MAKEFILE:


# Make file for Turbo Assembler WAP example.

# Copyright (c) 1996 by Borland International, Inc.

# make -B Will build wap.exe

# make -B -DDEBUG Will build the debug version of wap.exe

NAME = HELLO

OBJS = $(NAME).obj

DEF = $(NAME).def

!if $d(DEBUG)

TASMDEBUG=/zi

LINKDEBUG=/v

!else

TASMDEBUG=

LINKDEBUG=

!endif

!if $d(MAKEDIR)

IMPORT=$(MAKEDIR)\..\lib\import

THEINCLUDE=/i$(MAKEDIR)\..\include

!else

IMPORT=import

THEINCLUDE=

!endif

$(NAME).EXE: $(OBJS) $(DEF)

D:\TASM\BIN\tlink /Twe $(LINKDEBUG) $(OBJS), $(NAME),, $(IMPORT), $(DEF)

.asm.obj:

D:\TASM\BIN\tasm $(TASMDEBUG) /ml $(THEINCLUDE) $&.asm

 


Текст файла hello.def

NAME HELLO

EXETYPE WINDOWS

CODE MOVABLE DISCARDABLE

DATA MOVABLE MULTIPLE DISCARDABLE

STACKSIZE 5120

HEAPSIZE 4096

 

Результат работы исходной программы

 




Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 297; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.