透明処理 1ラインの間同じ透明度を使うという条件

 mov ESI,src
 mov EDI,dst
_LOOP_:
 MOV  EDX,ra
 MOV  ECX,[ESI]
 SHR  ECX,8        //先にシフトしておけば後でシフトする必要がない
 AND  ECX,00FF00FFH //マスクしておく
 IMUL ECX,EDX      //IMULが使えるようにするのがコツ
 MOV  EBX,[ESI]
 AND  EBX,00FF00FFH
 IMUL EBX,EDX
 SHR  EBX,8
 MOV  EDX,rb
 MOV  EAX,[EDI]
 SHR  EAX,8
 AND  EAX,00FF00FFH
 IMUL EAX,EDX
 ADD  EAX,ECX
 AND  EAX,0FF00FF00H
 MOV  ECX,[EDI]
 AND  ECX,00FF00FFH
 IMUL ECX,EDX
 SHR  ECX,8
 ADD  ECX,EBX
 AND  ECX,00FF00FFH
 OR  EAX,ECX
 mov  EDX,back
 MOV  [EDX],EAX
 ADD  back,4
 LEA  ESI,[ESI+4]
 LEA  EDI,[EDI+4]
 DEC  LoopCnt
 JNZ _LOOP_