Как изменить направление движения второй группы треугольников?MASM - PullRequest
0 голосов
/ 21 декабря 2018

Мне нужно создать программу, которая печатает четыре треугольника.первые два смотрят направо, а остальные - налево.Я не могу понять, как заставить их смотреть влево.

Я попытался повторно использовать код для первых двух треугольников и изменить его в соответствии с потребностями задания, однако он не печатается правильно

org 100h

.model small

.stack 256

.data 

input db "Enter the size for the triangles between 3 and 9, or 0 to quit: $"
size dw ?

.code

main proc

    mov AX, @data
    mov DS, AX

    prompt:
        mov AH, 09h
        lea DX, input
        int 21h

        mov AH, 01h
        int 21h  

        cmp AL, '0'
        ;je exit

        sub AL, '0'
        mov AH, 0
        mov size, AX

        mov CX, AX
        mov BX, 1

    call CRLF  
    ;---------------------------------------------------
    ; First Triangle
    lines1:
        push CX
        mov CX, BX

        stars1:
            mov AH, 02h
            mov DL, '*'
            int 21h

        loop stars1

        call CRLF
        inc BX
        pop CX

    loop lines1
      space3:
            mov AH, 02h
            mov DL, '-'
            int 21h  
    call CRLF 

    mov CX, size
    ;---------------------------------------------------
    ; Second Triangle
    lines2:
        push CX
         space2:
            mov AH, 02h
            mov DL, ' '
            int 21h  
        stars2:
            mov AH, 02h
            mov DL, '*'
            int 21h

        loop stars2

        call CRLF
        pop CX

    loop lines2

    call CRLF

    mov CX, size  
    mov BX, 1   

    ;--------------------------------------------------       
      ;triangle 3
      lines3:
        push CX
        ;mov CX, BX



        stars3: 
            mov DL, '*' 
            mov AH, 02h 
            int 21h

        loop stars3



        call CRLF
        inc BX
        pop CX

    loop lines3

    call CRLF 

    mov CX, size
    mov BX, 1      
    ;---------------------------------------------------  

     ; space 
    lines4:
        push CX
        mov CX, BX

        space1:
            mov AH, 02h
            mov DL, '-'
            int 21h

        loop space1

        call CRLF
        inc BX
        pop CX                 
     ;---------------------------------------------------
    ; foruth Triangle
    lines5:
        push CX
         space:
            mov AH, 02h
            mov DL, ' '
            int 21h    

        stars4:
            mov AH, 02h
            mov DL, '*'
            int 21h

        loop stars4

        call CRLF
        pop CX

    loop lines5

    call CRLF

    mov CX, size  
    mov BX, 1   

    ;--------------------------------------------------     
main endp

CRLF proc

    mov AH, 02h
    mov DL, 13
    int 21h
    mov DL, 10
    int 21h

    ret

CRLF endp

выход должен быть следующим.У меня есть первые два треугольника, которые можно напечатать, но не второй набор.

enter image description here

...