home *** CD-ROM | disk | FTP | other *** search
- ;******************************************************************************
- ; [History] :
- ;
- TITLE TransData ;
- ;
- ;
- ;==============================================================================
- ;
- ;==============================================================================
- ; Directive block
- ;==============================================================================
- cseg SEGMENT BYTE PUBLIC USE32 EO 'CODE' ;
- cseg ENDS ;
- ; ;
- DATA SEGMENT BYTE PUBLIC USE32 RW 'DATA' ;
- DATA ENDS ;
- ; ;
- ASSUME CS:cseg, DS:DATA ;
- ;==============================================================================
- ;
- ;==============================================================================
- ; Define block
- ;==============================================================================
- pos_x EQU 8[EBP]
- pos_y EQU 12[EBP]
- pattern EQU 16[EBP]
- ;==============================================================================
- ; Cord block
- ;==============================================================================
- ;===============================================;
- cseg SEGMENT BYTE PUBLIC USE32 EO 'CODE' ;
- ;===============================================;
- PUBLIC TransData ;
- DB 'TransData',9 ;
- ;+++++++++++++++++++++++++++++++++++++++++++++++;
- TransData PROC NEAR ;
- ;+++++++++++++++++++++++++++++++++++++++++++++++;
- PUSH EBP ; 使用するレジスタの退避.
- MOV EBP,ESP ;
- PUSH GS ;
- PUSH FS ;
- PUSH ES ;
- PUSH EBX ;
- PUSH ECX ;
- PUSH EDX ;
- PUSH EDI ;
- PUSH ESI ;
- ;+++++++++++++++++++++++++++++++++++++++++++++++;
- MOV ESI,pattern ; ESI:パターンの格納アドレス
- ;
- MOV AX,01CH ;
- MOV ES,AX ; ES:VRAMのセレクタ
- ;
- MOV EAX,pos_x ;
- MOV EBX,pos_y ;
- ;
- MOV EDX,EAX ; position_x
- SHR EDX,1 ; position_x /= 2
- SHL EBX,9 ; position_y *= 512
- ADD EDX,EBX ; EDX:VRAMのベース
- ;
- MOV ECX,16 ; ECX:カウンタ
- loop_1: ;
- MOV EDI,EDX ; EDI:VRAMのオフセット
- MOV EAX,ECX ;
- SHL EAX,9 ;
- ADD EDI,EAX ;
- MOV EAX,[ESI] ;
- MOV ES:[EDI],EAX ;
- ADD ESI,4 ;
- LOOP loop_1 ;
- ;-----------------------------------------------;
- POP ESI ;
- POP EDI ;
- POP EDX ;
- POP ECX ;
- POP EBX ;
- POP ES ;
- POP FS ;
- POP GS ;
- POP EBP ;
- RET ;
- ;+++++++++++++++++++++++++++++++++++++++++++++++;
- TransData ENDP ;
- ;+++++++++++++++++++++++++++++++++++++++++++++++;
- ; ;
- ;===============================================;
- cseg ENDS ;
- ;===============================================;
- end ;
- ;==============================================================================