• Domingo 22 de Diciembre de 2024, 14:22

Autor Tema:  Re: como imprimo con Ensamblador?  (Leído 3740 veces)

Logan

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: como imprimo con Ensamblador?
« en: Miércoles 22 de Octubre de 2003, 19:48 »
0
Hola, estoy tratando de imprimir algo en ensamblador, lo que sea, palabras o numeros, he estado checando la int 17h, tambien la instrucciones IN y OUT, pero creo que la 17 maneja el puerto paralelo, mi impresora es USB, no he encontrado la forma de transferis datos a la impresora, por lo consiguiente no he impreso nada verdad, bueno espero que alguien me pueda dar algun tip al respecto porque la verdad no le encuentro.

Este es un programa que probe para imprimir 10 veces una cadena, lo probe en una impresora con puerto paralelo pero solo jala la hoja y no imprime nada.



title cprint
comment*
        Programa que lee caracteres provenientes del teclado utilizando
        INT 21h  y los escribe en la pantalla de exhibici¢n y los imprime
        en impresora*
stack   segment para stack 'stack'
        db      64 dup ('stack')
stack   ends

data    segment para public 'data'
msg     db      'introduce caracteres','$'
buff1   db      80
buff2   db      ?       ;longitud del buffer de entrada
char    db      80 dup (' '),'$'
blank   db      ' '
nprint  dw      26      ;linea limite de la salida de entrada
data    ends

cseg    segment para public 'code'
cprint  proc far
        assume cs:cseg,ds:data;ss:stack

        push    ds
        sub     ax,ax
        push    ax

        mov     ax,seg data
        mov     ds,ax

        mov     ah,6
        mov     al,0
        mov     cx,0
        mov     dh,23
        mov     dl,79
        mov     bh,7
        int     10h

        mov     ah,2
        mov     dl,0ah
        int     21h

        mov     ah,2
        mov     dl,0dh
        int     21h

        lea     dx,msg
        mov     ah,9
        int     21h

        mov     ah,2
        mov     dl,0ah
        int     21h

        mov     ah,2
        mov     dl,0dh
        int     21h

        lea     dx,buff1
        mov     ah,10
        int     21h

        mov     cx,10
        mov     bh,0
        mov     bl,buff2
        mov     si,bx
        lea     bx,char
        mov     ah,blank

        mov     byte ptr [bx+si],ah

d01:
                mov     ah,9
                lea     dx,char
                int     21h
                loop    d01


        mov     dx,0
        mov     ah,1
        int     17h

        mov     si,1
d03:
                lea     bx,char
                mov     di,0
                mov     ah,0
                mov     al,buff2
                mov     cx,ax
d02:
                mov     ah,5
                mov     dl,byte ptr [bx+di]
                inc     di
                int     21h
                loop    d02

        mov     ah,5
        mov     dl,0ah
        int     21h
        mov     ah,5
        mov     dl,0dh
        int     21h
        inc     si
        cmp     si,nprint
        jb      d03

        ret
cprint  endp
cseg    ends
end     cprint:ouch:
Estamos aqui porque jamás terminaremos de aprender....

Super_G

  • Miembro MUY activo
  • ***
  • Mensajes: 375
    • Ver Perfil
como imprimo con Ensamblador?
« Respuesta #1 en: Miércoles 22 de Octubre de 2003, 21:45 »
0
tu programa funciona con una imprsora con puerto paralelo, no compilaba bien y le cambie solo el formato:
;;;;;;********************************
.model small
.stack 100

.data
msg db 'introduce caracteres','$'
buff1 db 80
buff2 db ? ;longitud del buffer de entrada
char db 80 dup (' '),'$'
blank db ' '
nprint dw 26 ;linea limite de la salida de entrada


.code

inicio:

mov ax,_data
mov ds,ax

mov ah,6
mov al,0
mov cx,0
mov dh,23
mov dl,79
mov bh,7
int 10h

mov ah,2
mov dl,0ah
int 21h

mov ah,2
mov dl,0dh
int 21h

lea dx,msg
mov ah,9
int 21h

mov ah,2
mov dl,0ah
int 21h

mov ah,2
mov dl,0dh
int 21h

lea dx,buff1
mov ah,10
int 21h

mov cx,10
mov bh,0
mov bl,buff2
mov si,bx
lea bx,char
mov ah,blank

mov byte ptr [bx+si],ah

d01:
mov ah,9
lea dx,char
int 21h
loop d01


mov dx,0
mov ah,1
int 17h

mov si,1
d03:
lea bx,char
mov di,0
mov ah,0
mov al,buff2
mov cx,ax
d02:
mov ah,5
mov dl,byte ptr [bx+di]
inc di
int 21h
loop d02

mov ah,5
mov dl,0ah
int 21h
mov ah,5
mov dl,0dh
int 21h
inc si
cmp si,nprint
jb d03

mov ah,4ch
int 21h


end inicio
;;********************************
;;compilado con TASM

drakkem

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: como imprimo con Ensamblador?
« Respuesta #2 en: Martes 13 de Abril de 2004, 23:40 »
0
Oye agradeceria que pusieras los comentarios del programa, para asi saber en que parte mandas a imprimir y en que parte haces cada cosa
si no te es mucha molestia

Super_G

  • Miembro MUY activo
  • ***
  • Mensajes: 375
    • Ver Perfil
Re: como imprimo con Ensamblador?
« Respuesta #3 en: Lunes 26 de Abril de 2004, 15:51 »
0
si mal no recuerdo es en esta parte:

************
d01:
mov ah,9
lea dx,char
int 21h
loop d01


***********