2011-12-04 19 views
6

Desidero stampare una tabella di più numeri da 0 a 9 in assemblaggio. così ho programmare sottostante Codice:nuova riga nell'assemblaggio 8086

data_seg segment 
    I DB 0D 
    J DB 0D 
    R DB ? 
    DIVER DB 10D 
    data_seg ends 

stack_seg segment 
    stack_seg ends 

code_seg segment 
    MAIN proc far 
     assume cs:code_seg, ds:data_seg, ss:stack_seg 
     MOV AX,data_seg 
     MOV DS,AX 

     FOR1: 
      MOV J,0D 
      FOR2: 
      MOV AX,0H 
      MOV AL,I 
      MUL J 
      DIV DIVER 
      MOV R,AH 
      ADD AL,48D 
      MOV AH,0EH 
      INT 10H 
      MOV AL,R 
      ADD AX,48D 
      MOV AH,0EH 
      INT 10H 

      MOV AX,32D 
      MOV AH,0EH 
      INT 10H 
      INC J 
      MOV AX,0 
      MOV AL,J 
      SUB AX,10D 
      JNZ FOR2 
     INC I 
     MOV AX,10D 
     MOV AH,0EH 
     INT 10H 
     MOV AX,0 
     MOV AL,I 
     SUB AX,10D 
     JNZ FOR1 

     MOV AX,4CH 
     INT 21H 
     MAIN endp 
    code_seg ends 
end MAIN

Funziona correttamente, ma con un piccolo problema, quando voglio stampare nuova linea, e qualcosa di stampato in riga corrente, andrà a nuova linea, ma con un po 'di spazio prima nuova linea. enter image description here

risposta

9

È necessario stampare la nuova riga e ritorno a capo.

-1

provare a mettere corsie per il ritorno linea

mov ax, 4c00h ; return to ms-dos 
int 21h 
3

come Anthony ha detto, in base alle assemblatore, è necessario fare un ritorno a capo e avanzamento riga per andare alla riga successiva e posizionare il cursore al beggining del linea. Per MASM puoi usare Call crlf o stampare valori 0dh e 0ah rispettivamente.

4

Se la vostra utilizzando emu80x86 questo codice dovrebbe farlo

mov dx,13 
    mov ah,2 
    int 21h 
    mov dx,10 
    mov ah,2 
    int 21h 
2

Ciò stampare una nuova linea:

1) Aggiungere nel segmento dati:

linefeed db 13, 10, "$" 

2) E poi utilizzare questo ovunque è necessario una nuova riga:

; new line 
mov ah, 09 
mov dx, offset linefeed 
int 21h 
+0

questo ha funzionato per me .. ma cosa fa esattamente il linefeed db 13, 10, "$"? –

+1

Dai un'occhiata a questa domanda SO http://stackoverflow.com/q/17266837/2348704 – oat