Advertisement
__DEN__

graph_laba_KPO

Apr 25th, 2022
2,016
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.         include 'C:\KPO\FASM\INCLUDE\MACRO\PROC16.inc'
  2.         org 100h
  3. Width = 320
  4. Height = 200
  5.  
  6. Start:
  7.         mov     ah, $0F
  8.         int     10h
  9.         mov     [bOldMode], al
  10.         mov     [bOldPage], bh
  11.  
  12.         mov     ax, $0013
  13.         int     10h
  14.  
  15.         push    $A000
  16.         pop     es
  17.  
  18.         mov     cx, 320 * 200
  19.         xor     di, di
  20.  
  21.  
  22.         mov     al, $0f
  23.         mov     cx, 320 * 200
  24.         rep     stosb
  25.  
  26.         stdcall DrawLine, 50, 100, 200, 20, $05
  27.        ; stdcall DrawLine, 0, 3, 4, 0
  28.  
  29.  
  30.  
  31.  
  32.         mov     ax, $0C08
  33.         int     21h
  34.         test    al, al
  35.         jnz     @F
  36.         mov     ah, $08
  37.         int     21h
  38. @@:
  39.  
  40.         movzx   ax, [bOldMode]
  41.         int     10h
  42.         mov     ah, $05
  43.         mov     al, [bOldPage]
  44.         int     10h
  45.  
  46.         ret
  47.  
  48. proc    DrawLine uses ax bx cx dx di,\
  49.         x0, y0, xk, yk: WORD, color: Byte
  50.         sub     sp, 12
  51.         ;bp-2 - x
  52.         ;bp-4 - y
  53.         ;bp-6 - dx
  54.         ;bp-8 - dy
  55.         ;bp-10 - t
  56.         ;bp-12 - k
  57.  
  58.         ;Initialize
  59.         mov     dx, [x0] ;current x
  60.         mov     [bp - 2], dx
  61.         mov     ax, [y0] ;current y
  62.         mov     [bp - 4], ax
  63.  
  64.         mov     cx, [xk]
  65.         sub     cx, dx
  66.         mov     [bp - 6], cx
  67.  
  68.         mov     cx, ax
  69.         sub     cx, [yk]
  70.         mov     [bp - 8], cx
  71.  
  72.         mov     cx, 0
  73.         sub     cx, [bp - 6]
  74.         mov     [bp - 10], cx
  75.  
  76.         mov     cx, [bp - 8]
  77.         add     cx, cx
  78.         mov     [bp - 12], cx
  79.         ;end of Inintialize
  80.  
  81.         mov     cx, Width
  82.         mul     cx
  83.         add     ax, [bp-2]
  84.         mov     di, ax
  85.  
  86.         mov     ch, [color]
  87.         mov     byte [es:di], ch
  88.  
  89. .Loop:
  90.         mov     cx, [bp - 2]
  91.         cmp     cx, [xk]
  92.         jae     .EndOfLoop
  93.  
  94.         mov     cx, [bp - 12]  ;cx contain k
  95.         add     [bp - 10], cx
  96.  
  97.         cmp     [bp - 10], word 0
  98.         jl      .Below
  99.  
  100.         ;set pixels
  101.         inc     word [bp - 2]
  102.         dec     word[bp - 4]
  103.  
  104.         sub     di, Width
  105.         inc     di
  106.  
  107.         ;correction
  108.         mov     cx, [bp - 6]
  109.         add     cx, cx
  110.         sub     [bp - 10], cx
  111.  
  112.         jmp     @F
  113. .Below:
  114.         inc     word [bp - 2]
  115.  
  116.         inc     di
  117.  
  118. @@:
  119.         mov     ch, [color]
  120.         mov     byte [es:di], ch
  121.         jmp     .Loop
  122. .EndOfLoop:
  123.  
  124.         add     sp, 8
  125.         ret
  126. endp
  127.  
  128.  
  129.  
  130.  
  131. bOldMode        db      ?
  132. bOldPage        db      ?
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement