Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;программа рисует 3-х лепестковую розу. divK - устанавливает ее размер
  2.  
  3. include pixels.inc ;содержит макросы вывода точки, осей и символа
  4.  
  5. .model small
  6. .stack 100h
  7. .data
  8. gx dd 20.0 ;масштабные коэффициенты
  9. gy dd 20.0
  10. alpha dd 0.0 ;изменяющаяся переменная
  11. delta dd 0.001 ;величина изменения
  12. xdiv2 dd 320.0 ;середина по X и Y
  13. ydiv2 dd 240.0
  14. tmp dd 0 ;temp
  15. x3 dd 3.0
  16. x10 dd 10.0
  17. divK dd 20.0
  18. xr dw 0 ;координаты выводимой точки
  19. yr dw 0
  20. AboutMe db 177,176,176,177,178,178,177,176,176,177,178,178,177,176,176,177,178,178,177,176,176,177,178,'[KaspeR Demo Project - LabWork #5]',178,177,176,176,177,178,178,177,176,176,177,178,178,177,176,176,177,178,178,177,176,176,177,'$' ;обо мне!!!
  21. Sine db '3l rose$'
  22.  
  23. .code
  24. .486
  25. start:
  26. mov ax,@DATA
  27. mov ds,ax
  28. xor ax,ax
  29. mov cx,188bh ;количество итераций цикла - 2*Pi/0.001
  30. ;------------------------------------------------------------------
  31. mov ah,0h ;инициализация графического режима 640х480
  32. mov al,12h
  33. int 10h
  34. ;------------------------------------------------------------------
  35. pusha ;вывод строки AboutMe - скобки др. цветом, потому длинный код
  36. mov cx,80 ;кол-во букв в строке AboutMe
  37. mov bx,0
  38. l2:
  39. mov al,AboutMe[bx]
  40. cmp bx,23 ;с 23 до 56 символа - скобки
  41. jb neI ;NeI - вывод символа красным цветом
  42. cmp bx,56
  43. jg neI
  44. OutCharG bl,0,0eh,al
  45. jmp next
  46. neI:
  47. OutCharG bl,0,04h,al
  48. next:
  49. inc bx
  50. loop l2
  51. popa
  52. ;-----------------------------------------------------------------
  53. pusha ;вывод строки Sine (аналогично AboutMe)
  54. mov cx,7
  55. mov bx,0
  56. l3:
  57. mov al,Sine[bx]
  58. inc bx
  59. OutCharG bl,02h,03h,al
  60. loop l3
  61. popa
  62. ;-----------------------------------------------------------------
  63. AxleX ;рисуем оси
  64. AxleY
  65. finit ;инициализация сопроцессора
  66.  
  67. l1:
  68. fld alpha ;ф-ла r=10*sin(3*alpha)
  69. fmul x3
  70. fsin
  71. fmul x10
  72. fld alpha
  73. fcos
  74. fmul divK
  75. fmul
  76. frndint
  77. fld xdiv2
  78. fadd
  79. fistp word ptr xr ;заносим X в переменную для вывода на экран
  80.  
  81. fld alpha
  82. fmul x3
  83. fsin
  84. fmul x10
  85. fld alpha
  86. fsin
  87. fmul divK
  88. fmul
  89. frndint
  90. fstp tmp
  91. fld ydiv2
  92. fsub tmp
  93. fistp word ptr yr ;заносим Y в переменную для вывода на экран
  94.  
  95. PutPixel xr,yr,0ah ;выводим точку зеленым цветом
  96.  
  97. fld delta ;вычисляем новое значение alpha
  98. fld alpha
  99. fadd
  100. fstp alpha
  101. loop l1 ;цикл по cx
  102. ;--------------------------------------------------------------------
  103. mov ah,1h ;ожидание нажатия клавиши
  104. int 21h
  105. ;--------------------------------------------------------------------
  106. mov ah,0h ;перевод обратно в TextMode
  107. mov al,03h
  108. int 10h
  109. ;--------------------------------------------------------------------
  110. exit:
  111. mov ax,4C00h ;стандартный выход
  112. int 21h
  113. END start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement