2011-12-04 19 views
6

Quiero imprimir una tabla con varios números del 0 al 9 en el ensamblaje. así que programa siguiente código:nueva línea en ensamblaje 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

Funciona correctamente, pero con un pequeño problema, cuando quiero imprimir nueva línea, y se imprime algo en línea actual, se irá a la nueva línea, pero con un poco de espacio antes nueva línea. enter image description here

Respuesta

9

Debe imprimir la nueva línea y retorno de carro.

-1

tratar de poner los carriles para el retorno de línea

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

como Anthony dijo, la base de su ensamblador, que tiene que hacer un retorno de carro y salto de línea para ir a la siguiente línea y coloque el cursor en el beggining de la línea. Para MASM puede usar Call crlf o imprimir valores 0dh y 0ah respectivamente.

4

si el uso de emu80x86 este código debe hacerlo

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

Esto imprimiría una nueva línea:

1) Añadir en el segmento de datos:

linefeed db 13, 10, "$" 

2) Y luego Úselo en cualquier lugar donde necesite una nueva línea:

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

esto funcionó para mí ... pero ¿qué hace exactamente linefeed db 13, 10, "$"? –

+1

Echa un vistazo a esta pregunta AS http://stackoverflow.com/q/17266837/2348704 – oat