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

📄 yuvrgb32.asm

📁 超级解霸源代码。纯c语言写的。适合有一定编程基础的开发人员用来学习提高
💻 ASM
📖 第 1 页 / 共 2 页
字号:
   ;	
   ;			asm	jnz	MoveUdata
   ;	
	?debug	L 203
	jne	short @3@1010
   ;	
   ;			_ESI+=(976+0x480);
   ;	
	?debug	L 204
	add	esi,large 2128
   ;	
   ;		asm	dec	edx
   ;	
	?debug	L 205
		dec		edx
   ;	
   ;		asm	jnz	MoveUData
   ;	
	?debug	L 206
	jne	short @3@982
   ;	
   ;		asm	pop	ds
   ;	
	?debug	L 207
		pop		ds
   ;	
   ;	}
   ;	
	?debug	L 208
	pop	edi
	pop	esi
	db	066h
	ret
	?debug	E
	?debug	E
DRAWIF09	endp
   ;	
   ;	void	PASCAL	FAR	DrawYUY2(void)	//YUYV 4:2:2 byte ordering
   ;	
	?debug	L 209
	assume	cs:YUVRGB32_TEXT
DRAWYUY2	proc	far
	?debug	B
	push	esi
	push	edi
	?debug	B
   ;	
   ;	{
   ;		asm	xor	eax,eax
   ;	
	?debug	L 211
		xor		eax,eax
   ;	
   ;		asm	push	ds
   ;	
	?debug	L 212
		push		ds
   ;	
   ;	//	_EDX=VCDHigh;
   ;	//	_EDI=LinearOffSurface;		//ES:EDI->Offscreen
   ;	//	_ES=LinearSelSurface;
   ;		asm	mov	ds,OffScrSel;
   ;	
	?debug	L 216
		mov		ds,_OffScrSel
   ;	
   ;		asm 	mov 	esi,[eax+4]
   ;	
	?debug	L 217
 		mov	 	esi,[eax+4]
   ;	
   ;		asm	mov 	ecx,[eax+8]	//ECX->V,U plane
   ;	
	?debug	L 218
		mov	 	ecx,[eax+8]	
   ;	
   ;		asm	mov 	ds,[eax+0x10]	//DS-> Video data
   ;	
	?debug	L 219
		mov	 	ds,[eax+010H]	
   ;	
   ;		///////// Move YUYV Data //////////
   ;		asm	shr	edx,1//_EDX/=2;
   ;	
	?debug	L 221
		shr		edx,1
@4@226:
   ;	
   ;		MoveYUY2Data:
   ;			_EBP=176/2;
   ;	
	?debug	L 223
	mov	ebp,large 88
   ;	
   ;			asm	push	edx
   ;	
	?debug	L 224
		push		edx
@4@282:
   ;	
   ;			Move2LineData:
   ;			asm	mov	ah,[ecx+0x240]
   ;	
	?debug	L 226
		mov		ah,[ecx+0240H]
   ;	
   ;			asm	mov	bh,[ecx+0x241]
   ;	
	?debug	L 227
		mov		bh,[ecx+0241H]
   ;	
   ;			asm	mov	al,[esi+1]
   ;	
	?debug	L 228
		mov		al,[esi+1]
   ;	
   ;			asm	mov	bl,[esi+3]
   ;	
	?debug	L 229
		mov		bl,[esi+3]
   ;	
   ;			asm	shl	eax,16		//V0Y1
   ;	
	?debug	L 230
		shl		eax,16		
   ;	
   ;			asm	mov	dh,[ecx+0x240]
   ;	
	?debug	L 231
		mov		dh,[ecx+0240H]
   ;	
   ;			asm	shl	ebx,16		//V1Y3
   ;	
	?debug	L 232
		shl		ebx,16		
   ;	
   ;			asm	mov	al,[esi]
   ;	
	?debug	L 233
		mov		al,[esi]
   ;	
   ;			asm	mov	ah,[ecx]	//U0Y0
   ;	
	?debug	L 234
		mov		ah,[ecx]	
   ;	
   ;			asm	mov	dl,[esi+0x480+1]
   ;	
	?debug	L 235
		mov		dl,[esi+0480H+1]
   ;	
   ;			asm	shl	edx,16		//V0Y1
   ;	
	?debug	L 236
		shl		edx,16		
   ;	
   ;			asm	mov	bh,[ecx+1]	//U1Y2
   ;	
	?debug	L 237
		mov		bh,[ecx+1]	
   ;	
   ;			asm	mov	es:[edi],eax		//Y1V0Y0U0
   ;	
	?debug	L 238
		mov		es:[edi],eax		
   ;	
   ;			asm	mov	bl,[esi+2]
   ;	
	?debug	L 239
		mov		bl,[esi+2]
   ;	
   ;			asm	mov	es:[edi+4],ebx		//Y3V1Y2U1
   ;	
	?debug	L 240
		mov		es:[edi+4],ebx		
   ;	
   ;			asm	mov	dl,[esi+0x480]
   ;	
	?debug	L 241
		mov		dl,[esi+0480H]
   ;	
   ;			asm	mov	bh,[ecx+0x241]
   ;	
	?debug	L 242
		mov		bh,[ecx+0241H]
   ;	
   ;			asm	mov	dh,[ecx]	//U0Y0
   ;	
	?debug	L 243
		mov		dh,[ecx]	
   ;	
   ;			asm	mov	es:[edi+704],edx
   ;	
	?debug	L 244
		mov		es:[edi+704],edx
   ;	
   ;			asm	mov	bl,[esi+0x480+3]
   ;	
	?debug	L 245
		mov		bl,[esi+0480H+3]
   ;	
   ;			asm	shl	ebx,16		//V1Y3
   ;	
	?debug	L 246
		shl		ebx,16		
   ;	
   ;			asm	mov	bl,[esi+0x480+2]
   ;	
	?debug	L 247
		mov		bl,[esi+0480H+2]
   ;	
   ;			asm	add	esi,4
   ;	
	?debug	L 248
		add		esi,4
   ;	
   ;			asm	mov	bh,[ecx+1]	//U1Y2
   ;	
	?debug	L 249
		mov		bh,[ecx+1]	
   ;	
   ;			asm	add	ecx,2
   ;	
	?debug	L 250
		add		ecx,2
   ;	
   ;			asm	mov	es:[edi+704+4],ebx
   ;	
	?debug	L 251
		mov		es:[edi+704+4],ebx
   ;	
   ;			asm	add	edi,8
   ;	
	?debug	L 252
		add		edi,8
   ;	
   ;			asm	dec	ebp
   ;	
	?debug	L 253
		dec		ebp
   ;	
   ;			asm	jnz	Move2LineData
   ;	
	?debug	L 254
	jne	short @4@282
   ;	
   ;		_ECX+=976;
   ;	
	?debug	L 255
	add	ecx,large 976
   ;	
   ;		asm	pop	edx
   ;	
	?debug	L 256
		pop		edx
   ;	
   ;		_ESI+=(800+0x480);
   ;	
	?debug	L 257
	add	esi,large 1952
   ;	
   ;		_EDI+=704;
   ;	
	?debug	L 258
	add	edi,large 704
   ;	
   ;		asm	dec	edx
   ;	
	?debug	L 259
		dec		edx
   ;	
   ;		asm	jnz	MoveYUY2Data
   ;	
	?debug	L 260
	jne	near ptr  @4@226
   ;	
   ;		asm	pop	ds
   ;	
	?debug	L 261
		pop		ds
   ;	
   ;	}
   ;	
	?debug	L 262
	pop	edi
	pop	esi
	db	066h
	ret
	?debug	E
	?debug	E
