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

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

?? pascal.asm

?? 這是一個數字圖像處理的matlab仿真程序
?? ASM
字號:
; A win32asm graphics app, which generates an image of Pascal's Triangle by a method best 
; know as The Chaos Game.

; I fully indorse any plagiarism of this code.
; E骾n O'Callaghan, eoinoc@iol.ie

.586
.MODEL FLAT,STDCALL
OPTION SCOPED
OPTION CASEMAP:NONE

include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\gdi32.inc

includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\gdi32.lib

WM_CASE MACRO reg,msgs		; The Svins MACRO for Window Message processing
	irp msg,<msgs>
		cmp reg,WM_&msg
		je j&msg
	endm
endm

.data
ClassName db "Win32",0
AppName  db "Order in Chaos",0

.DATA?
wc WNDCLASSEX {?}
msg MSG {?}
rect RECT {?}
gWnd dd ?					; Global variable with window handle
gIst dd ?					; Global variable holds Instance

bDc dd ?					; Back Buffer DC
pBb dd ?					; Pointer to Back Buffer Bitmap Bits
hBm dd ?					; Back Buffer Bitmap Handle

TriPoint POINT {?, ?}, {?, ?}, {?, ?}	; Will hold 3 corners of triangle

.CODE
ALIGN 4
WinProc Proc uses ebx edi esi hWnd:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD
LOCAL ps:PAINTSTRUCT
	mov eax,uMsg
	WM_CASE eax,<PAINT,SIZE,DESTROY>			; MACRO will process these three messages
	invoke DefWindowProc,hWnd,uMsg,wParam,lParam; Otherwise message is passed to default proc
	ret

	jSIZE:
	invoke GetClientRect,hWnd,addr rect			; Store Window dimensions in rect struct
	call InitDoubleBuffer						; Initalsie Back Buffer
	call RenderFractal							; Render Fractal

	xor eax,eax
	ret

	jPAINT:
	invoke BeginPaint,hWnd,addr ps
		invoke BitBlt,ps.hdc,0,0,rect.right,rect.bottom,\	; Blt Backbuffer to window DC
		              bDc,0,0,SRCCOPY
	invoke EndPaint,hWnd,addr ps
	xor eax,eax
	ret

	jDESTROY:
	invoke DeleteDC,bDc							; Delete Buffer DC
	invoke DeleteObject,hBm						; Delete Buffer Bitmap
	invoke PostQuitMessage,NULL					; Quit App
	ret
WinProc ENDP

ALIGN 4
InitDoubleBuffer Proc
LOCAL bih:BITMAPINFOHEADER
	invoke DeleteDC,bDc							; Delete Old DC
	invoke DeleteObject,hBm						; Delete Old Bitmap

	; In order to set up a back bufer you need to create a DC. You then need to fill out a 
	; BITMAPINFOHEADER adn use CreateDIBSection to create a DIB Section. You can then select
	; the DIB Section into the Back Buffers DC and from that you can BitBlt it.
	
	invoke CreateCompatibleDC,0					; Create the Backbuffer DC
	mov bDc,eax
	
	lea edx,bih										; edx point to BITMAPINFOHEADER memory
	mov [edx].BITMAPINFOHEADER.biSize,sizeof(BITMAPINFOHEADER)
	mov eax,rect.right
	mov (BITMAPINFOHEADER ptr [edx]).biWidth, eax	; Set width to that of main window
	mov eax,rect.bottom
	mov [edx].BITMAPINFOHEADER.biHeight,eax			; And match Heights
	mov [edx].BITMAPINFOHEADER.biPlanes,1
	mov [edx].BITMAPINFOHEADER.biBitCount,32		; Set 32bit colors, ie dwords
	mov [edx].BITMAPINFOHEADER.biCompression,BI_RGB ; Pixel storage format
	mov [edx].BITMAPINFOHEADER.biSizeImage,0
	mov [edx].BITMAPINFOHEADER.biXPelsPerMeter,0
	mov [edx].BITMAPINFOHEADER.biYPelsPerMeter,0
	mov [edx].BITMAPINFOHEADER.biClrUsed,0
	mov [edx].BITMAPINFOHEADER.biClrImportant,0

	invoke CreateDIBSection,bDc,edx,DIB_RGB_COLORS,addr pBb,0,0 ; Here pBb will be set with
	mov hBm,eax													; a pointer to bitmap bits
	invoke SelectObject,bDc,eax
