Advertisement
Ae_Mc

NASM Triangle

Dec 21st, 2019
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. org 256
  2.  
  3. mov ax, 0x0013
  4. int 0x10
  5. push 15     ; color
  6. push 160    ; top x
  7. push 0      ; top y
  8. push 199    ; side length
  9. call triangle
  10. while:
  11.     mov ah, 0
  12.     int 0x16
  13.     cmp al, 'q'
  14.     jnz while
  15. mov ax, 0x0003
  16. int 0x10
  17. ret
  18.  
  19. triangle:
  20.     push bp
  21.     mov bp, sp
  22.     push ax
  23.     push bx
  24.     push cx
  25.     push dx
  26.     push si
  27.     push ds
  28.  
  29.     ; Переход в видеопамять
  30.     mov bx, 0xA000
  31.     mov ds, bx
  32.  
  33.     mov ax, 320
  34.     mov bx, [bp + 6]
  35.     mul bx
  36.     mov si, ax
  37.     add si, [bp + 8]  ; add x, now in bx - top tringle point byte
  38.     mov bl, [bp + 10] ; color
  39.     mov ax, 320
  40.     dec ax
  41.     mov dx, 2
  42.     mov cx, [bp + 4]
  43.     shr cx, 1
  44.     triang_while1:
  45.         mov [si], bl
  46.         add si, ax
  47.         mov [si], bl
  48.         add si, dx
  49.         mov [si], bl
  50.         dec ax
  51.         add si, ax
  52.         mov [si], bl
  53.         add si, dx
  54.         dec ax
  55.         add dx, 2
  56.         loop triang_while1
  57.     mov [si], bl
  58.     mov cx, [bp + 4]
  59.     triang_while2:
  60.         mov [si], bl
  61.         dec si
  62.         loop triang_while2
  63.  
  64.     ;push 320
  65.     ;push WORD[bp + 6]
  66.     ;call multiplicator
  67.     ;pop ax
  68.     mov ax, [bp + 2]
  69.     mov [bp + 10], ax
  70.  
  71.     pop ds
  72.     pop si
  73.     pop dx
  74.     pop cx
  75.     pop bx
  76.     pop ax
  77.     pop bp
  78.     add sp, 8
  79.     ret
  80.  
  81. multiplicator:
  82.     push bp
  83.     mov bp, sp
  84.     push ax
  85.     push bx
  86.     mov ax, [bp + 6]
  87.     mov bx, [bp + 4]
  88.     mul bx
  89.     mov [bp + 6], ax
  90.     mov bx, [bp + 2]
  91.     mov [bp + 4], bx
  92.     pop bx
  93.     pop ax
  94.     pop bp
  95.     add sp, 2
  96.     ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement