COMMENT [ Programa - Letras Verticais Recebe um texto e o escreve em uma coluna vertical. Estrutura: .EXE Montagem: MASM/Z B:LETRAS,B:LETRAS,B:LETRAS,B:LETRAS; LINK B:LETRAS,B:LETRAS; DEL B:LETRAS.OBJ LETRAS - executa o LETRAS.EXE [ PAGE 62,132 TITLE *** Letras Verticais *** CR EQU 13 ;ASCII Carriage Return LF EQU 10 ;ASCII Line Feed BS EQU 8 ;ASCII Backspace BEL EQU 7 ;ASCII Bel ESQ EQU 27 ;ASCII Escape DOS MACRO FUNCAO IFBERR %OUT Você não passou o número da função ELSE MOV AH,função INT 21H ENDIF ENDM DOSSEG .MODEL SMALL .STACK .DATA PAGINA DB 0 ATRIBUTO DB 7 MENSA_1 DB ESQ,'=',1,22'L E T R A S V E R T I C A I S' DB 27,'=',3,4,'Digite o texto:',00 CRLFLF DB CR,LF,LF,0 BUFFER DB CR,LF,?'$' MOLDE1 DB 27,'=',?,?,201,27,'R',?,205,187,0 MOLDE2 DB 27,'=',?,?,200,27,'R',?,205,188,0 MOLDE3 DB 27,'=',?,?,186,27',=',?,?,186,0 AREA DB 32,?,32 DUP (00) INÍCIO: .CODE MOV Ax,@DATA MOV DS,AX MOV ES,AX LACO_PROG: CALL CLRSCR ;apaga a tela MOV AX,0201H ;define as coordenadas MOV DX,044FH ;para desenhar uma CALL MOLDURA ;moldura na tela LEA SI,MENSA_1 ;endereça a mensagem CALL WRITE ;título do programa LEA DX,AREA ;e a imprime DOS 10 ;aguarda a digitação LEA SI,CRLFLF ;avança duas linhas em CALL WRITE ;branco MOV CL,AREA[1] ;move contador de MOV CH,0 ;caracteres para CX JCXZ FIM_PROG ;se nada foi digitado, LEA SI,AREA + 2 ;encerra o programa LACO_REPET: LODSB ;apanha um caractere MOV BUFFER+2,AL;move-o p/ a área de LEA DX,BUFFER ;impressão.Utiliza a DOS 9 ;função 9 para escrevê-lo LOOP LACO_REPET;na tela, após um CR LF MOV AH,0 ;aguarda a digitação de INT 16H ;uma tecla JMP LACO_PROG ;repete tudo novamente FIM_PROG: DOS 4Ch ;saída do programa,com ENDP ;retorno ao DOS INCLUDE B:VIDEO.ASM;tratamento de vídeo END INICIO