home *** CD-ROM | disk | FTP | other *** search
/ FreeWare Collection 2 / FreeSoftwareCollection2pd199x-jp.img / demo / trans.asm < prev   
Assembly Source File  |  1990-06-14  |  3KB  |  92 lines

  1. ;******************************************************************************
  2.                                         ; [History] :
  3.                                         ;
  4.     TITLE   TransData                    ;
  5.                                         ;
  6.                                         ;
  7. ;==============================================================================
  8. ;
  9. ;==============================================================================
  10. ; Directive block
  11. ;==============================================================================
  12. cseg        SEGMENT BYTE PUBLIC USE32 EO 'CODE'    ;
  13. cseg        ENDS                                ;
  14. ;                                                ;
  15. DATA        SEGMENT    BYTE PUBLIC USE32 RW 'DATA'    ;
  16. DATA        ENDS                                ;
  17. ;                                                ;
  18.             ASSUME        CS:cseg, DS:DATA        ;
  19. ;==============================================================================
  20. ;
  21. ;==============================================================================
  22. ; Define block
  23. ;==============================================================================
  24. pos_x        EQU         8[EBP]
  25. pos_y        EQU        12[EBP]
  26. pattern        EQU        16[EBP]
  27. ;==============================================================================
  28. ; Cord block
  29. ;==============================================================================
  30. ;===============================================;
  31. cseg        SEGMENT BYTE PUBLIC USE32 EO 'CODE'    ;
  32. ;===============================================;
  33.             PUBLIC    TransData                    ;
  34.             DB        'TransData',9                ;
  35. ;+++++++++++++++++++++++++++++++++++++++++++++++;
  36. TransData    PROC    NEAR                        ;
  37. ;+++++++++++++++++++++++++++++++++++++++++++++++;
  38.             PUSH    EBP                            ; 使用するレジスタの退避.
  39.             MOV        EBP,ESP                        ;
  40.             PUSH    GS                            ;
  41.             PUSH    FS                            ;
  42.             PUSH    ES                            ;
  43.             PUSH    EBX                            ;
  44.             PUSH    ECX                            ;
  45.             PUSH    EDX                            ;
  46.             PUSH    EDI                            ;
  47.             PUSH    ESI                            ;
  48. ;+++++++++++++++++++++++++++++++++++++++++++++++;
  49.             MOV        ESI,pattern                    ; ESI:パターンの格納アドレス
  50.                                                 ;
  51.             MOV        AX,01CH                        ;
  52.             MOV        ES,AX                        ; ES:VRAMのセレクタ
  53.                                                 ;
  54.             MOV        EAX,pos_x                    ;
  55.             MOV        EBX,pos_y                    ;
  56.                                                 ;
  57.             MOV        EDX,EAX                        ; position_x
  58.             SHR        EDX,1                        ; position_x /= 2
  59.             SHL        EBX,9                        ; position_y *= 512
  60.             ADD        EDX,EBX                        ; EDX:VRAMのベース
  61.                                                 ;
  62.             MOV        ECX,16                        ; ECX:カウンタ
  63. loop_1:                                            ;
  64.             MOV        EDI,EDX                        ; EDI:VRAMのオフセット
  65.             MOV        EAX,ECX                        ;
  66.             SHL        EAX,9                        ;
  67.             ADD        EDI,EAX                        ;
  68.             MOV        EAX,[ESI]                    ;
  69.             MOV        ES:[EDI],EAX                ;
  70.             ADD        ESI,4                        ;
  71.             LOOP    loop_1                        ;
  72. ;-----------------------------------------------;
  73.             POP        ESI                            ;
  74.             POP        EDI                            ;
  75.             POP        EDX                            ;
  76.             POP        ECX                            ;
  77.             POP        EBX                            ;
  78.             POP        ES                            ;
  79.             POP        FS                            ;
  80.             POP        GS                            ;
  81.             POP        EBP                            ;
  82.             RET                                    ;
  83. ;+++++++++++++++++++++++++++++++++++++++++++++++;
  84. TransData    ENDP                                ;
  85. ;+++++++++++++++++++++++++++++++++++++++++++++++;
  86. ;                                                ;
  87. ;===============================================;
  88. cseg        ENDS                                ;
  89. ;===============================================;
  90. end                                                ;
  91. ;==============================================================================
  92.