int.asm
上传用户:xiaoan1112
上传日期:2013-04-11
资源大小:19621k
文件大小:1k
源码类别:

操作系统开发

开发平台:

Visual C++

  1. ;
  2. ; Perform MSDOS absolute disk read/write
  3. ;
  4. ;   09-Dec-1986 bw  Added DOS 5 switch
  5. ;   30-Oct-1987 bw  Changed 'DOS5' to 'OS2'
  6. ifdef OS2
  7.     if2
  8.     %out int25() and int26() are not implemented under OS/2 Protect Mode.
  9.     .ERR
  10.     endif
  11. else
  12. .xlist
  13. include ..hcmacros.inc
  14. .list
  15. sBegin data
  16. assumes ds,data
  17. externW _doserrno
  18. sEnd
  19. sBegin code
  20. assumes cs,code
  21. cProc int25,<PUBLIC>,<SI,DI>
  22. parmB drive
  23. parmD dst
  24. parmW count
  25. parmW sector
  26. cBegin
  27. push ds
  28. mov al,drive
  29. lds bx,dst
  30. mov cx,count
  31. mov dx,sector
  32. push bp
  33. int 25h
  34. pop bx ; INT 25 leaves flags on stack
  35. pop bp
  36. pop ds
  37. jc err25
  38. xor ax,ax
  39. mov _doserrno,ax
  40. jmp short end25
  41. err25:
  42. mov _doserrno,ax
  43. mov ax,-1
  44. end25:
  45. cEnd
  46. cProc int26,<PUBLIC>,<si,di>
  47. parmB drive
  48. parmD src
  49. parmW count
  50. parmW sector
  51. cBegin
  52. push ds
  53. mov al,drive
  54. lds bx,src
  55. mov cx,count
  56. mov dx,sector
  57. push bp
  58. int 26h ; INT 25 leaves flags on stack
  59. pop bx
  60. pop bp
  61. pop ds
  62. jc err26
  63. xor ax,ax
  64. mov _doserrno,ax
  65. jmp short end26
  66. err26:
  67. mov _doserrno,ax
  68. mov ax,-1
  69. end26:
  70. cEnd
  71. sEnd
  72. endif
  73. end