⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yuvrgb32.asm

📁 超级解霸源代码。纯c语言写的。适合有一定编程基础的开发人员用来学习提高
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	.386p
	ifndef	??version
?debug	macro
	endm
publicdll macro	name
	public	name
	endm
	endif
	?debug	V 300h
	?debug	S "YUVRGB32.C"
	?debug	C E980B8FE200A59555652474233322E43
	?debug	C E9959DFC20085643444150492E48
	?debug	C E94019CA1817443A5C42435C494E434C5544455C57494E444F5753+
	?debug	C 2E48
YUVRGB32_TEXT	segment byte public use32 'CODE'
YUVRGB32_TEXT	ends
DGROUP	group	_DATA,_BSS
	assume	cs:YUVRGB32_TEXT,ds:DGROUP
_DATA	segment word public use16 'DATA'
d@	label	byte
d@w	label	word
_DATA	ends
_BSS	segment word public use16 'BSS'
b@	label	byte
b@w	label	word
_BSS	ends
YUVRGB32_TEXT	segment byte public use32 'CODE'
	?debug	C E8010A59555652474233322E4380B8FE20
   ;	
   ;	void	PASCAL	FAR	DrawYVU12(void)	//YVU12 Planar
   ;	
	?debug	L 17
	assume	cs:YUVRGB32_TEXT
DRAWYVU12	proc	far
	?debug	B
	push	esi
	push	edi
	?debug	B
   ;	
   ;	{
   ;		_EDI=_EDI;
   ;	
	?debug	L 19
   ;	
   ;		asm	xor	eax,eax
   ;	
	?debug	L 20
		xor		eax,eax
   ;	
   ;		asm	push	ds
   ;	
	?debug	L 21
		push		ds
   ;	
   ;	//	_ES=LinearSelSurface;
   ;	//	_EDX=VCDHigh;
   ;	//	_EDI=LinearOffSurface;		//ES:EDI->Offscreen
   ;		asm	mov	ds,OffScrSel;
   ;	
	?debug	L 25
		mov		ds,_OffScrSel
   ;	
   ;		asm	mov	esi,[eax+4]
   ;	
	?debug	L 26
		mov		esi,[eax+4]
   ;	
   ;		asm	mov	ebx,[eax+8]
   ;	
	?debug	L 27
		mov		ebx,[eax+8]
   ;	
   ;		asm	mov	ds,[eax+0x10]	//GS-> Video data
   ;	
	?debug	L 28
		mov		ds,[eax+010H]	
   ;	
   ;		///////// Move Y Data //////////
   ;		asm	push	edx
   ;	
	?debug	L 30
		push		edx
@1@226:
   ;	
   ;		MoveYData:
   ;			_ECX=88;
   ;	
	?debug	L 32
	mov	ecx,large 88
   ;	
   ;			asm	rep	movsd//32 bits address
   ;	
	?debug	L 33
		rep	movsd	
   ;	
   ;			_ESI+=800;
   ;	
	?debug	L 34
	add	esi,large 800
   ;	
   ;		asm	dec	edx
   ;	
	?debug	L 35
		dec		edx
   ;	
   ;		asm	jnz	MoveYData
   ;	
	?debug	L 36
	jne	short @1@226
   ;	
   ;		////////// Move V Data //////////
   ;		_ESI=_EBX;
   ;	
	?debug	L 38
	mov	esi,ebx
   ;	
   ;		_ESI+=0x240;	//VPlane
   ;	
	?debug	L 39
	add	esi,large 576
   ;	
   ;		asm	pop	edx
   ;	
	?debug	L 40
		pop		edx
   ;	
   ;		asm	shr	edx,1	//_EDX/=2;
   ;	
	?debug	L 41
		shr		edx,1	
   ;	
   ;		asm	push	edx
   ;	
	?debug	L 42
		push		edx
@1@478:
   ;	
   ;		MoveVData:
   ;			_ECX=44;
   ;	
	?debug	L 44
	mov	ecx,large 44
   ;	
   ;			asm	rep	movsd//32 bits address
   ;	
	?debug	L 45
		rep	movsd	
   ;	
   ;			_ESI+=976;
   ;	
	?debug	L 46
	add	esi,large 976
   ;	
   ;		asm	dec	edx
   ;	
	?debug	L 47
		dec		edx
   ;	
   ;		asm	jnz	MoveVData
   ;	
	?debug	L 48
	jne	short @1@478
   ;	
   ;		////////// Move U Data //////////
   ;		_ESI=_EBX;	//UPlane
   ;	
	?debug	L 50
	mov	esi,ebx
   ;	
   ;		asm	pop	edx
   ;	
	?debug	L 51
		pop		edx
@1@674:
   ;	
   ;		MoveUData:
   ;			_ECX=44;
   ;	
	?debug	L 53
	mov	ecx,large 44
   ;	
   ;			asm	rep	movsd//32 bits address
   ;	
	?debug	L 54
		rep	movsd	
   ;	
   ;			_ESI+=976;
   ;	
	?debug	L 55
	add	esi,large 976
   ;	
   ;		asm	dec	edx
   ;	
	?debug	L 56
		dec		edx
   ;	
   ;		asm	jnz	MoveUData
   ;	
	?debug	L 57
	jne	short @1@674
   ;	
   ;		asm	pop	ds
   ;	
	?debug	L 58
		pop		ds
   ;	
   ;	}
   ;	
	?debug	L 59
	pop	edi
	pop	esi
        db	066h
	ret
	?debug	E
	?debug	E