DRAWYUY2	endp
   ;	
   ;	void	PASCAL	FAR	DrawYVYU(void)	//YVYU 4:2:2 byte ordering
   ;	
	?debug	L 264
	assume	cs:YUVRGB32_TEXT
DRAWYVYU	proc	far
	?debug	B
	push	esi
	push	edi
	?debug	B
   ;	
   ;	{
   ;		asm	xor	eax,eax
   ;	
	?debug	L 266
		xor		eax,eax
   ;	
   ;		asm	push	ds
   ;	
	?debug	L 267
		push		ds
   ;	
   ;	//	_EDX=VCDHigh;
   ;	//	_EDI=LinearOffSurface;		//ES:EDI->Offscreen
   ;	//	_ES=LinearSelSurface;
   ;		asm	mov	ds,OffScrSel;
   ;	
	?debug	L 271
		mov		ds,_OffScrSel
   ;	
   ;		asm 	mov 	esi,[eax+4]
   ;	
	?debug	L 272
 		mov	 	esi,[eax+4]
   ;	
   ;		asm	mov 	ecx,[eax+8]
   ;	
	?debug	L 273
		mov	 	ecx,[eax+8]
   ;	
   ;		asm	mov 	ds,[eax+0x10]	//DS-> Video data
   ;	
	?debug	L 274
		mov	 	ds,[eax+010H]	
   ;	
   ;		///////// Move YUYV Data //////////
   ;		asm	shr	edx,1	//DX=_EBX/2;
   ;	
	?debug	L 276
		shr		edx,1	
@5@226:
   ;	
   ;		MoveYUY2Data:
   ;			_EBP=176/2;
   ;	
	?debug	L 278
	mov	ebp,large 88
   ;	
   ;			asm	push	edx
   ;	
	?debug	L 279
		push		edx
@5@282:
   ;	
   ;			Move2LineData:
   ;			asm	mov	ah,[ecx]	//U0
   ;	
	?debug	L 281
		mov		ah,[ecx]	
   ;	
   ;			asm	mov	bl,[esi+3]	//Y3
   ;	
	?debug	L 282
		mov		bl,[esi+3]	
   ;	
   ;			asm	mov	al,[esi+1]	//Y1
   ;	
	?debug	L 283
		mov		al,[esi+1]	
   ;	
   ;			asm	mov	bh,[ecx+1]	//U1
   ;	
	?debug	L 284
		mov		bh,[ecx+1]	
   ;	
   ;			asm	shl	eax,16		//U0Y1
   ;	
	?debug	L 285
		shl		eax,16		
   ;	
   ;			asm	mov	dh,[ecx]	//U0
   ;	
	?debug	L 286
		mov		dh,[ecx]	
   ;	
   ;			asm	shl	ebx,16		//U1Y3
   ;	
	?debug	L 287
		shl		ebx,16		
   ;	
   ;			asm	mov	dl,[esi+0x480+1]
   ;	
	?debug	L 288
		mov		dl,[esi+0480H+1]
   ;	
   ;			asm	mov	al,[esi]
   ;	
	?debug	L 289
		mov		al,[esi]
   ;	
   ;			asm	mov	bh,[ecx+0x241]	//V1Y2
   ;	
	?debug	L 290
		mov		bh,[ecx+0241H]	
   ;	
   ;			asm	shl	edx,16		//U0Y1
   ;	
	?debug	L 291
		shl		edx,16		
   ;	
   ;			asm	mov	ah,[ecx+0x240]	//V0Y0
   ;	
	?debug	L 292
		mov		ah,[ecx+0240H]	
   ;	
   ;			asm	mov	bl,[esi+2]
   ;	
	?debug	L 293
		mov		bl,[esi+2]
   ;	
   ;			asm	mov	dl,[esi+0x480]
   ;	
	?debug	L 294
		mov		dl,[esi+0480H]
   ;	
   ;			asm	mov	es:[edi+4],ebx		//Y2V1Y3U1
   ;	
	?debug	L 295
		mov		es:[edi+4],ebx		
   ;	
   ;			asm	mov	dh,[ecx+0x240]	//V0Y0
   ;	
	?debug	L 296
		mov		dh,[ecx+0240H]	
   ;	
   ;			asm	mov	es:[edi],eax		//Y0V0Y1U0
   ;	
	?debug	L 297
		mov		es:[edi],eax		
   ;	
   ;			//////////// Line 2 ////////////
   ;			asm	mov	bh,[ecx+1]	//U1
   ;	
	?debug	L 299
		mov		bh,[ecx+1]	
   ;	
   ;			asm	mov	es:[edi+704],edx	//Y0V0Y1U0
   ;	
	?debug	L 300
		mov		es:[edi+704],edx	
   ;	
   ;			asm	mov	bl,[esi+0x480+3]
   ;	
	?debug	L 301
		mov		bl,[esi+0480H+3]
   ;	
   ;			asm	shl	ebx,16		//U1Y3
   ;	
	?debug	L 302
		shl		ebx,16		
   ;	
   ;			asm	mov	bl,[esi+0x480+2]
   ;	
	?debug	L 303
		mov		bl,[esi+0480H+2]
   ;	
   ;			asm	add	esi,4
   ;	
	?debug	L 304
		add		esi,4
   ;	
   ;			asm	mov	bh,[ecx+0x241]	//V1Y2
   ;	
	?debug	L 305
		mov		bh,[ecx+0241H]	
   ;	
   ;			asm	add	ecx,2
   ;	
	?debug	L 306
		add		ecx,2
   ;	
   ;			asm	mov	es:[edi+704+4],ebx	//Y2V1Y3U1
   ;	
	?debug	L 307
		mov		es:[edi+704+4],ebx	
   ;	
   ;			asm	add	edi,8
   ;	
	?debug	L 308
		add		edi,8
   ;	
   ;			asm	dec	ebp
   ;	
	?debug	L 309
		dec		ebp
   ;	
   ;			asm	jnz	Move2LineData
   ;	
	?debug	L 310
	jne	short @5@282
   ;	
   ;		_ECX+=976;
   ;	
	?debug	L 311
	add	ecx,large 976
   ;	
   ;		asm	pop	edx
   ;	
	?debug	L 312
		pop		edx
   ;	
   ;		_ESI+=(800+0x480);
   ;	
	?debug	L 313
	add	esi,large 1952
   ;	
   ;		_EDI+=704;
   ;	
	?debug	L 314
	add	edi,large 704
   ;	
   ;		asm	dec	edx
   ;	
	?debug	L 315
		dec		edx
   ;	
   ;		asm	jnz	MoveYUY2Data
   ;	
	?debug	L 316
	jne	near ptr  @5@226
   ;	
   ;		asm	pop	ds
   ;	
	?debug	L 317
		pop		ds
   ;	
   ;	}
   ;	
	?debug	L 318
	pop	edi
	pop	esi
	db	066h
	ret
	?debug	E
	?debug	E
