write.asm 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. .286
  2. .model small
  3. .code
  4. org 100h
  5. ;--------------------
  6. startx equ 10
  7. starty equ 10
  8. sizex equ 10
  9. sizey equ 10
  10. ;--------------------
  11. start:
  12. mov ax, 13h
  13. int 10h
  14. push startx
  15. push starty
  16. push offset face
  17. push sizex
  18. push sizey
  19. call WriteSprite
  20. mov ah, 8h
  21. int 21h
  22. mov ax, 3h
  23. int 10h
  24. int 20h
  25. CoolWait proc near
  26. push bp
  27. mov bp, sp
  28. push cx
  29. mov cx, word ptr [bp+4]
  30. ggg: push cx
  31. mov cx, 0
  32. loop $
  33. pop cx
  34. loop ggg
  35. pop cx
  36. pop bp
  37. ret 2
  38. endp
  39. WriteSprite proc near ;writesprite(x,y,char *sprt,razmx,razmy)
  40. push bp
  41. mov bp,sp
  42. razmy equ word ptr [bp+4]
  43. razmx equ word ptr [bp+6]
  44. sprt equ word ptr [bp+8]
  45. posy equ word ptr [bp+10]
  46. posx equ word ptr [bp+12]
  47. pusha
  48. push es
  49. mov ax, 0A000h
  50. mov es, ax
  51. mov ax, posy
  52. mov bx, ax
  53. shl ax, 8
  54. shl bx, 6
  55. add ax, bx
  56. add ax, posx
  57. mov di, ax
  58. mov ax, sprt
  59. mov si, ax
  60. mov cx, razmy
  61. lup:
  62. push cx
  63. mov cx, razmx
  64. repe movsb
  65. add di, 320
  66. sub di,razmx
  67. pop cx
  68. loop lup
  69. pop es
  70. popa
  71. pop bp
  72. ret 10
  73. endp
  74. ;face db 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0
  75. ; db 0,1,1,1,1,1,1,1,1,0, 0,2,2,0,0,0,0,2,2,0, 0,0,0,3,3,3,3,3,0,0, 0,4,4,0,0,0,4,4,0,0
  76. ; db 0,1,1,1,1,1,1,1,1,0, 0,2,2,0,0,0,0,2,2,0, 0,0,3,3,0,0,0,3,3,0, 0,4,4,0,0,4,4,0,0,0
  77. ; db 0,1,1,0,0,0,0,0,0,0, 0,2,2,0,0,0,0,2,2,0, 0,3,3,0,0,0,0,0,0,0, 0,4,4,0,4,4,0,0,0,0
  78. ; db 0,1,1,1,1,1,0,0,0,0, 0,2,2,0,0,0,0,2,2,0, 0,3,3,0,0,0,0,0,0,0, 0,4,4,4,4,0,0,0,0,0
  79. ; db 0,1,1,1,1,1,0,0,0,0, 0,2,2,0,0,0,0,2,2,0, 0,3,3,0,0,0,0,0,0,0, 0,4,4,4,4,0,0,0,0,0
  80. ; db 0,1,1,0,0,0,0,0,0,0, 0,2,2,0,0,0,0,2,2,0, 0,3,3,0,0,0,0,3,3,0, 0,4,4,0,4,4,0,0,0,0
  81. ; db 0,1,1,0,0,0,0,0,0,0, 0,0,2,2,0,0,2,2,0,0, 0,0,3,3,0,0,3,3,0,0, 0,4,4,0,0,4,4,0,0,0
  82. ; db 0,1,1,0,0,0,0,0,0,0, 0,0,0,2,2,2,2,0,0,0, 0,0,0,3,3,3,3,0,0,0, 0,4,4,0,0,0,4,4,0,0
  83. ; db 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0
  84. face db 0,0,0,0,0,0,0,0,0,0
  85. db 0,2,2,2,2,2,2,2,2,0
  86. db 0,2,0,0,3,3,0,0,2,0
  87. db 0,2,0,0,3,3,0,0,2,0
  88. db 0,2,6,6,3,6,6,6,2,0
  89. db 0,2,6,6,6,3,6,6,2,0
  90. db 0,2,0,0,3,3,0,0,2,0
  91. db 0,2,0,0,3,3,0,0,2,0
  92. db 0,2,2,2,2,2,2,2,2,0
  93. db 0,0,0,0,0,0,0,0,0,0
  94. end start