亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sol_system.inc

?? 一個用純匯編 寫的操作系統 源代碼 是用 TASM 編譯器寫的
?? INC
?? 第 1 頁 / 共 2 頁
字號:
;-------------------------------------------------
; flat assembler interface for Win32
; Copyright (c) 1999-2006, Tomasz Grysztar.
; All rights reserved.
;-------------------------------------------------

;------------------------------------------------
; FASM port to Solar_OS 
; copyright (c) 2007 by Bogdan Valentin Ontanu
; All rights reserved.
;------------------------------------------------ 


;----------------------------------------------
; Macro for using STDCALL SOLAR_OS API
;----------------------------------------------
include '../../include/macro/proc32.inc'
include 'solar_os.inc'


;-----------------------------------
; variables used in GUI
;-----------------------------------
wnd_main_handle		dd	0
btn_compile_handle	dd	0
btn_std_handle		dd	0
btn_binary_handle	dd	0
btn_pe_handle		dd	0
edit_cmd_handle		dd	0

btn1_handle		dd	0
btn2_handle		dd	0
btn3_handle		dd	0

btn_dbg_fasm_handle	dd	0


btn_compile_caption	db	"Compile",0
btn_std_caption		db	"View Stdout",0
btn_binary_caption	db	"Binary",0
btn_pe_caption		db	"Map PE",0
edit_cmd_label		db	"Command line:",0

btn1_caption		db	"1",0
btn2_caption		db	"2",0
btn3_caption		db	"3",0

btn_dbg_fasm_caption	db	"Debug FASM",0

sol_cmd_line1		db	"fasm sample.asm sample.exe ",0
sol_cmd_line2		db	"fasm sample_pe.asm sample.exe ",0
sol_cmd_line3		db	"fasm sample_pe2.asm sample.exe ",0

fasm_cmd_line		rb	512


;-------------------------------------
; memory buffers
;-------------------------------------
fasm_mem_handle		dd	0
fasm_mem_size		dd	0
fasm_mem_ptr		dd	0

fasm_stdout_mem_ptr	dd	0
fasm_stdout_mem_handle	dd	0
fasm_stdout_size	dd	0

; special value inorder to avoid CLOSE
fasm_write_fhandle	dd	055AA1234h
fasm_write_fpos		dd	0

fasm_write_mem_handle	dd	0
fasm_write_mem_ptr	dd	0
fasm_write_mem_size	dd	4