ret
InitDoubleBuffer EndP

Rnd3Bit Proc		; This procedure generates 3 random bits. A slight change can be made to 
.data				; alter this value up to at least 20bits. 
	RndInit dd 0A2F59C2Eh
.code
	mov edx,RndInit
	mov eax,3;  <- Here's where it's set to 3 bits
rl: rol edx,1
	jnc rs
	xor edx,0ah
rs: dec eax
	jne rl
    mov eax,edx
    rcr	edx,1
    mov RndInit,edx
ret
Rnd3Bit EndP

RenderFractal Proc	
; This procdure renders the image of the fractal, Pascals Triangle. Perhaps the best example 
; of perfect order out of absolutly random chaos.
; The fractal is generated by starting at any point, then for each iteration of the loop you 
; pick one of the three points at random and move to a position half way between current point
; and the chosen corner. You then plot a pixel at that location.

; The method of selecting the postion half way is optimised so I'll explain it. The obvious
; method is to get the distance from the current point to the corner, half that value and add 
; it to the current point. So that equation for x would be:
; CurX + (CornerX - CurX)/2
; Those who like maths may sopt that this can be shortened to:
; (2CurX + CornerX - CurX)/2 => (CurX + CornerX)/2
; An identical equation works for the y coords.

; Note that in a DIB Section the origion (0,0) is the bottom left corner. Not the top left 
; as in most windows GDI functions.

	mov eax,rect.right		; eax = window width.
	shr eax,1				; eax = width/2.
	mov TriPoint[0].x,eax	; x coord of first point = eax = witdh/2.
	lea eax,[eax*2][-5]     ; eax = (eax*2)-5 = width-5.
	mov TriPoint[8].x,eax   ; x coord of 2nd point = eax, i.e. 5 pixels from right side.
	mov TriPoint[16].x,5	; x coord of 3rd point = 5, i.e. 5 pixels from left side.
	mov eax,rect.bottom		; eax = height.
	sub eax,5				; eax = height-5.
	mov TriPoint[0].y,eax	; y coord of 1st point = eax = height-5. i.e. 5 from top.
	mov TriPoint[8].y,5		; y coord of 2nd point 5 from bottom.
	mov TriPoint[16].y,5 	; y coord of 3rd point 5 from bottom.

	mov ebx,TriPoint[0].x	; ebx will hold current x throughout loop, initalise to point 1.
	mov ecx,TriPoint[0].y	; ebx will hold current y throughout loop. 

	mov edi,pBb				; edi points to bitmap bits.
	mov esi,100000			; esi acts as loop counter. Note higher esi = better image & slower

	rLp:call Rnd3Bit		; Get random 3 bit number.
		and eax,3			; convert to num between 0-3.
		jz rLp				; if 0 then get new number. (Only 3 points, not 4)
		
		add ebx,TriPoint[eax*8][-8].x	; CurX = CurX + CornerX
		shr ebx,1						; CurX = (CurX + CornerX)/2
		add ecx,TriPoint[eax*8][-8].y	; CurY = CurY + CornerY
		shr ecx,1						; CurY = (CurY + CornerY)/2

		mov eax,rect.right
		xor edx,edx
		mul ecx							; eax = CurY * width
		add eax,ebx						; eax = eax + Cur X = (CurY * width) + CurX

		mov dword ptr [edi][eax*4],0FFFFFFh	; Set Pixel to White
	dec esi					; decrement counter
	jnz rLp					; repeat loop if unfinished
ret
RenderFractal EndP

ALIGN 4
Start:
lea edi,wc						
xor eax,eax						
mov ecx,(sizeof WNDCLASSEX)/4	
rep stosd						; Zero wc WNDCLASSEX Struct

