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

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

?? wordcount.asm

?? Windows環境下32位匯編語言程序設計源碼
?? ASM
字號:
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Sample code for < Win32ASM Programming >
; by 羅云彬, http://asm.yeah.net
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; WordCount.asm
; 文件讀寫例子 —— 打開文本文件進行單詞統計,然后創建結果文件
; 讀寫文件操作使用內存映射文件函數。
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 使用 nmake 或下列命令進行編譯和鏈接:
; ml /c /coff WordCount.asm
; rc WordCount.rc
; Link /subsystem:windows WordCount.obj WordCount.res
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		.386
		.model flat, stdcall
		option casemap :none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定義
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include		windows.inc
include		user32.inc
includelib	user32.lib
include		kernel32.inc
includelib	kernel32.lib
include		comdlg32.inc
includelib	comdlg32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Equ 等值定義
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN	equ		1000
DLG_MAIN	equ		100
IDC_FILE	equ		101
IDC_BROWSE	equ		102

WORD_COUNT	struct

lpLetter	dd	26 dup (?)
dwCount		dd	?
dwDepth		dd	?

WORD_COUNT	ends
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 數據段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		.data?

hInstance	dd	?
hWinMain	dd	?
szFileName	db	MAX_PATH dup (?)
szBuffer	db	4096 dup (?)
stWordCount	WORD_COUNT	<>
dwCount		dd	?

dwOption	dd	?
F_COUNTING	equ	00000001h
F_FILEEND	equ	00000002h

		.const
szFileExt	db	'全部文件',0,'*.*',0,0
szLogExt	db	'.log',0
szErrOpenFile	db	'無法打開文件!',0
szErrCreateFile	db	'無法建立記錄文件!',0
szFmtWord	db	'%5d (%3d‰) %s',0dh,0ah,0
szSuccees	db	'統計成功,請查看記錄文件%s',0
szSucceesCap	db	'統計成功',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代碼段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

		.code

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 遍歷樹并輸出結果
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_WalkTree	proc	_hFile,_lpWC,_lpsz
		local	@dwTemp
		local	@szWord[52]:byte

		pushad
		mov	esi,_lpWC
		assume	esi:ptr WORD_COUNT
		.if	[esi].dwDepth && [esi].dwCount
;********************************************************************
; 計算百分比并寫入log文件
;********************************************************************
			mov	eax,[esi].dwCount
			mov	ecx,1000
			mul	ecx
			mov	ecx,dwCount
			.if	ecx
				div	ecx
			.else
				mov	eax,0
			.endif
			invoke	wsprintf,addr szBuffer,addr szFmtWord,[esi].dwCount,eax,_lpsz
			invoke	lstrlen,addr szBuffer
			mov	ecx,eax
			invoke	WriteFile,_hFile,addr szBuffer,ecx,addr @dwTemp,NULL
		.endif
;********************************************************************
; 如果有下層節點則遞規調用
;********************************************************************
		mov	@dwTemp,0
		.while	@dwTemp < 26
			mov	ebx,@dwTemp
			mov	ebx,dword ptr [esi+ebx*4]
			.if	ebx
				invoke	lstrcpy,addr @szWord,_lpsz
				invoke	lstrlen,addr @szWord
				lea	ecx,@szWord
				add	ecx,eax
				mov	eax,@dwTemp
				add	al,'a'
				mov	word ptr [ecx],ax
				invoke	_WalkTree,_hFile,ebx,addr @szWord
			.endif
			inc	@dwTemp
		.endw
;********************************************************************
; 釋放節點
;********************************************************************
		.if	[esi].dwDepth
			invoke	GlobalFree,esi
		.endif
		popad
		assume	esi:ptr WORD_COUNT
		ret

_WalkTree	endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 根據數據建立樹節點或增加節點計數
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_CountLetter	proc	_dwLetter
		local	@dwIndex

		assume	edi:ptr WORD_COUNT
		or	al,20h				;轉換成小寫字母
		.if	(al >= 'a') && (al <= 'z')	;字母
;********************************************************************
; 如果是字母則按edi指針繼續搜尋下一節點,找到則更新指針,
; 未找到則建立一個新的節點
;********************************************************************
			sub	al,'a'
			movzx	eax,al
			.if	dword ptr [edi+eax*4]
				mov	edi,dword ptr [edi+eax*4]
			.else
				mov	ebx,[edi].dwDepth
				.if	ebx <	50
					push	eax
					invoke	GlobalAlloc,GPTR,sizeof WORD_COUNT
					pop	ecx
					.if	eax
						mov	dword ptr [edi+ecx*4],eax
						mov	edi,eax
						inc	ebx
						mov	[edi].dwDepth,ebx
					.endif
				.endif
			.endif
		.else
