home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FreeWare Collection 2
/
FreeSoftwareCollection2pd199x-jp.img
/
demo
/
trans.asm
< prev
Wrap
Assembly Source File
|
1990-06-14
|
3KB
|
92 lines
;******************************************************************************
; [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 ;
;==============================================================================