DRAWYVYU	endp
   ;	
   ;	void	PASCAL	FAR	DrawUYVY(void)	//UYVY 4:2:2 byte ordering
   ;	
	?debug	L 319
	assume	cs:YUVRGB32_TEXT
DRAWUYVY	proc	far
	?debug	B
	push	esi
	push	edi
	?debug	B
   ;	
   ;	{
   ;		asm	xor	eax,eax
   ;	
	?debug	L 321
		xor		eax,eax
   ;	
   ;		asm	push	ds
   ;	
	?debug	L 322
		push		ds
   ;	
   ;	//	_EDX=VCDHigh;
   ;	//	_EDI=LinearOffSurface;		//ES:EDI->Offscreen
   ;	//	_ES=LinearSelSurface;
   ;		asm	mov	ds,OffScrSel;
   ;	
	?debug	L 326
		mov		ds,_OffScrSel
   ;	
   ;		asm 	mov 	esi,[eax+4]
   ;	
	?debug	L 327
 		mov	 	esi,[eax+4]
   ;	
   ;		asm	mov 	ecx,[eax+8]
   ;	
	?debug	L 328
		mov	 	ecx,[eax+8]
   ;	
   ;		asm	mov 	ds,[eax+0x10]	//DS-> Video data
   ;	
	?debug	L 329
		mov	 	ds,[eax+010H]	
   ;	
   ;		///////// Move YUYV Data //////////
   ;		asm	shr	edx,1	//_EDX=_EBX/2;
   ;	
	?debug	L 331
		shr		edx,1	
@6@226:
   ;	
   ;		MoveYUY2Data:
   ;			_EBP=176/2;
   ;	
	?debug	L 333
	mov	ebp,large 88
   ;	
   ;			asm	push	edx
   ;	
	?debug	L 334
		push		edx
@6@282:
   ;	
   ;			Move2LineData:
   ;			asm	mov	al,[ecx+0x240]	//V0
   ;	
	?debug	L 336
		mov		al,[ecx+0240H]	
   ;	
   ;			asm	mov	bl,[ecx+0x241]	//V1
   ;	
	?debug	L 337
		mov		bl,[ecx+0241H]	
   ;	
   ;			asm	mov	ah,[esi+1]
   ;	
	?debug	L 338
		mov		ah,[esi+1]
   ;	
   ;			asm	mov	bh,[esi+3]
   ;	
	?debug	L 339
		mov		bh,[esi+3]
   ;	
   ;			asm	shl	eax,16		//[Y1V0][0]
   ;	
	?debug	L 340
		shl		eax,16		
   ;	
   ;			asm	mov	dl,[ecx+0x240]	//V0
   ;	
	?debug	L 341
		mov		dl,[ecx+0240H]	
   ;	
   ;			asm	shl	ebx,16		//[Y3V1][0]
   ;	
	?debug	L 342
		shl		ebx,16		
   ;	
   ;			asm	mov	dh,[esi+0x480+1]	//Y1
   ;	
	?debug	L 343
		mov		dh,[esi+0480H+1]	
   ;	
   ;			asm	shl	edx,16		//[Y1V0][0]
   ;	
	?debug	L 344
		shl		edx,16		
   ;	
   ;			asm	mov	ah,[esi]
   ;	
	?debug	L 345
		mov		ah,[esi]
   ;	
   ;			asm	mov	bh,[esi+2]
   ;	
	?debug	L 346
		mov		bh,[esi+2]
   ;	
   ;			asm	mov	al,[ecx]	//[Y0U0]
   ;	
	?debug	L 347
		mov		al,[ecx]	
   ;	
   ;			asm	mov	es:[edi],eax		//U0Y0V0Y1
   ;	
	?debug	L 348
		mov		es:[edi],eax		
   ;	
   ;			asm	mov	bl,[ecx+1]	//[Y2U1]
   ;	
	?debug	L 349
		mov		bl,[ecx+1]	
   ;	
   ;			asm	mov	es:[edi+4],ebx		//U1Y2V1Y3
   ;	
	?debug	L 350
		mov		es:[edi+4],ebx		
   ;	
   ;			asm	mov	dh,[esi+0x480]
   ;	
	?debug	L 351
		mov		dh,[esi+0480H]
   ;	
   ;			asm	mov	dl,[ecx]		//[Y0U0]
   ;	
	?debug	L 352
		mov		dl,[ecx]		
   ;	
   ;			asm	mov	bl,[ecx+0x241]	//V1
   ;	
	?debug	L 353
		mov		bl,[ecx+0241H]	
   ;	
   ;			asm	mov	es:[edi+704],edx	//U0Y0V0Y1
   ;	
	?debug	L 354
		mov		es:[edi+704],edx	
   ;	
   ;			asm	mov	bh,[esi+0x480+3]	//Y3
   ;	
	?debug	L 355
		mov		bh,[esi+0480H+3]	
   ;	
   ;			asm	shl	ebx,16		//[Y3V1][0]
   ;	
	?debug	L 356
		shl		ebx,16		
   ;	
   ;			asm	mov	bh,[esi+0x480+2]
   ;	
	?debug	L 357
		mov		bh,[esi+0480H+2]
   ;	
   ;			asm	add	esi,4
   ;	
	?debug	L 358
		add		esi,4
   ;	
   ;			asm	mov	bl,[ecx+1]		//[Y2U1]
   ;	
	?debug	L 359
		mov		bl,[ecx+1]		
   ;	
   ;			asm	add	ecx,2
   ;	
	?debug	L 360
		add		ecx,2
   ;	
   ;			asm	mov	es:[edi+704+4],ebx	//U1Y2V1Y3
   ;	
	?debug	L 361
		mov		es:[edi+704+4],ebx	
   ;	
   ;			asm	add	edi,8
   ;	
	?debug	L 362
		add		edi,8
   ;	
   ;			asm	dec	ebp
   ;	
	?debug	L 363
		dec		ebp
   ;	
   ;			asm	jnz	Move2LineData
   ;	
	?debug	L 364
	jne	short @6@282
   ;	
   ;		_ECX+=976;
   ;	
	?debug	L 365
	add	ecx,large 976
   ;	
   ;		asm	pop	edx
   ;	
	?debug	L 366
		pop		edx
   ;	
   ;		_ESI+=(800+0x480);
   ;	
	?debug	L 367
	add	esi,large 1952
   ;	
   ;		_EDI+=704;
   ;	
	?debug	L 368
	add	edi,large 704
   ;	
   ;		asm	dec	edx
   ;	
	?debug	L 369
		dec		edx
   ;	
   ;		asm	jnz	MoveYUY2Data
   ;	
	?debug	L 370
	jne	near ptr  @6@226
   ;	
   ;		asm	pop	ds
   ;	
	?debug	L 371
		pop		ds
   ;	
   ;	}
   ;	
	?debug	L 372
	pop	edi
	pop	esi
	db	066h
	ret
	?debug	E
	?debug	E