;********************************************************************
; 不是字母表示一個單詞已結束,增加單詞計數
;********************************************************************
			inc	[edi].dwCount
			.if	[edi].dwDepth
				inc	dwCount
			.endif
			mov	edi,offset stWordCount
		.endif
		assume	edi:nothing
		ret

_CountLetter	endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_CountWord	proc
		local	@hFile,@hFileMap,@lpMemory,@dwFileSize
		local	@szLogFile[MAX_PATH]:byte
		local	@szBuffer

		invoke	RtlZeroMemory,addr stWordCount,sizeof stWordCount
;********************************************************************
; 打開文件
;********************************************************************
		invoke	CreateFile,addr szFileName,GENERIC_READ,FILE_SHARE_READ,0,\
			OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0
		.if	eax ==	INVALID_HANDLE_VALUE
			jmp	_Error
		.endif
		mov	@hFile,eax
		invoke	GetFileSize,@hFile,NULL
		mov	@dwFileSize,eax
;********************************************************************
; 建立內存映射文件并處理每個字節
;********************************************************************
		invoke	CreateFileMapping,@hFile,NULL,PAGE_READONLY,0,0,NULL
		.if	eax
			mov	@hFileMap,eax
			invoke	MapViewOfFile,eax,FILE_MAP_READ,0,0,0
			.if	eax
				mov	@lpMemory,eax
				jmp	@F
			.endif
			invoke	CloseHandle,@hFileMap
		.endif
		jmp	_Error
@@:
		xor	eax,eax
		mov	dwCount,eax
		mov	esi,@lpMemory
		mov	edi,offset stWordCount
		.while	@dwFileSize
			lodsb
			dec	@dwFileSize
			invoke	_CountLetter,eax
		.endw
		invoke	_CountLetter,0
;********************************************************************
; 關閉內存映射文件
;********************************************************************
		invoke	UnmapViewOfFile,@lpMemory
		invoke	CloseHandle,@hFileMap
		invoke	CloseHandle,@hFile
;********************************************************************
; 輸出記錄文件
;********************************************************************
		invoke	lstrcpy,addr @szLogFile,addr szFileName
		invoke	lstrcat,addr @szLogFile,addr szLogExt
		invoke	CreateFile,addr @szLogFile,GENERIC_WRITE,FILE_SHARE_READ,\
			0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0
		.if	eax !=	INVALID_HANDLE_VALUE
			mov	@hFile,eax
			mov	@szBuffer,0
			mov	edi,offset stWordCount
			invoke	_WalkTree,@hFile,edi,addr @szBuffer
			invoke	CloseHandle,@hFile
			invoke	wsprintf,addr szBuffer,addr szSuccees,addr @szLogFile
			invoke	MessageBox,hWinMain,addr szBuffer,addr szSucceesCap,MB_OK or MB_ICONINFORMATION
		.else
			invoke	MessageBox,hWinMain,addr szErrCreateFile,NULL,MB_OK or MB_ICONEXCLAMATION
		.endif
		ret
_Error:
		invoke	MessageBox,hWinMain,addr szErrOpenFile,NULL,MB_OK or MB_ICONEXCLAMATION
		ret


_CountWord	endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcDlgMain	proc	uses ebx edi esi hWnd,wMsg,wParam,lParam
		local	@stOpenFileName:OPENFILENAME

		mov	eax,wMsg
		.if	eax ==	WM_CLOSE
			.if	! (dwOption & F_COUNTING)
				invoke	EndDialog,hWnd,NULL
			.endif
;********************************************************************
		.elseif	eax ==	WM_INITDIALOG
			push	hWnd
			pop	hWinMain
			invoke	LoadIcon,hInstance,ICO_MAIN
			invoke	SendMessage,hWnd,WM_SETICON,ICON_BIG,eax
			invoke	SendDlgItemMessage,hWnd,IDC_FILE,EM_SETLIMITTEXT,MAX_PATH,0
;********************************************************************
		.elseif	eax ==	WM_COMMAND
			mov	eax,wParam
			.if	ax ==	IDC_BROWSE