DRAWYVU12	endp
   ;	
   ;	void	PASCAL	FAR	DrawYVU9(void)	//YVU9 Planar
   ;	
	?debug	L 61
	assume	cs:YUVRGB32_TEXT
DRAWYVU9	proc	far
	?debug	B
	push	esi
	push	edi
	?debug	B
   ;	
   ;	{
   ;		_EDI=_EDI;
   ;	
	?debug	L 63
   ;	
   ;		asm	xor	eax,eax
   ;	
	?debug	L 64
		xor		eax,eax
   ;	
   ;		asm	push	ds
   ;	
	?debug	L 65
		push		ds
   ;	
   ;	//	_EDX=VCDHigh;
   ;	//	_EDI=LinearOffSurface;		//ES:EDI->Offscreen
   ;	//	_ES=LinearSelSurface;
   ;		asm	mov	ds,OffScrSel;
   ;	
	?debug	L 69
		mov		ds,_OffScrSel
   ;	
   ;		asm 	mov 	esi,[eax+4]
   ;	
	?debug	L 70
 		mov	 	esi,[eax+4]
   ;	
   ;		asm 	mov 	ebx,[eax+8]
   ;	
	?debug	L 71
 		mov	 	ebx,[eax+8]
   ;	
   ;		asm	mov 	ds,[eax+0x10]	//DS-> Video data
   ;	
	?debug	L 72
		mov	 	ds,[eax+010H]	
   ;	
   ;		///////// Move Y Data //////////
   ;		asm	push	edx
   ;	
	?debug	L 74
		push		edx
@2@226:
   ;	
   ;		MoveYData:
   ;			_ECX=88;
   ;	
	?debug	L 76
	mov	ecx,large 88
   ;	
   ;			asm	rep	movsd//32 bits address
   ;	
	?debug	L 77
		rep	movsd	
   ;	
   ;			_ESI+=800;
   ;	
	?debug	L 78
	add	esi,large 800
   ;	
   ;		asm	dec	edx
   ;	
	?debug	L 79
		dec		edx
   ;	
   ;		asm	jnz	MoveYData
   ;	
	?debug	L 80
	jne	short @2@226
   ;	
   ;		/////////////////////////////////
   ;		asm	pop	edx
   ;	
	?debug	L 82
		pop		edx
   ;	
   ;		////////// Move V Data //////////
   ;		_ESI=_EBX;
   ;	
	?debug	L 84
	mov	esi,ebx
   ;	
   ;		asm	shr	edx,2	//_EDX/=4;
   ;	
	?debug	L 85
		shr		edx,2	
   ;	
   ;		_ESI+=0x240;	//VPlane
   ;	
	?debug	L 86
	add	esi,large 576
   ;	
   ;		asm	push	edx
   ;	
	?debug	L 87
		push		edx
@2@506:
   ;	
   ;		MoveVData:
   ;			_EBP=176/16;
   ;	
	?debug	L 89
	mov	ebp,large 11
@2@534:
   ;	
   ;			MoveVdata:
   ;			asm	mov	al,[esi+4]
   ;	
	?debug	L 91
		mov		al,[esi+4]
   ;	
   ;			asm	mov	cl,[esi+12]
   ;	
	?debug	L 92
		mov		cl,[esi+12]
   ;	
   ;			asm	mov	ah,[esi+6]
   ;	
	?debug	L 93
		mov		ah,[esi+6]
   ;	
   ;			asm	mov	ch,[esi+14]
   ;	
	?debug	L 94
		mov		ch,[esi+14]
   ;	
   ;			asm	shl	eax,16
   ;	
	?debug	L 95
		shl		eax,16
   ;	
   ;			asm	shl	ecx,16
   ;	
	?debug	L 96
		shl		ecx,16
   ;	
   ;			asm	mov	al,[esi]
   ;	
	?debug	L 97
		mov		al,[esi]
   ;	
   ;			asm	mov	cl,[esi+8]
   ;	
	?debug	L 98
		mov		cl,[esi+8]
   ;	
   ;			asm	mov	ah,[esi+2]
   ;	
	?debug	L 99
		mov		ah,[esi+2]
   ;	
   ;			asm	mov	es:[edi],eax
   ;	
	?debug	L 100
		mov		es:[edi],eax
   ;	
   ;			asm	mov	ch,[esi+10]
   ;	
	?debug	L 101
		mov		ch,[esi+10]
   ;	
   ;			asm	mov	es:[edi+4],ecx
   ;	
	?debug	L 102
		mov		es:[edi+4],ecx
   ;	
   ;			asm	add	edi,8
   ;	
	?debug	L 103
		add		edi,8
   ;	
   ;			asm	add	esi,16
   ;	
	?debug	L 104
		add		esi,16
   ;	
   ;			asm	dec	ebp
   ;	
	?debug	L 105
		dec		ebp
   ;	
   ;			asm	jnz	MoveVdata
   ;	
	?debug	L 106
	jne	short @2@534
   ;	
   ;			_ESI+=(976+0x480);
   ;	
	?debug	L 107
	add	esi,large 2128
   ;	
   ;		asm	dec	edx
   ;	
	?debug	L 108
		dec		edx
   ;	
   ;		asm	jnz	MoveVData
   ;	
	?debug	L 109
	jne	short @2@506
   ;	
   ;		////////// Move U Data //////////
   ;		_ESI=_EBX;	//UPlane
   ;	
	?debug	L 111
	mov	esi,ebx
   ;	
   ;		asm	pop	edx
   ;	
	?debug	L 112
		pop		edx
@2@1122:
   ;	
   ;		MoveUData:
   ;			_EBP=176/16;
   ;	
	?debug	L 114
	mov	ebp,large 11
@2@1150:
   ;	
   ;			MoveUdata:
   ;			asm	mov	al,[esi+4]
   ;	
	?debug	L 116
		mov		al,[esi+4]
   ;	
   ;			asm	mov	cl,[esi+12]
   ;	
	?debug	L 117
		mov		cl,[esi+12]
   ;	
   ;			asm	mov	ah,[esi+6]
   ;	
	?debug	L 118
		mov		ah,[esi+6]
   ;	
   ;			asm	mov	ch,[esi+14]
   ;	
	?debug	L 119
		mov		ch,[esi+14]
   ;	
   ;			asm	shl	eax,16
   ;	
	?debug	L 120
		shl		eax,16
   ;	
   ;			asm	shl	ecx,16
   ;	
	?debug	L 121
		shl		ecx,16
   ;	
   ;			asm	mov	al,[esi]
   ;	
	?debug	L 122
		mov		al,[esi]
   ;	
   ;			asm	mov	cl,[esi+8]
   ;	
	?debug	L 123
		mov		cl,[esi+8]
   ;	
   ;			asm	mov	ah,[esi+2]
   ;	
	?debug	L 124
		mov		ah,[esi+2]
   ;	
   ;			asm	mov	es:[edi],eax
   ;	
	?debug	L 125
		mov		es:[edi],eax
   ;	
   ;			asm	mov	ch,[esi+10]
   ;	
	?debug	L 126
		mov		ch,[esi+10]
   ;	
   ;			asm	mov	es:[edi+4],ecx
   ;	
	?debug	L 127
		mov		es:[edi+4],ecx
   ;	
   ;			asm	add	edi,8
   ;	
	?debug	L 128
		add		edi,8
   ;	
   ;			asm	add	esi,16
   ;	
	?debug	L 129
		add		esi,16
   ;	
   ;			asm	dec	ebp
   ;	
	?debug	L 130
		dec		ebp
   ;	
   ;			asm	jnz	MoveUdata
   ;	
	?debug	L 131
	jne	short @2@1150
   ;	
   ;			_ESI+=(976+0x480);
   ;	
	?debug	L 132
	add	esi,large 2128
   ;	
   ;		asm	dec	edx
   ;	
	?debug	L 133
		dec		edx
   ;	
   ;		asm	jnz	MoveUData
   ;	
	?debug	L 134
	jne	short @2@1122
   ;	
   ;		asm	pop	ds
   ;	
	?debug	L 135
		pop		ds
   ;	
   ;	}
   ;	
	?debug	L 136
	pop	edi
	pop	esi
	db	066h
	ret
	?debug	E
	?debug	E