DRAWUYVY	endp
	?debug	C E9
	?debug	C FA00000000
YUVRGB32_TEXT	ends
_DATA	segment word public use16 'DATA'
s@	label	byte
_DATA	ends
YUVRGB32_TEXT	segment byte public use32 'CODE'
YUVRGB32_TEXT	ends
	extrn	_OffScrSel:word
	public	DRAWYVU9
	public	DRAWIF09
	public	DRAWUYVY
	public	DRAWYVYU
	public	DRAWYUY2
	public	DRAWYVU12
_s@	equ	s@
	?debug	C EA0109
	?debug	C EB0A5F4F666653637253656C0400
	?debug	C E31800000023010500
	?debug	C EC084452415759565539181800
	?debug	C E31900000023010500
	?debug	C EC084452415749463039191800
	?debug	C E31A00000023010500
	?debug	C EC0844524157555956591A1800
	?debug	C E31B00000023010500
	?debug	C EC0844524157595659551B1800
	?debug	C E31C00000023010500
	?debug	C EC0844524157595559321C1800
	?debug	C E31D00000023010500
	?debug	C EC094452415759565531321D1800
	?debug	C E60548445256520A06000548484F4F4B0C060006+
	?debug	C 48414343454C0A060004484457500A0600074843+
	?debug	C 5552534F520A0600054849434F4E0A060005484D+
	?debug	C 454E550A06000448574E440A060009484D455441+
	?debug	C 46494C450A060008434F4C4F525245460C060005+
	?debug	C 48464F4E540A0600084850414C455454450A0600+
	?debug	C 044852474E0A0600064842525553480A06000448+
	?debug	C 50454E0A060007484249544D41500A0600074847+
	?debug	C 44494F424A0A0600034844430A06000548525352+
	?debug	C 430A0600054846494C4504060005485441534B0A+
	?debug	C 060007484D4F44554C450A06000948494E535441+
	?debug	C 4E43450A060004485354520A06000441544F4D0A+
	?debug	C 06000B4C4F43414C48414E444C450A06000C474C+
	?debug	C 4F42414C48414E444C450A060006484C4F43414C+
	?debug	C 0A06000748474C4F42414C0A06000648414E444C+
	?debug	C 450A0600074C524553554C54060600064C504152+
	?debug	C 414D0606000657504152414D0A06000455494E54+
	?debug	C 0A06000544574F52440C060004574F52440A0600+
	?debug	C 044259544508060004424F4F4C040600
	end

⌨️ 快捷键说明

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