;********************************************************************
				invoke	RtlZeroMemory,addr @stOpenFileName,sizeof OPENFILENAME
				mov	@stOpenFileName.lStructSize,SIZEOF @stOpenFileName
				mov	@stOpenFileName.Flags,OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST
				push	hWinMain
				pop	@stOpenFileName.hwndOwner
				mov	@stOpenFileName.lpstrFilter,offset szFileExt
				mov	@stOpenFileName.lpstrFile,offset szFileName
				mov	@stOpenFileName.nMaxFile,MAX_PATH
				invoke	GetOpenFileName,addr @stOpenFileName
				.if	eax
					invoke	SetDlgItemText,hWnd,IDC_FILE,addr szFileName
				.endif
;********************************************************************
			.elseif	ax ==	IDC_FILE
				invoke	GetDlgItemText,hWnd,IDC_FILE,addr szFileName,MAX_PATH
				mov	ebx,eax
				invoke	GetDlgItem,hWnd,IDOK
				invoke	EnableWindow,eax,ebx
;********************************************************************
			.elseif	ax ==	IDOK
				invoke	GetDlgItem,hWnd,IDC_FILE
				invoke	EnableWindow,eax,FALSE
				invoke	GetDlgItem,hWnd,IDC_BROWSE
				invoke	EnableWindow,eax,FALSE
				invoke	GetDlgItem,hWnd,IDOK
				invoke	EnableWindow,eax,FALSE
				or	dwOption,F_COUNTING
				call	_CountWord
				and	dwOption,not (F_COUNTING or F_FILEEND)
				invoke	GetDlgItem,hWnd,IDC_FILE
				invoke	EnableWindow,eax,TRUE
				invoke	GetDlgItem,hWnd,IDC_BROWSE
				invoke	EnableWindow,eax,TRUE
				invoke	GetDlgItem,hWnd,IDOK
				invoke	EnableWindow,eax,TRUE
			.endif
;********************************************************************
		.else
			mov	eax,FALSE
			ret
		.endif
		mov	eax,TRUE
		ret

_ProcDlgMain	endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
		invoke	GetModuleHandle,NULL
		mov	hInstance,eax
		invoke	DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL
		invoke	ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		end	start

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕第一区综合| 性感美女久久精品| 韩国欧美一区二区| 欧美成人福利视频| 国产成人啪午夜精品网站男同| 日韩视频123| 国产老女人精品毛片久久| 久久综合久久久久88| 国产精品性做久久久久久| 国产欧美一区二区精品性色 | 日韩毛片高清在线播放| 99久久免费视频.com| 亚洲日穴在线视频| 在线视频国内一区二区| 日本在线播放一区二区三区| 亚洲国产精品黑人久久久| www.欧美日韩| 亚洲自拍偷拍欧美| 欧美一卡二卡在线观看| 国产最新精品精品你懂的| 日本一区二区动态图| 一本到高清视频免费精品| 亚洲国产sm捆绑调教视频| 在线播放91灌醉迷j高跟美女| 精品一区二区三区欧美| 国产精品福利av| 3d动漫精品啪啪| 欧美午夜片在线观看| 欧美日韩国产美| 国产精品三级电影| 亚洲国产精品一区二区久久 | 亚洲精品免费在线观看| 一二三四社区欧美黄| 精品在线一区二区三区| 欧美系列在线观看| 欧美一区永久视频免费观看| 麻豆91精品视频| 95精品视频在线| 美日韩一级片在线观看| 国产精品国产三级国产aⅴ原创| 欧美日本一区二区在线观看| 久久国产精品99久久久久久老狼| 亚洲少妇最新在线视频| 日韩精品一区二区在线| 欧洲国内综合视频| 久久99国产精品成人| 亚洲资源中文字幕| 久久精品这里都是精品| 欧美日韩国产区一| www.日本不卡| 国产美女主播视频一区| 亚洲成人av一区| 专区另类欧美日韩| 久久综合狠狠综合久久激情| 欧美日韩专区在线| 成人av电影免费观看| 久久99最新地址| 亚洲成人精品一区| 亚洲欧美日韩中文字幕一区二区三区| 欧美mv日韩mv亚洲| 555www色欧美视频| 欧美无砖砖区免费| 欧美一区二区三区视频在线| 91亚洲精华国产精华精华液| 国产乱码字幕精品高清av| 日韩av高清在线观看| 亚洲第一久久影院| 亚洲美女淫视频| 亚洲婷婷综合色高清在线| 欧美国产一区二区| 久久亚洲影视婷婷| 欧美v日韩v国产v| 日韩视频不卡中文| 日韩精品一区二区三区在线观看 | 国产iv一区二区三区| 蜜桃精品视频在线| 日韩电影免费在线看| 亚洲v中文字幕| 亚洲国产精品久久人人爱蜜臀| 亚洲老司机在线| 亚洲日本中文字幕区| 专区另类欧美日韩| 1024成人网色www| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 久久久蜜桃精品| 欧美国产综合色视频| 国产精品美女久久久久aⅴ| 国产网红主播福利一区二区| 久久久久97国产精华液好用吗| 2020国产精品自拍| 国产视频视频一区| 国产精品国产三级国产aⅴ无密码| 欧美国产日韩一二三区| 国产精品三级视频| 亚洲精选免费视频| 亚洲一二三四区| 日韩和欧美一区二区| 久久激五月天综合精品| 久久97超碰色| 国产麻豆精品一区二区| 国产福利91精品| av亚洲精华国产精华| 在线免费观看日韩欧美| 欧美一级生活片| 久久精品一区蜜桃臀影院| 综合精品久久久| 亚洲国产成人91porn| 激情图区综合网| 成人精品国产福利| 欧美日韩中文精品| 精品久久人人做人人爽| 国产精品国产自产拍高清av王其| 亚洲精品福利视频网站| 91小视频在线免费看| 欧美日韩一区二区三区高清 | 亚洲美女淫视频| 日本特黄久久久高潮| 国产精品一区二区在线播放| 91麻豆文化传媒在线观看| 91精品国产色综合久久不卡电影| 久久精品人人做人人爽97| 亚洲欧美一区二区三区久本道91 | 日本aⅴ免费视频一区二区三区| 久久国产精品72免费观看| 91首页免费视频| 欧美一级高清大全免费观看| 国产欧美日韩另类一区| 午夜在线电影亚洲一区| 国产精品888| 欧美精品免费视频| 欧美激情在线一区二区| 日韩精品免费视频人成| va亚洲va日韩不卡在线观看| 欧美一级夜夜爽| 亚洲图片激情小说| 国产在线精品不卡| 欧美日韩中字一区| 国产精品久久久久三级| 麻豆freexxxx性91精品| 在线观看免费视频综合| 日本一区二区高清| 久久成人综合网| 欧美亚洲高清一区二区三区不卡| 精品国产3级a| 丝袜美腿亚洲综合| 91福利国产精品| 欧美韩日一区二区三区| 蜜臀久久99精品久久久画质超高清 | 免费在线观看视频一区| 日本丰满少妇一区二区三区| 久久久99久久精品欧美| 日本91福利区| 欧美日韩成人高清| 亚洲男女毛片无遮挡| 99久久综合国产精品| 久久九九久精品国产免费直播| 日韩高清不卡一区二区三区| 91久久免费观看| 亚洲色图清纯唯美| 成人毛片老司机大片| 国产午夜亚洲精品羞羞网站| 国产一区二区三区久久久| 日韩一区二区免费在线电影| 舔着乳尖日韩一区| 欧美狂野另类xxxxoooo| 夜夜嗨av一区二区三区| 色婷婷久久久综合中文字幕 | 91在线观看地址| 中文字幕一区二区三区在线观看| 国产成人精品三级| 国产欧美日韩麻豆91| 成人爱爱电影网址| 中文字幕一区在线| 99久久伊人精品| 亚洲欧美日韩国产手机在线| 99国产精品国产精品久久| 亚洲欧美日韩国产中文在线| 97成人超碰视| 亚洲一线二线三线久久久| 欧美视频在线观看一区二区| 亚洲一二三级电影| 51午夜精品国产| 久久成人羞羞网站| 欧美经典三级视频一区二区三区| 成人国产视频在线观看| 亚洲欧洲在线观看av| 色国产综合视频| 午夜成人免费视频| 日韩欧美一区二区视频| 狠狠网亚洲精品| 中文字幕在线一区免费| 色999日韩国产欧美一区二区| 亚洲第一成人在线| 欧美一区二区在线观看| 国产资源在线一区| 国产精品美女久久久久久久网站| 色婷婷综合久久久中文一区二区| 亚洲va在线va天堂| 久久九九久久九九| 欧美在线一区二区|