;-------------------------------------
; GUI Creation
;-------------------------------------
Create_Main_Window:

	;------------------------------
	; Create the Main app window
	;------------------------------
	invoke	API_Window_Create, 0,100,128,460,156, FLAG_WND_MINI + FLAG_WND_NO_RESIZE, WND_TYPE_TOP
	mov	[wnd_main_handle],eax

	; set main window caption
	invoke	API_Window_Set_Caption, [wnd_main_handle], _logo

	; set wnd_main callback
	invoke	API_Window_Set_Callback, [wnd_main_handle], OS_CALL_AFTER, App_Fasm_Main_Callback



	;--------------------------------
	; Create a button for "Compile"
	;--------------------------------
	invoke	API_Window_Create, [wnd_main_handle], 8,32,96,22, FLAG_WND_NO_MOVE + FLAG_WND_NO_RESIZE, WND_TYPE_BUTTON
	mov	[btn_compile_handle],eax

	; set button caption
	invoke	API_Window_Set_Caption, [btn_compile_handle], btn_compile_caption
	
	; set compile button callback
	invoke	API_Window_Set_Callback, [btn_compile_handle], OS_CALL_AFTER, App_Fasm_Btn_Compile_Callback


	;-----------------------------------------------------------
	; Create a button for "View STDOUT" messages of compilation
	;-----------------------------------------------------------
	invoke	API_Window_Create, [wnd_main_handle], 128,32,96,22, FLAG_WND_NO_MOVE + FLAG_WND_NO_RESIZE, WND_TYPE_BUTTON
	mov	[btn_std_handle],eax

	; set button caption
	invoke	API_Window_Set_Caption, [btn_std_handle], btn_std_caption

	; set binary button callback
	invoke	API_Window_Set_Callback, [btn_std_handle], OS_CALL_AFTER, App_Fasm_Btn_Std_Callback



	;-------------------------------------------------------
	; Create a button for "Binary" result of compilation
	;-------------------------------------------------------
	invoke	API_Window_Create, [wnd_main_handle], 228,32,96,22, FLAG_WND_NO_MOVE + FLAG_WND_NO_RESIZE, WND_TYPE_BUTTON
	mov	[btn_binary_handle],eax

	; set button caption
	invoke	API_Window_Set_Caption, [btn_binary_handle], btn_binary_caption

	; set binary button callback
	invoke	API_Window_Set_Callback, [btn_binary_handle], OS_CALL_AFTER, App_Fasm_Btn_Binary_Callback



	;-------------------------------------------------------
	; Create a button for "PE" result of compilation
	;-------------------------------------------------------
	invoke	API_Window_Create, [wnd_main_handle], 328,32,96,22, FLAG_WND_NO_MOVE + FLAG_WND_NO_RESIZE, WND_TYPE_BUTTON
	mov	[btn_pe_handle],eax

	; set button caption
	invoke	API_Window_Set_Caption, [btn_pe_handle], btn_pe_caption

	; set binary button callback
	invoke	API_Window_Set_Callback, [btn_pe_handle], OS_CALL_AFTER, App_Fasm_Btn_Pe_Callback


	;--------------------------------
	; Create a EDIT for command line
	;--------------------------------
	invoke	API_Window_Create, [wnd_main_handle],8,90,445,22, FLAG_WND_NO_MOVE + FLAG_WND_NO_RESIZE, WND_TYPE_EDIT
	mov	[edit_cmd_handle],eax

	;-------------------
	; set edit caption
	;-------------------
	invoke	API_Window_Set_Caption, [edit_cmd_handle], sol_cmd_line1



	;-------------------------------------------------------
	; Create 3 buttons for test cmd lines
	;-------------------------------------------------------
	invoke	API_Window_Create, [wnd_main_handle], 130,64,21,22, FLAG_WND_NO_MOVE + FLAG_WND_NO_RESIZE, WND_TYPE_BUTTON
	mov	[btn1_handle],eax
	invoke	API_Window_Set_Caption, [btn1_handle], btn1_caption
	invoke	API_Window_Set_Callback, [btn1_handle], OS_CALL_AFTER, App_Fasm_Btn1_Callback


	invoke	API_Window_Create, [wnd_main_handle], 154,64,21,22, FLAG_WND_NO_MOVE + FLAG_WND_NO_RESIZE, WND_TYPE_BUTTON
	mov	[btn2_handle],eax
	invoke	API_Window_Set_Caption, [btn2_handle], btn2_caption
	invoke	API_Window_Set_Callback, [btn2_handle], OS_CALL_AFTER, App_Fasm_Btn2_Callback


	invoke	API_Window_Create, [wnd_main_handle], 178,64,21,22, FLAG_WND_NO_MOVE + FLAG_WND_NO_RESIZE, WND_TYPE_BUTTON
	mov	[btn3_handle],eax
	invoke	API_Window_Set_Caption, [btn3_handle], btn3_caption
	invoke	API_Window_Set_Callback, [btn3_handle], OS_CALL_AFTER, App_Fasm_Btn3_Callback

	;---------------------------------------
	; Create a button for "Debug FASM"
	;---------------------------------------
	invoke	API_Window_Create, [wnd_main_handle], 8,128,96,22, FLAG_WND_NO_MOVE + FLAG_WND_NO_RESIZE, WND_TYPE_BUTTON
	mov	[btn_dbg_fasm_handle],eax
	invoke	API_Window_Set_Caption, [btn_dbg_fasm_handle], btn_dbg_fasm_caption
	invoke	API_Window_Set_Callback, [btn_dbg_fasm_handle], OS_CALL_AFTER, App_Fasm_Btn_Dbg_Fasm_Callback


	;-------------------------------------
	; allocate memory for OUTPUT file
	;-------------------------------------
	invoke	API_Memory_Allocate, 128
	mov	[fasm_write_mem_handle],eax
	mov	[fasm_write_mem_ptr],esi

	;-------------------------------------
	; allocate memory for STDOUT write
	;-------------------------------------
	invoke	API_Memory_Allocate, 128
	mov	[fasm_stdout_mem_handle],eax
	mov	[fasm_stdout_mem_ptr],esi
	mov	[fasm_stdout_size],0

	; return handle of main window
	mov	eax,[wnd_main_handle]
	ret