DRAWYVU9	endp
   ;	
   ;	void	PASCAL	FAR	DrawIF09(void)	//YVU9 Planar and pitch
   ;	
	?debug	L 138
	assume	cs:YUVRGB32_TEXT
DRAWIF09	proc	far
	?debug	B
	push	esi
	push	edi
	?debug	B
   ;	
   ;	{
   ;		_EDI=_EDI;
   ;	
	?debug	L 140
   ;	
   ;		asm	xor	eax,eax
   ;	
	?debug	L 141
		xor		eax,eax
   ;	
   ;		asm	push	ds
   ;	
	?debug	L 142
		push		ds
   ;	
   ;		_EDX=288;
   ;	
	?debug	L 143
	mov	edx,large 288
   ;	
   ;		asm	mov	ds,OffScrSel;
   ;	
	?debug	L 144
		mov		ds,_OffScrSel
   ;	
   ;		asm 	mov 	esi,[eax+4]
   ;	
	?debug	L 145
 		mov	 	esi,[eax+4]
   ;	
   ;		asm 	mov 	ebx,[eax+8]
   ;	
	?debug	L 146
 		mov	 	ebx,[eax+8]
   ;	
   ;		asm	mov 	ds,[eax+0x10]	//GS-> Video data
   ;	
	?debug	L 147
		mov	 	ds,[eax+010H]	
@3@226:
   ;	
   ;		///////// Move Y Data //////////
   ;		MoveYData:
   ;			_ECX=88;
   ;	
	?debug	L 150
	mov	ecx,large 88
   ;	
   ;			asm	rep	movsd//32 bits address
   ;	
	?debug	L 151
		rep	movsd	
   ;	
   ;			_ESI+=800;
   ;	
	?debug	L 152
	add	esi,large 800
   ;	
   ;		asm	dec	edx
   ;	
	?debug	L 153
		dec		edx
   ;	
   ;		asm	jnz	MoveYData
   ;	
	?debug	L 154
	jne	short @3@226
   ;	
   ;		/////////////////////////////////
   ;		////////// Move V Data //////////
   ;		_ESI=_EBX;
   ;	
	?debug	L 157
	mov	esi,ebx
   ;	
   ;		_ESI+=0x240;	//VPlane
   ;	
	?debug	L 158
	add	esi,large 576
   ;	
   ;		_EDX=72;
   ;	
	?debug	L 159
	mov	edx,large 72
@3@394:
   ;	
   ;		MoveVData:
   ;			_EBP=176/16;
   ;	
	?debug	L 161
	mov	ebp,large 11
@3@422:
   ;	
   ;			MoveVdata:
   ;			asm	mov	al,[esi+4]
   ;	
	?debug	L 163
		mov		al,[esi+4]
   ;	
   ;			asm	mov	cl,[esi+12]
   ;	
	?debug	L 164
		mov		cl,[esi+12]
   ;	
   ;			asm	mov	ah,[esi+6]
   ;	
	?debug	L 165
		mov		ah,[esi+6]
   ;	
   ;			asm	mov	ch,[esi+14]
   ;	
	?debug	L 166
		mov		ch,[esi+14]
   ;	
   ;			asm	shl	eax,16
   ;	
	?debug	L 167
		shl		eax,16
   ;	
   ;			asm	shl	ecx,16
   ;	
	?debug	L 168
		shl		ecx,16
   ;	
   ;			asm	mov	al,[esi]
   ;	
	?debug	L 169
		mov		al,[esi]
   ;	
   ;			asm	mov	cl,[esi+8]
   ;	
	?debug	L 170
		mov		cl,[esi+8]
   ;	
   ;			asm	mov	ah,[esi+2]
   ;	
	?debug	L 171
		mov		ah,[esi+2]
   ;	
   ;			asm	mov	es:[edi],eax
   ;	
	?debug	L 172
		mov		es:[edi],eax
   ;	
   ;			asm	mov	ch,[esi+10]
   ;	
	?debug	L 173
		mov		ch,[esi+10]
   ;	
   ;			asm	mov	es:[edi+4],ecx
   ;	
	?debug	L 174
		mov		es:[edi+4],ecx
   ;	
   ;			asm	add	edi,8
   ;	
	?debug	L 175
		add		edi,8
   ;	
   ;			asm	add	esi,16
   ;	
	?debug	L 176
		add		esi,16
   ;	
   ;			asm	dec	ebp
   ;	
	?debug	L 177
		dec		ebp
   ;	
   ;			asm	jnz	MoveVdata
   ;	
	?debug	L 178
	jne	short @3@422
   ;	
   ;			_ESI+=(976+0x480);
   ;	
	?debug	L 179
	add	esi,large 2128
   ;	
   ;		asm	dec	edx
   ;	
	?debug	L 180
		dec		edx
   ;	
   ;		asm	jnz	MoveVData
   ;	
	?debug	L 181
	jne	short @3@394
   ;	
   ;		////////// Move U Data //////////
   ;		_ESI=_EBX;	//UPlane
   ;	
	?debug	L 183
	mov	esi,ebx
   ;	
   ;		_EDX=72;
   ;	
	?debug	L 184
	mov	edx,large 72
@3@982:
   ;	
   ;		MoveUData:
   ;			_EBP=176/16;
   ;	
	?debug	L 186
	mov	ebp,large 11
@3@1010:
   ;	
   ;			MoveUdata:
   ;			asm	mov	al,[esi+4]
   ;	
	?debug	L 188
		mov		al,[esi+4]
   ;	
   ;			asm	mov	cl,[esi+12]
   ;	
	?debug	L 189
		mov		cl,[esi+12]
   ;	
   ;			asm	mov	ah,[esi+6]
   ;	
	?debug	L 190
		mov		ah,[esi+6]
   ;	
   ;			asm	mov	ch,[esi+14]
   ;	
	?debug	L 191
		mov		ch,[esi+14]
   ;	
   ;			asm	shl	eax,16
   ;	
	?debug	L 192
		shl		eax,16
   ;	
   ;			asm	shl	ecx,16
   ;	
	?debug	L 193
		shl		ecx,16
   ;	
   ;			asm	mov	al,[esi]
   ;	
	?debug	L 194
		mov		al,[esi]
   ;	
   ;			asm	mov	cl,[esi+8]
   ;	
	?debug	L 195
		mov		cl,[esi+8]
   ;	
   ;			asm	mov	ah,[esi+2]
   ;	
	?debug	L 196
		mov		ah,[esi+2]
   ;	
   ;			asm	mov	es:[edi],eax
   ;	
	?debug	L 197
		mov		es:[edi],eax
   ;	
   ;			asm	mov	ch,[esi+10]
   ;	
	?debug	L 198
		mov		ch,[esi+10]
   ;	
   ;			asm	mov	es:[edi+4],ecx
   ;	
	?debug	L 199
		mov		es:[edi+4],ecx
   ;	
   ;			asm	add	edi,8
   ;	
	?debug	L 200
		add		edi,8
   ;	
   ;			asm	add	esi,16
   ;	
	?debug	L 201
		add		esi,16
   ;	
   ;			asm	dec	ebp
   ;	
	?debug	L 202
		dec		ebp

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -