· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.ASSEMBLER —› Написание Дос Расширителя для Фасма

Посл.отвђт Сообщенiе


Дата: Июн 28, 2003 17:19:45

Народ, кого интересует сабж? А то такой хороший Фасм, а из-за отсутствия obj с расширителями заморочки. Да и PM разобраться неплохо. Кого интересует, пишите в форум или мне на мыло.[email=]kolia_85@rambler.ru[/email]


Дата: Июл 5, 2003 15:51:16 · Поправил: bsl_zcs

Зачем?

Была такая чудная вещь 32bitcom от Maxwell Sayles aka Fysx. DPMI DOS-extender, размером 83 байта.

Гугль его находит, например, здесь:
http://www.brillianet.com/programming/protected_mode/nec/

Единственным его недостатком, была ненулевая база дефолтного селектора.

Так вот, когда-то давно, при написании 4k-intro на насме, мне стало лень переделывать тасмовский текст экстендера под насмовский синтаксис, поэтому я его собрал в бинарник, и подключал банально incbin-ом. :)

Сейчас буквально за пять минут глянул, с фасмом это тоже прекрасно работает.

Выглядит его использование так:
____________________________________________
		org	100h
		use32
		file	"extender.bin"
;============== ======= ==================================================
SelBase 	equ	[ds:0000FFF6h]
;============== ======= ==================================================
		; Графический режим
		push	13h
		pop	eax
		int	10h
		; Адрес видеопамяти
		mov	eax,0A0000h
		sub	eax,SelBase
		mov	[VideoMem],eax
;-------------- ------- --------------------------------------------------
		; Примитивный пример
main:
		mov	edi,[VideoMem]

		mov	ebx,200
.loopy:
		mov	ecx,320
.loopx:

		mov	eax,ebx
		add	eax,esi
		xor	eax,ecx
		and	al,0Fh
		add	al,10h
		stosb

		loop	.loopx
		dec	ebx
		jnz	.loopy
		inc	esi
;-------------- ------- --------------------------------------------------
		; проверка клавиатуры.	Портит AX
		in	al,60h
		dec	al
		jz	exit
		jmp	main
exit:
		; Восстановление видеорежима
		push	3
		pop	eax
		int	10h
		; Выход
		mov	ax,4c00h
		int	21h
;============== ======= ==================================================
VideoMem	rd	1

____________________________________________

Результирующий com-файл занимает 159 байт, из которых 86 - экстендер.

Если это до сих пор кому-нибудь надо, свистните здесь, я сброшу готовый бинарник экстендера и примеры на фасме и насме.


Дата: Июл 5, 2003 16:39:40

Интересно былобы....но я больше под дос не програмирую(( но вобщем может пригодится, и примеры конечно..


Дата: Июл 8, 2003 13:19:54

Прикольный способ кидаться файлами у вас на форуме практикуется. :) Даже фидошная ностальгия просыпается. ;)

Так вот.

Это экстендер:
section 1 of file Extender.bin  < UUE by DN/2 1.51.10b8/W32 >

begin 644 Extender.bin
MM$J[AQ;-(8O#S2\KPW-"!E>,V`4`$([`B\-G_QPD<C&P!HS+S3%14FC/`+7Z
I45)J_S/`N0$`S3&+V+@,`&:+_,TQ2$C-,8[8CL".T%-H5@'+N/],S2$`
`
end
sum -r/size 32952/149 section (from "begin" to "end")
sum -r/size 13715/86 entire input file



Урла откуда можно слить оригинал экстендера с оригинальными же примерами и описаниями - двумя мессагами выше.

Пример на фасме - там же.

Тот же самый пример по-быстрому переведённый на насм:
____________________________________________________
		org	100h
		bits	32
		incbin "extender.bin"
;============== ======= ==================================================
%define 	SelBase [0000FFF6h]
;============== ======= ==================================================
		; Графический режим
		push	byte 13h
		pop	eax
		int	10h
		; Адрес видеопамяти
		mov	eax,0A0000h
		sub	eax,SelBase
		mov	[VideoMem],eax
;-------------- ------- --------------------------------------------------
		; Примитивный пример
main:
		mov	edi,[VideoMem]

		mov	ebx,200
.loopy:
		mov	ecx,320
.loopx:

		mov	eax,ebx
		add	eax,esi
		xor	eax,ecx
		and	al,0Fh
		add	al,10h
		stosb

		loop	.loopx
		dec	ebx
		jnz	.loopy
		inc	esi
;-------------- ------- --------------------------------------------------
		; проверка клавиатуры
		in	al,60h
		dec	al
		jz	exit
		jmp	short main
exit:
		; Восстановление видеорежима
		push	byte 3
		pop	eax
		int	10h
		; Выход
		mov	ax,4c00h
		int	21h
;============== ======= ==================================================
		section .bss
VideoMem	resd	1
____________________________________________________


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.074