home *** CD-ROM | disk | FTP | other *** search
/ Phoenix Heaven Sunny 2 / APPARE2.BIN / oh_towns / ugoku / ugokulib / etc / transmit.asm < prev   
Assembly Source File  |  1995-06-20  |  1KB  |  63 lines

  1. ;        ブロック転送 
  2. ;        1991 3/8  Hiroshi TODA
  3. ;
  4.  
  5.     .386p
  6.  
  7. work    struc
  8.  
  9. select1    dd    ?        ; 転送元 セレクタ
  10. addre1    dd    ?        ; 転送元 アドレス
  11. select2    dd    ?        ; 転送先 セレクタ
  12. addre2    dd    ?        ; 転送先 アドレス
  13. count    dd    ?        ; BYTE
  14.  
  15. work    ends
  16.  
  17. cseg    segment    dword public use32 'CODE'
  18.     assume    cs:cseg,ds:cseg
  19.  
  20. ;int Transmit(int para[])
  21. ;para[0] = 転送元セレクタ
  22. ;para[1] = 転送元アドレス
  23. ;para[2] = 転送先セレクタ
  24. ;para[3] = 転送先アドレス
  25. ;para[4] = BYTE
  26. ;出力 = 常に0を返す
  27.  
  28.     public    transmit
  29.     db    'transmit',8
  30. transmit proc    near
  31.     push    ebp
  32.     mov    ebp,esp
  33.     push    esi
  34.     push    edi
  35.     push    ebx
  36.     push    es                ; esを保存
  37.     mov    edx,[ebp+8]            ; edx = para のアドレス
  38.     mov    eax,[edx].select1        ; パラメータ受け渡し
  39.     mov    fs,ax
  40.     mov    esi,[edx].addre1
  41.     mov    eax,[edx].select2
  42.     mov    es,ax
  43.     mov    edi,[edx].addre2
  44.     cld
  45.     mov    ecx,[edx].count
  46.     shr    ecx,2
  47.     rep    movs dword ptr [edi],fs:[esi]    ; dword 転送
  48.     mov    ecx,[edx].count
  49.     and    ecx,03h
  50.     rep    movs byte ptr [edi],fs:[esi]    ; byte 転送
  51.     xor    eax,eax                ; 常に0を返す
  52.     pop    es                ; esを元に戻す
  53.     pop    ebx
  54.     pop    edi
  55.     pop    esi
  56.     mov    esp,ebp
  57.     pop    ebp
  58.     ret
  59. transmit endp
  60.  
  61. cseg    ends
  62.     end
  63.