clear_write_buffer:
	push	ecx
	push	edi
	
	mov	edi, [fasm_write_mem_ptr]
	mov	ecx, 128				; buffer size in 4k blocks
	shl	ecx, 12					; * 4096
	xor	eax,eax
	rep	stosb
	
	pop	edi
	pop	ecx
	ret
	
;-----------------------------------------------
; Callbacks for main window and each control
;-----------------------------------------------

proc App_Fasm_Main_Callback wnd_handle,wnd_action,wnd_param1,wnd_param2

	mov	eax,[wnd_action]
	
	cmp	eax,ACT_PAINT_CHILD
	jz	.is_paint

	cmp	eax,ACT_CLOSE_CHILD
	jz	.is_close
	
.done:
	xor	eax,eax
	ret

.is_paint:
	;-------------------------
	; WND_MAIN::ON PAINT
	; - show label
	;-------------------------
	invoke	API_Text_Draw,[wnd_handle],8,68,edit_cmd_label, 0ff7f3fh
	jmp	.done
	

.is_close:
	;-------------------------
	; WND_MAIN::ON CLOSE
	; - release memory
	;-------------------------
	invoke	API_Memory_Release,[fasm_write_mem_handle],128
	invoke	API_Memory_Release,[fasm_stdout_mem_handle],128
	
	jmp	.done

endp


proc App_Fasm_Btn_Compile_Callback wnd_handle,wnd_action,wnd_param1,wnd_param2

	mov	eax,[wnd_action]
	
	cmp	eax,ACT_LEFT_UP_CHILD
	jz	.is_mouse_click

.done:
	xor	eax,eax
	ret


.is_mouse_click:
	;-------------------------
	; BTN_COMPILE::ON CLICK
	;-------------------------

	Call	clear_write_buffer
	
	; reset output write positions 
	mov	[fasm_write_fpos],0
	mov	[fasm_stdout_size],0

	;------------------------------
	; FASM touches my EBP ;)
	;------------------------------	
	pushad	
	call	start_fasm
	popad
	
	jmp	.done
	
endp


proc App_Fasm_Btn_Dbg_Fasm_Callback wnd_handle,wnd_action,wnd_param1,wnd_param2

	; button used for debugging FASM compilation stage on SOL
	; same as above just an extra INT 3 added
	mov	eax,[wnd_action]
	
	cmp	eax,ACT_LEFT_UP_CHILD
	jz	.is_mouse_click

.done:
	xor	eax,eax
	ret


.is_mouse_click:
	;-------------------------
	; BTN_COMPILE::ON CLICK
	;-------------------------
	Call	clear_write_buffer
	
	; allow debuger to enter here
	int3
	
	; in order to know the location during debug
	mov	eax,[fasm_write_mem_ptr]

	; reset output write positions 
	mov	[fasm_write_fpos],0
	mov	[fasm_stdout_size],0

	;------------------------------
	; FASM touches my EBP ;)
	;------------------------------	
	pushad	
	call	start_fasm
	popad
	
	jmp	.done
	
endp


proc App_Fasm_Btn_Std_Callback wnd_handle,wnd_action,wnd_param1,wnd_param2

	mov	eax,[wnd_action]
	
	cmp	eax,ACT_LEFT_UP_CHILD
	jz	.is_mouse_click

.done:
	xor	eax,eax
	ret


.is_mouse_click:
	;-------------------------
	; ::ON CLICK
	;-------------------------	
	; allow debuger to enter here
	;int3
	
	pushad	
	invoke	App_View_Text_Init,OS_ARG_ADDR_SIZE_INFO,[fasm_stdout_mem_ptr],[fasm_stdout_size],0	
	popad
	
	jmp	.done
	