invoke GetModuleHandle,eax
mov gIst,eax
mov wc.hInstance,eax
mov wc.cbSize, sizeof WNDCLASSEX
mov wc.style,CS_OWNDC or CS_HREDRAW or CS_VREDRAW
mov wc.lpszClassName,offset ClassName
mov wc.lpfnWndProc,offset WinProc
invoke LoadCursor,NULL,IDC_ARROW
mov wc.hCursor,eax
mov wc.hbrBackground,COLOR_WINDOW+1
invoke RegisterClassEx,ADDR wc

xor eax,eax
invoke CreateWindowEx,0,ADDR ClassName,ADDR AppName,WS_OVERLAPPEDWINDOW,\
					  10,10,300,200,eax,eax,gIst,eax
mov gWnd,eax					; Store handle in ase its needed later.

push eax
push SW_SHOWNORMAL
push eax
call ShowWindow
call UpdateWindow

ml:	xor eax,eax
	lea edi,msg
	invoke GetMessage,edi,eax,eax,eax
	test eax,eax
	jz qm
		push edi
		push edi
		call TranslateMessage
		call DispatchMessage
jmp ml
	ALIGN 4
qm:	mov eax,msg.wParam
	invoke ExitProcess,eax
END Start

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频在线一区| 久久精品免费观看| 国产农村妇女毛片精品久久麻豆| 欧美疯狂做受xxxx富婆| 欧美日韩另类一区| 欧美午夜片在线看| 欧美日韩精品一区二区| 欧美日韩黄色影视| 8x8x8国产精品| 日韩欧美国产午夜精品| 精品理论电影在线观看| 国产午夜亚洲精品午夜鲁丝片| 久久午夜老司机| 中文字幕中文字幕一区二区| 亚洲三级理论片| 亚洲综合久久久久| 日本在线不卡视频| 国产乱子伦视频一区二区三区 | 日韩欧美区一区二| 久久久久久久久99精品| 中文欧美字幕免费| 亚洲第一激情av| 免费欧美在线视频| 成人动漫精品一区二区| 欧美在线一区二区| 欧美videos大乳护士334| 中文欧美字幕免费| 偷窥少妇高潮呻吟av久久免费| 久久草av在线| 91免费看视频| 欧美不卡视频一区| 亚洲欧美国产高清| 久久精品99国产精品| 99re这里都是精品| 日韩片之四级片| 亚洲三级电影网站| 蜜桃视频一区二区三区| 99久久久无码国产精品| 日韩欧美色综合网站| 亚洲欧洲精品一区二区三区 | 另类欧美日韩国产在线| 99精品久久久久久| 日韩精品中文字幕一区二区三区| 国产精品久久久久影院老司| 首页综合国产亚洲丝袜| 99久久精品国产精品久久| 日韩欧美色综合| 亚洲国产另类精品专区| 成人av资源在线观看| 日韩欧美你懂的| 首页国产欧美久久| 色婷婷综合激情| 日本一区二区三区在线不卡| 首页欧美精品中文字幕| 色视频欧美一区二区三区| 欧美激情中文字幕一区二区| 日本vs亚洲vs韩国一区三区| 在线影院国内精品| 欧美国产国产综合| 国产电影精品久久禁18| 日韩午夜激情视频| 日本三级韩国三级欧美三级| 在线观看欧美精品| 亚洲男人的天堂在线观看| www.欧美色图| 国产精品久久久久影院老司 | 欧美日韩一区二区三区在线看| 中文字幕va一区二区三区| 国产一区二区调教| 精品久久免费看| 蜜桃在线一区二区三区| 日韩久久久久久| 麻豆精品一区二区三区| 日韩欧美中文一区二区| 秋霞午夜av一区二区三区| 欧美一区二区三区在线看| 青青草视频一区| 精品久久人人做人人爱| 国产一区二区三区电影在线观看 | 91在线无精精品入口| 中文字幕一区视频| 一本到一区二区三区| 亚洲人被黑人高潮完整版| 色一情一乱一乱一91av| 亚洲精品少妇30p| 欧美三区免费完整视频在线观看| 偷拍一区二区三区四区| 欧美一区二区在线观看| 精品亚洲国产成人av制服丝袜| 91麻豆精品国产自产在线观看一区 | 日韩欧美成人一区| 国产一区91精品张津瑜| 国产精品沙发午睡系列990531| 99久久婷婷国产综合精品电影| 亚洲精品成人精品456| 3d成人动漫网站| 国产一区二区日韩精品| 1区2区3区国产精品| 91久久精品一区二区二区| 琪琪久久久久日韩精品| 久久久久久影视| 色婷婷激情久久| 免播放器亚洲一区| 欧美韩国日本综合| 在线观看一区二区精品视频| 日本不卡在线视频| √…a在线天堂一区| 51精品秘密在线观看| 国产传媒日韩欧美成人| 亚洲观看高清完整版在线观看| 久久色视频免费观看| 色狠狠av一区二区三区| 国产一区久久久| 亚洲成av人片观看| 国产欧美日韩三级| 欧美精品黑人性xxxx| 不卡一二三区首页| 另类欧美日韩国产在线| 一区二区三区高清在线| 久久久99精品久久| 欧美精品粉嫩高潮一区二区| 不卡一区二区在线| 韩国午夜理伦三级不卡影院| 亚洲午夜久久久久久久久久久| 国产午夜亚洲精品理论片色戒| 欧美男生操女生| 99re成人在线| 成人夜色视频网站在线观看| 调教+趴+乳夹+国产+精品| 亚洲人成小说网站色在线| 国产亚洲女人久久久久毛片| 91麻豆精品国产自产在线观看一区 | aaa欧美色吧激情视频| 免费成人在线观看视频| 亚洲成人精品在线观看| 国产精品色噜噜| 日韩视频在线你懂得| 欧美中文字幕不卡| 日本道色综合久久| 一本久久精品一区二区| 99在线视频精品| 成人毛片视频在线观看| 粉嫩一区二区三区在线看| 国产又粗又猛又爽又黄91精品| 美女视频黄a大片欧美| 日本亚洲一区二区| 日韩国产成人精品| 日韩vs国产vs欧美| 日韩国产欧美在线视频| 日韩av在线发布| 美女脱光内衣内裤视频久久网站| 日韩激情中文字幕| 视频一区二区不卡| 美洲天堂一区二卡三卡四卡视频| 热久久久久久久| 美日韩一级片在线观看| 激情综合一区二区三区| 国产二区国产一区在线观看 | 国产女人18毛片水真多成人如厕| 精品成a人在线观看| 久久综合999| 国产欧美日韩卡一| 亚洲久本草在线中文字幕| 亚洲国产wwwccc36天堂| 日韩精品1区2区3区| 精品伊人久久久久7777人| 九九视频精品免费| 成人一道本在线| 91极品视觉盛宴| 8x福利精品第一导航| 2020日本不卡一区二区视频| 国产欧美一区二区精品久导航| 国产亚洲福利社区一区| 亚洲欧美色综合| 天堂va蜜桃一区二区三区漫画版 | 亚洲精品在线观看视频| 国产精品久久久久四虎| 亚洲福利一二三区| 麻豆国产精品视频| 9i在线看片成人免费| 欧美男女性生活在线直播观看| 日韩精品在线一区| 国产精品视频一二三| 亚洲成人av电影在线| 国产美女视频一区| 91国偷自产一区二区使用方法| 日韩一区二区在线观看视频| 国产精品日韩成人| 日本成人在线不卡视频| 91麻豆精东视频| 精品成a人在线观看| 亚洲福利视频一区二区| 国产精品香蕉一区二区三区| 欧美性xxxxxx少妇| 国产欧美一区二区精品忘忧草| 婷婷丁香久久五月婷婷| av资源站一区| 精品噜噜噜噜久久久久久久久试看| 亚洲视频一二区| 国产一区二区视频在线|