亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
久久国产欧美日韩精品| 香蕉成人啪国产精品视频综合网| 欧美性一二三区| 欧美一区二区在线观看| 欧美一级在线免费| 欧美极品另类videosde| 成人动漫精品一区二区| 91麻豆国产自产在线观看| 99国内精品久久| 99v久久综合狠狠综合久久| 丁香桃色午夜亚洲一区二区三区| zzijzzij亚洲日本少妇熟睡| 91精品国产综合久久国产大片| 99这里只有久久精品视频| 日本系列欧美系列| 99精品国产视频| 蜜桃视频一区二区三区在线观看| 国产欧美日韩中文久久| 欧美影视一区在线| 成人免费视频一区二区| 日韩经典一区二区| 国产欧美日韩在线| 中文字幕精品三区| 精品视频在线免费| 亚洲二区视频在线| 激情综合网天天干| 久久久久久久久久电影| 在线欧美日韩国产| 欧美一区2区视频在线观看| 久久久精品国产免大香伊| 国产午夜亚洲精品羞羞网站| 亚洲欧洲精品一区二区精品久久久| 成人综合在线视频| 精品免费视频一区二区| 久久精品国产免费看久久精品| 看电视剧不卡顿的网站| 中文字幕日韩av资源站| 欧美午夜理伦三级在线观看| www日韩大片| 亚洲美女视频在线| 青青草原综合久久大伊人精品优势 | 成人性生交大片| 91一区二区三区在线观看| 97国产一区二区| 成人免费va视频| 日韩专区一卡二卡| 免费不卡在线观看| av在线不卡免费看| 欧美色偷偷大香| 国产精品免费观看视频| 在线观看免费一区| 欧美三级日韩三级国产三级| 青草av.久久免费一区| 国产成人精品免费一区二区| 欧美日韩亚洲综合在线 | 在线亚洲精品福利网址导航| 国产精品综合在线视频| 日韩欧美的一区| 久久夜色精品一区| 一本久道久久综合中文字幕| 国产揄拍国内精品对白| 91麻豆文化传媒在线观看| 91免费在线视频观看| 激情都市一区二区| 亚洲国产成人av| 手机精品视频在线观看| 678五月天丁香亚洲综合网| 精品一区二区三区av| 亚洲成人动漫在线观看| 精品国产电影一区二区| 欧美性感一区二区三区| 色综合久久中文综合久久97| 色综合天天综合狠狠| 美女视频黄频大全不卡视频在线播放| 2024国产精品| 天天亚洲美女在线视频| 久久精品国产一区二区三区免费看| 久久99久久99| 1000精品久久久久久久久| 91精品福利在线一区二区三区| 99久久99久久精品免费观看| 国产精品一区二区三区网站| 欧美巨大另类极品videosbest | 日韩一卡二卡三卡四卡| 欧美视频精品在线| 色激情天天射综合网| 91玉足脚交白嫩脚丫在线播放| 国产盗摄精品一区二区三区在线| 久久精品99国产精品| 日韩av网站在线观看| 中文字幕在线免费不卡| 亚洲欧洲国产专区| 亚洲婷婷国产精品电影人久久| 国产精品嫩草影院av蜜臀| 欧美国产日韩在线观看| 中文字幕精品一区二区精品绿巨人 | 国产精品自拍网站| 日韩av电影一区| 精品一区二区三区在线观看国产| 久久99精品久久只有精品| 久久99精品久久久久久| 韩国女主播成人在线观看| 国产精品一区二区视频| gogo大胆日本视频一区| 99re成人在线| 欧美视频一区二区| 3d成人动漫网站| 精品电影一区二区| 中文字幕高清不卡| 亚洲人成网站在线| 亚洲国产成人av网| 日本最新不卡在线| 国产精品综合视频| 色av一区二区| 欧美一区二区日韩一区二区| 精品国产一区二区三区四区四| 国产丝袜美腿一区二区三区| 一区二区三区资源| 久久精品国产秦先生| 成人免费视频国产在线观看| 欧美主播一区二区三区| 777欧美精品| 欧美国产综合色视频| 亚洲精品国产精品乱码不99| 亚洲精品国产精品乱码不99| 日韩电影一二三区| 成人精品视频一区二区三区尤物| 色婷婷av一区二区三区gif| 91.xcao| 亚洲特黄一级片| 国产精品主播直播| 91精品国产手机| 亚洲制服丝袜av| 成人avav影音| 久久免费电影网| 蜜臀av亚洲一区中文字幕| 色综合久久六月婷婷中文字幕| 久久午夜羞羞影院免费观看| 偷窥国产亚洲免费视频| 91在线看国产| 国产亚洲一区字幕| 久久激情五月激情| 欧美日韩国产综合久久| 一区二区三区四区在线播放 | 天天综合网 天天综合色| 成人18视频在线播放| 久久综合久久久久88| 日韩av一二三| 欧美精品国产精品| 亚洲一区二区在线观看视频| 91在线视频播放地址| 国产欧美一区二区三区网站| 国产毛片精品视频| 日韩欧美第一区| 热久久一区二区| 日韩欧美中文字幕一区| 日本麻豆一区二区三区视频| 欧美一三区三区四区免费在线看| 亚洲成a人片综合在线| 欧美性色黄大片| 亚洲va韩国va欧美va| 精品视频免费在线| 日韩有码一区二区三区| 宅男噜噜噜66一区二区66| 午夜亚洲福利老司机| 91精品国产高清一区二区三区蜜臀 | 亚洲女同一区二区| 色婷婷精品久久二区二区蜜臀av| 中文字幕日本不卡| 91丨porny丨国产入口| 亚洲人成伊人成综合网小说| 91电影在线观看| 日本午夜精品视频在线观看| 精品女同一区二区| 高清日韩电视剧大全免费| 最近中文字幕一区二区三区| 欧美亚洲国产bt| 日韩高清一区在线| 久久久久国色av免费看影院| 成人av电影在线网| 亚洲国产美女搞黄色| 日韩女优毛片在线| 国产成人免费9x9x人网站视频| 国产精品国产自产拍高清av王其 | 福利一区福利二区| 中文字幕一区日韩精品欧美| 一本久道中文字幕精品亚洲嫩| 亚洲综合一区二区| 日韩欧美专区在线| 成人激情动漫在线观看| 一区二区在线观看视频| 日韩一区二区免费电影| 成人自拍视频在线观看| 亚洲国产日韩综合久久精品| 欧美变态tickle挠乳网站| 99久久国产综合精品麻豆| 婷婷夜色潮精品综合在线| 久久九九99视频| 欧美怡红院视频| 国产成人免费视频网站高清观看视频 |