SoloCodigo
Programación General => ASM (Ensamblador) => Mensaje iniciado por: Logan en Miércoles 22 de Octubre de 2003, 19:48
-
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:
-
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
-
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
-
si mal no recuerdo es en esta parte:
************
d01:
mov ah,9
lea dx,char
int 21h
loop d01
***********