endp


proc App_Fasm_Btn_Binary_Callback wnd_handle,wnd_action,wnd_param1,wnd_param2

	mov	eax,[wnd_action]
	
	cmp	eax,ACT_LEFT_UP_CHILD
	jz	.is_mouse_click

.done:
	xor	eax,eax
	ret


.is_mouse_click:
	;-------------------------
	; ::ON CLICK
	;-------------------------	
	; allow debuger to enter here
	;int3
	
	pushad	
	invoke	App_View_Memory_Init,OS_ARG_ADDR_SIZE_INFO,[fasm_write_mem_ptr],4096,0	
	popad
	
	jmp	.done
	
endp

	
proc App_Fasm_Btn_Pe_Callback wnd_handle,wnd_action,wnd_param1,wnd_param2

	mov	eax,[wnd_action]
	
	cmp	eax,ACT_LEFT_UP_CHILD
	jz	.is_mouse_click

.done:
	xor	eax,eax
	ret


.is_mouse_click:
	;-------------------------
	; ::ON CLICK
	;-------------------------	
	; allow debuger to enter here
	;int3
	
	pushad	
	invoke	App_View_Pe_Init,OS_ARG_ADDR_SIZE_INFO,[fasm_write_mem_ptr],4096,0	
	popad
	
	jmp	.done
	
endp



proc App_Fasm_Btn1_Callback wnd_handle,wnd_action,wnd_param1,wnd_param2

	mov	eax,[wnd_action]
	
	cmp	eax,ACT_LEFT_UP_CHILD
	jz	.is_mouse_click

.done:
	xor	eax,eax
	ret
	
.is_mouse_click:
	invoke	API_Window_Set_Caption, [edit_cmd_handle], sol_cmd_line1
	jmp	.done
endp

proc App_Fasm_Btn2_Callback wnd_handle,wnd_action,wnd_param1,wnd_param2

	mov	eax,[wnd_action]
	
	cmp	eax,ACT_LEFT_UP_CHILD
	jz	.is_mouse_click

.done:
	xor	eax,eax
	ret
	
.is_mouse_click:
	invoke	API_Window_Set_Caption, [edit_cmd_handle], sol_cmd_line2
	jmp	.done
endp

proc App_Fasm_Btn3_Callback wnd_handle,wnd_action,wnd_param1,wnd_param2

	mov	eax,[wnd_action]
	
	cmp	eax,ACT_LEFT_UP_CHILD
	jz	.is_mouse_click

.done:
	xor	eax,eax
	ret
	
.is_mouse_click:
	invoke	API_Window_Set_Caption, [edit_cmd_handle], sol_cmd_line3
	jmp	.done
endp




;----------------------------------------------------
;
; FASM interfaces to SOL follow
;
;----------------------------------------------------
get_cmd_line:

	; copy string from edit caption to command line buffer
	invoke	API_Window_Get_Caption,[edit_cmd_handle],fasm_cmd_line
	
	; return address of command line buffer
	mov	eax,fasm_cmd_line
	ret

	
write_stdout:
	;--------------------------------------------
	; Write bytes to STDOUT
	; - stdout is simulated in a memory buffer
	;--------------------------------------------
	
	;-------------------------------------
	; INPUT:
	; esi = source ptr
	; ecx = number of bytes to write 
	; ebx = handle ... is ignored
	;-------------------------------------
	
	push	ecx
	push	esi
	push	edi
	
	mov	edi, [fasm_stdout_mem_ptr]
	add	edi, [fasm_stdout_size]
	add	[fasm_stdout_size],ecx
	
	rep	movsb

	pop	edi
	pop	esi
	pop	ecx
	ret	




	
