📄 yuvrgb32.asm
字号:
.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 + -