별표로 알려진 직립 삼각형을 어떻게 그릴 수 있습니까?
Dec 15 2020
저는 컴퓨터 과학 학사 학위 학생이며 gotoxy x,y
아래 그림과 같이 출력에 별을 표시하는 명령 으로이 어셈블리 코드를 변경하는 방법을 알고 싶었습니다 .

nextline macro
mov ah,2
mov dl,13
int 21h
mov dl,10
int 21h
endm
gotoxy macro x,y
mov dl,x
mov dh,y
mov bh,0
mov ah,2
int 10h
endm
.MODEL SMALL
.STACK 64
.DATA
msg1 DB 'Enter a number : $' msg2 DB 'Wrong number!!$'
n db ?
x db 0
y db 0
.CODE
MAIN:
MOV AX, @DATA
MOV DS, AX
l3:
LEA DX, msg1
MOV AH, 9
INT 21H
MOV AH, 1
INT 21H
cmp al,'1'
jl l4
cmp al,'9'
jg l4
jmp l5
l4: nextline
LEA DX, msg2
MOV AH, 9
INT 21H
nextline
jmp l3
l5: sub al,'0'
mov n,al
mov cl,1
l1:
mov ch,1
l2:
mov al,n
sub al,ch
mov x,al
mov y,cl
gotoxy x,y
mov dl,'*'
mov ah,2
int 21h
inc ch
cmp ch,cl
jle l2
inc cl
cmp cl,n
jle l1
MOV AH, 4CH
INT 21H
END MAIN
답변
3 SepRoland Dec 15 2020 at 05:30
화면에서보고 싶은 내용으로 테이블을 만들면 도움이됩니다.
열 | 들여 쓰기 | 별표 |
---|---|---|
1 | 4 | 1 |
2 | 삼 | 삼 |
삼 | 2 | 5 |
4 | 1 | 7 |
5 | 0 | 9 |
그런 다음 모든 규칙 성과이를 아는 숫자를 생성하는 방법을 확인합니다 n=5
.
열 | 들여 쓰기 | 별표 |
---|---|---|
1 | 4 = (n-1) | 1 = (1 + 1)-1 |
2 | 3 = (n-2) | 3 = (2 + 2)-1 |
삼 | 2 = (n-3) | 5 = (3 + 3)-1 |
4 | 1 = (n-4) | 7 = (4 + 4)-1 |
5 | 0 = (n-5) | 9 = (5 + 5)-1 |
열 | n-행 | 행 + 행-1 |
mov cl, 1 ; Row from 1 to 5
T1:
mov al, n ; Indentation AL = (n - row)
sub al, cl
mov x, al ; \
mov y, cl ; |
gotoxy x,y ; / This could easily become "GOTOXY AL, CL",
; no longer needing the x and y variables
mov dl, '*'
mov bl, cl ; Number of asterisks BL = (row + row - 1)
add bl, cl
dec bl
T2:
mov ah, 02h ; DOS.PrintCharacter
int 21h
dec bl
jnz T2
inc cl ; Next row
cmp cl, n
jbe T1