init_memory:
	mov	eax,esp
	and	eax,not 0FFFh
	add	eax,1000h-10000h
	mov	[stack_limit],eax

	;---------------------------------
	; give the beast 4 Mega bytes 
	; - hardcoded ;)
	;---------------------------------
	mov	eax,4*1024*1024
	
    allocate_memory:
	mov	edx,eax
	shr	edx,2
	mov	ecx,eax
	sub	ecx,edx
	mov	[memory_end],ecx
	mov	[additional_memory_end],edx
	
	push	esi
	
	;-------------------------------------------------
	; SOL wants the number of 4K blocks not bytes
	;-------------------------------------------------
	shr	eax,12			; div 4096
	inc	eax
	mov	[fasm_mem_size],eax

	invoke	API_Memory_Allocate, eax
	
	;----------------------------------------
	; on return
	;----------------------------------------
	;	esi = memory block pointer
	;	eax, memory block handle
	;----------------------------------------
	mov	[fasm_mem_handle],eax
	mov	[fasm_mem_ptr],esi
		
	mov	eax,esi
	
	pop	esi
	
	mov	[memory_start],eax
	add	eax,[memory_end]
	mov	[memory_end],eax
	mov	[additional_memory],eax
	add	[additional_memory_end],eax
	ret
	
    not_enough_memory:
	mov	eax,[additional_memory_end]
	shl	eax,1
	cmp	eax,4000h
	jb	out_of_memory
	jmp	allocate_memory





exit_program:
	;---------------------------------------------
	; release the memory used for compilation
	;---------------------------------------------
	invoke	API_Memory_Release, [fasm_mem_handle], [fasm_mem_size]

	;--------------------------
	; and return to SOL
	;--------------------------
	xor	eax,eax
	ret




