Advertisement
Guest User

Untitled

a guest
Nov 18th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.66 KB | None | 0 0
  1. call Set_Pixel
  2.  
  3. mov cx, [x1]
  4. cmp cx, [x0] ; compare x0 with x1
  5. jne Type1
  6. jmp Type2
  7.  
  8. goloop:
  9. jmp start_loop ; re-start loop
  10. ret ; exit
  11.  
  12. Done:
  13. ret
  14.  
  15. OneX:
  16. mov [sx], word 1
  17. jmp CheckY
  18.  
  19. MinusOneX:
  20. mov [sx], word -1
  21. jmp CheckY
  22.  
  23. OneY:
  24. mov [sy], word 1
  25. jmp BackY
  26.  
  27. MinusOneY:
  28. mov [sy], word -1
  29. jmp BackY
  30.  
  31. ErrMinusDY:
  32. mov dx,[difY]
  33. sub [err],dx
  34. jmp return1
  35.  
  36. ErrMinusDY2:
  37. mov dx,[difY]
  38. sub [err],dx
  39. jmp return3
  40.  
  41. ErrPlusDX:
  42. mov dx,[difX]
  43. add [err],dx
  44. jmp return2
  45.  
  46. LessThanX:
  47. neg ax ; if
  48. mov [difX], ax
  49. jmp AfterLessThanCheckX
  50.  
  51. LessThanY:
  52. neg bx
  53. mov [difY], bx
  54. jmp AfterLessThanCheckY
  55.  
  56. ExitCondition:
  57. cmp cx, ax
  58. je ExitY
  59. jmp AssignSXvalues
  60.  
  61. ExitY:
  62. cmp dx, bx
  63. je Done
  64. jmp AssignSXvalues
  65.  
  66. CheckY:
  67. cmp dx, bx ; compare y0 with y1
  68. jl OneY
  69. jmp MinusOneY ; if they are the same exit loop
  70.  
  71. Type1:
  72. mov ax, [y1]
  73. cmp ax, [y0]
  74. je startthis
  75. mov cx, [err]
  76. add cx, [err]
  77. mov [e2], cx
  78.  
  79. neg word[difY]
  80. cmp [difY],cx ; compare e2 with negative difference of Y
  81. jg ErrMinusDY ; if e2 greater than -dy, err now equals dx - 2dy
  82. return1:
  83. mov dx, [x0]
  84. add dx, [sx] ; add 1 to x0
  85. mov [x0], dx
  86. cmp [difX], cx
  87. jl ErrPlusDX
  88. return2:
  89. mov dx, [y0]
  90. add dx, [sy] ;
  91. mov [y0], dx
  92. jmp goloop
  93.  
  94. Type2:
  95. mov dx, [y1] ; if x0,x1 and y0 and y1 are both equal exit code
  96. cmp dx, [y0]
  97. je Done
  98.  
  99. mov cx, [err] ; assign 2 * err to e2
  100. add cx, [err]
  101. mov [e2], cx
  102.  
  103. neg word[difY] ; make difference of y negative
  104. mov bx,[difY]
  105. cmp [e2], bx ; compare e2 with negative difference of Y
  106. jl comp2 ; if it is less go to second comparison function
  107. sub [err], bx
  108. mov dx, [x0]
  109. add dx, [sx] ; add 1 to x0
  110. mov [x0], dx
  111.  
  112. comp2:
  113. mov ax,[difX]
  114. cmp [e2],ax
  115. jg Done
  116. add [err], ax
  117. mov dx, [y0]
  118. add dx, [sy] ;
  119. mov [y0], dx
  120. jmp goloop
  121.  
  122. startthis:
  123. mov cx, [err] ; assign 2 * err to e2
  124. add cx, [err]
  125. mov [e2], cx
  126. neg word[difY]
  127. cmp [difY],cx ; compare e2 with negative difference of Y
  128. jg ErrMinusDY2 ; if e2 greater than -dy, err now equals dx - 2dy
  129. return3:
  130. mov dx, [x0]
  131. add dx, [sx] ; add 1 to x0
  132. mov [x0], dx
  133. jmp goloop
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement