Vistas de página en total

lunes, 10 de febrero de 2014

EMULADOR 8051 (11/12) (TRANSMIT)

    Si hicimos la recogida del programa que traceabamos en el Emulador, será porque pudimos subir el programa al emulador. Pero para esto necesitamos otra rutina.
    Esta es la rutina de transmisión. En este caso al revés que en el anterior, se recogerá los datos de un fichero .bin y se enviarán a la memoria del procesador.
    Al igual que en el caso  anterior el nombre del fichero lo dará el programa principal y esta rutina lo abrirá. Si en este proceso resulta un error, abrirá una ventana emergente indicando el error.
     Si todo va bien leerá el fichero completo y enviará los datos a la memoria del sistema.


TRANSMIT.ASM

; Copyright (C) 2013  José Ángel Moneo Fernández

;    This program is free software: you can redistribute it and/or modify
;    it under the terms of the GNU General Public License as published by
;    the Free Software Foundation, either version 3 of the License, or
;   (at your option) any later version.

;    This program is distributed in the hope that it will be useful,
;    but WITHOUT ANY WARRANTY; without even the implied warranty of
;    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;    GNU General Public License for more details.

;    You should have received a copy of the GNU General Public License
;    along with this program.  If not, see <http://www.gnu.org/licenses/

include main.mac
include stdio.mac
include 48iocent.mac
include mouse.mac
include io.mac
include window.mac
INCLUDE 8051.MAC
.model compact,pascal

         public TRANSM
         
.data
        extrn file:byte
        extrn m_Ventana:byte
hand1 dw 0
nada db 0
err_ab db "No se puede Abrir Fichero",0
dato dw 0,0
ends

.code
        extrn guarda:near
transm proc near uses cx bx
        mov cx,3
 abrir:
        open file,_R,hand1
        jnc bueno
        loop abrir
        getwindow  m_ventana,10,10,12,37
        window 10,10,12,37,nada
        gotoxy 11,11
        printf err_ab
        getch al
        putwindow m_ventana,10,10,12,37
        ret
bueno:

        mov dx,0
 otro:
        read hand1,1,dato               ;lee dato
        cmp ax,0
        jz fin
        mov bx,offset dato
        mov cx,1
        call guarda
        jmp otro
fin:
        cmp hand1,0
        jz no_cerrar
        close hand1
no_cerrar:
fin_fin:
         ret

transm endp

end transm

No hay comentarios:

Publicar un comentario

Si tienes algún comentario, duda o sugerencia, o si quieres aportar algún código creado a partir de las librerías expuestas aquí, por favor, indícamelo.