get_environment_variable:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚男人的天堂| 久久久99久久精品欧美| 日韩美女在线视频| 亚洲欧洲精品天堂一级 | 国产精品理论片在线观看| 亚洲大片一区二区三区| 国产iv一区二区三区| 7777精品伊人久久久大香线蕉的 | 91精品国产一区二区三区香蕉| 国产视频一区二区在线| 五月激情综合色| 在线观看av不卡| 中文欧美字幕免费| 国产专区欧美精品| 欧美伦理影视网| 久久久91精品国产一区二区精品 | 亚洲欧美激情视频在线观看一区二区三区 | 91精品国产一区二区三区| 中文字幕一区二区三区视频 | 亚洲午夜成aⅴ人片| 高清久久久久久| 久久久精品蜜桃| 韩国毛片一区二区三区| 91精品国产欧美一区二区| 亚洲a一区二区| 欧美天堂亚洲电影院在线播放| 玉米视频成人免费看| 色综合久久综合网欧美综合网| 国产精品天干天干在观线| 国产乱理伦片在线观看夜一区| 欧美一区二区久久久| 三级精品在线观看| 91精品国产aⅴ一区二区| 亚洲一二三四在线观看| 欧美中文字幕一区| 一区二区三区.www| 欧美四级电影网| 日韩主播视频在线| 欧美一区二区三区免费观看视频| 丝袜美腿亚洲色图| 日韩欧美一级精品久久| 狠狠色狠狠色合久久伊人| 精品粉嫩aⅴ一区二区三区四区| 久久精品久久综合| 久久午夜色播影院免费高清 | 国产肉丝袜一区二区| 国产成人精品三级麻豆| 国产精品久久久久久福利一牛影视 | 九色|91porny| 国产亚洲人成网站| 99精品视频在线免费观看| 亚洲美腿欧美偷拍| 69堂亚洲精品首页| 国产精品一区二区91| 亚洲欧洲精品成人久久奇米网| 91在线国产福利| 日韩精品欧美精品| 久久婷婷综合激情| 色综合久久中文综合久久97| 午夜免费久久看| 精品国产乱码久久久久久浪潮| 成人国产在线观看| 午夜精品久久久久影视| www国产成人免费观看视频 深夜成人网| 激情深爱一区二区| 国产精品国产馆在线真实露脸| 欧美色视频在线观看| 久久国产生活片100| 亚洲日本在线看| 4438x成人网最大色成网站| 韩国三级在线一区| 亚洲免费在线播放| 久久久一区二区| 欧美三区在线观看| 久99久精品视频免费观看| 一区二区三区中文字幕精品精品| 日韩视频一区在线观看| 色综合天天综合网国产成人综合天| 亚洲一区二区三区爽爽爽爽爽| 久久久精品日韩欧美| 精品视频一区二区三区免费| 狠狠色综合色综合网络| 亚洲高清视频的网址| 国产蜜臀97一区二区三区| 欧美猛男gaygay网站| 99久久综合色| 国产91在线观看丝袜| 亚洲午夜精品一区二区三区他趣| 久久精品一二三| 欧美一区二区三区喷汁尤物| 欧美午夜精品一区| 97精品久久久午夜一区二区三区 | 国产日韩欧美不卡| 日韩视频国产视频| 欧美色图12p| 色素色在线综合| 从欧美一区二区三区| 久久国内精品自在自线400部| 一区二区三区精品视频| 国产日韩欧美精品一区| 精品国产成人系列| 日韩一区二区三区精品视频| 欧美日韩小视频| 欧美日韩一本到| 色婷婷av一区二区三区大白胸| 国产 日韩 欧美大片| 国产白丝精品91爽爽久久| 久久99九九99精品| 麻豆精品视频在线观看| 老司机午夜精品99久久| 日本vs亚洲vs韩国一区三区| 性做久久久久久久免费看| 视频一区中文字幕| 亚洲一区日韩精品中文字幕| 亚洲黄色录像片| 伊人色综合久久天天人手人婷| 亚洲日本电影在线| 伊人婷婷欧美激情| 亚洲高清一区二区三区| 婷婷中文字幕综合| 亚洲成av人片在线| 日韩电影在线看| 蜜桃久久av一区| 国产一区二区91| 春色校园综合激情亚洲| 色欲综合视频天天天| 精品视频1区2区| 欧美一级高清大全免费观看| 精品国产乱码久久久久久久久 | 91精品国产丝袜白色高跟鞋| 日韩一区二区免费在线观看| 欧美成人精品3d动漫h| 欧美一区二区在线视频| 欧美一级xxx| 久久久久国产精品人| 中文字幕av免费专区久久| 亚洲人成网站精品片在线观看 | 国产大片一区二区| av日韩在线网站| 欧美久久久久久蜜桃| 亚洲精品一区二区三区精华液| 国产日韩综合av| 一区二区三区在线播放| 麻豆视频一区二区| 99精品视频一区二区三区| 欧美手机在线视频| 久久婷婷国产综合国色天香| 中文字幕av不卡| 日日摸夜夜添夜夜添精品视频 | 日本一区免费视频| 亚洲男女毛片无遮挡| 日本va欧美va精品| 成人激情开心网| 91精品国产色综合久久ai换脸| 久久久精品综合| 午夜欧美一区二区三区在线播放| 国产精品123区| 欧美日韩电影在线播放| 国产无人区一区二区三区| 亚洲尤物在线视频观看| 国产乱码精品一品二品| 精品视频123区在线观看| 日本一区二区免费在线| 日韩va欧美va亚洲va久久| www.视频一区| www激情久久| 日韩一区欧美二区| 99久久99精品久久久久久| 日韩色视频在线观看| 亚洲一区在线观看网站| 粗大黑人巨茎大战欧美成人| 欧美一级片在线观看| 亚洲国产精品人人做人人爽| 国内精品伊人久久久久影院对白| 欧美亚男人的天堂| 国产精品二三区| 国产一区二区毛片| 制服丝袜亚洲播放| 亚洲一二三四久久| 95精品视频在线| 国产欧美精品一区二区三区四区| 麻豆精品在线播放| 91超碰这里只有精品国产| 亚洲另类一区二区| www.成人在线| 国产精品国产三级国产aⅴ原创 | 欧美性色黄大片| 亚洲天堂中文字幕| 丁香啪啪综合成人亚洲小说| 久久婷婷综合激情| 国产专区欧美精品| 精品国产一区二区三区不卡 | 亚洲成人激情av| 91麻豆swag| 亚洲色图视频网站| 99久久综合精品| 亚洲视频狠狠干| proumb性欧美在线观看| 国产精品欧美一区二区三区| 成人精品免费看|