Task
Produce an ASCII representation of a Sierpinski triangle of order   N.



Example
The Sierpinski triangle of order   4   should look like this:

                       *
                      * *
                     *   *
                    * * * *
                   *       *
                  * *     * *
                 *   *   *   *
                * * * * * * * *
               *               *
              * *             * *
             *   *           *   *
            * * * *         * * * *
           *       *       *       *
          * *     * *     * *     * *
         *   *   *   *   *   *   *   *
        * * * * * * * * * * * * * * * *



Related tasks
 Sierpinski triangle/Graphical for graphics images of this pattern. 
 Sierpinski carpet


putch:	equ	2		; MS-DOS syscall to print character
puts:	equ	9 		; MS-DOS syscall to print string
argmt:	equ	5Dh		; MS-DOS still has FCB in same place as CP/M
	cpu	8086
	org	100h
section	.text
	mov	cx,4		; Default order is 4
	mov	al,[argmt]
	sub	al,'3'		; Argument is there and makes sense? (3 - 7)
	cmp	al,7-3
	ja	start		; If not, use default
	add	al,3		; If so, use it
	mov	cl,al
start:	mov	bl,1		; Let BL be the size (2 ** order)
	shl	bl,cl
	mov	bh,bl		; Let BH be the current line
line:	mov	cl,bh		; Let CL be the column
	mov	dl,' '		; Indent line with spaces
	mov	ah,putch
indent:	int	21h
	loop	indent
column:	mov	al,cl		; line + column <= size?
	add	al,bh
	cmp	al,bl
	ja	.done		; then column is done
	mov	al,bh		; (line - 1) & column == 0?
	dec	al
	test	al,cl
	jnz	.print		; space if not, star if so
	mov	dl,'*'
.print:	int	21h
	mov	dl,' '
	int	21h
	inc	cx		; next column
	jmp	column
.done:	mov	dx,nl		; done, print newline
	mov	ah,puts
	int	21h
	dec	bh		; next line
	jnz	line
	ret
nl:	db	13,10,'$'