Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
3
4.0 PROGRAMACIN DE DISPOSITIVOS
En los atributos de color de fondo puedes ver un 80h, el primer nmero es el color
del fondo ( el 8) y el segundo es el color del texto ( el 0).
4.2 Acceso A Discos En Lenguaje Ensamblador
Para leer o escribir en un disco, no se realiza byte a byte, sino ms bien en
bloques de bytes, debido a que el acceso a disco implica movimientos mecnicos
adems de que el acceso se da por sectores; en este proceso no intervienen el
CPU, puesto que solo enva los comandos a la interface que maneja la unidad de
disco y sta es la que se encarga de leer o escribir informacin de un rea
especial de memoria, llamada DMA; este proceso es conocido como acceso
directo a memoria.
Ejemplo:
El sistema de almacenamiento en disco constituye el soporte externo de la
informacin. Los datos se registran sobre la superficie del disco en una serie de
circunferencias concntricas llamadas pistas (track).
Varias pistas, una por cada cara del disco (generalmente 2), componen un
Clster. Cada pista est dividida en porciones iguales llamadas sectores (unidad
bsica de almacenamiento en disco). El tamao de un sector se mide en bytes, y
depende de las caractersticas del disco. En esta seccin se presentan 3 rutinas
que permiten lectura y escritura absoluta de sectores, as como la determinacin
del espacio libre disponible en un disco.
Rutina _AbsoluteRead: Transfiere el contenido de uno ms sectores del disco
al buffer especificado, accesando directamente a los sectores lgicos. En caso de
error, se enciende el bit de acarreo y AX contiene el cdigo del error.
Invocacin:
push <unidad de disco>
push <nmero de sectores a leer>
push <prime
r sector a leer>
3
_AbsoluteWrite
PROC NEAR
ARG Buffer:DWORD,Start:WORD,NumSect:WORD,Drive:BYTE= ArgLen
push bp
; salvar BP
mov bp,sp
; permitir acceso a los argumentos
push bx
; salvar registros
push cx
push dx
push ds
mov al,Drive
; escritura absoluta a disco
mov cx,NumSect
mov dx,Start
lds bx,Buffer
int 26h
pop bx
pop ds
; recuperar registros
pop dx
pop cx
pop bx
pop bp
ret ArgLen
_AbsoluteWrite
ENDP
mov ah,36h
; funcin 36h
mov dl,Drive
int 21h
; del DOS
mul cx
; DX:AX= bytes por cluster
mov cx,1024
; CX= 1 Kb
div cx
; DX:AX= Kb por cluster
mul bx
; DX:AX= Kb libres en el disco
pop cx
; recuperar registros
pop bx
pop bp
ret ArgLen
_FreeDiskSpace
PUERTO
3
1.- DCD (Detecta la portadora)
2.- RxD (Recibe datos)
3.- TxD (Transmite datos)
4.- DTR (Terminal de datos listo)
5.- SG (Tierra)
6.- DSR (Equipo de datos listo)
7.- RTS (Solicita enviar)
8.- CTS (Disponible para enviar)
9.- RI (Indica llamada)
El uso principal que se le asignaba era para conectar el ratn (Mouse), e incluso
escneres, pero con la salida al mercado del puerto USB se dej de utilizar con
este fin. Un uso actual es para conectar algunos tipos de PDAs, agendas
3
- Un 0 lgico es un voltaje comprendido
entre +5v y +15 v en el trasmisor y
Ejemplo:
Pasos para poder enviar datos a travs del Puerto Serial:
Insertar el control MS Comm sobre la forma:
Establecer las siguientes propiedades:
ComPort:
Settings:
Handshaking:
Abrir el puerto, si este ya est abierto por otra aplicacin, entonces se debe
cerrar esa aplicacin, para despus volverlo a abrir el puerto con una aplicacin en
Visual Basic, esto se hace utilizando la siguiente instruccin:
MSComm1.Portopen = true
Definir el tamao del buffer receptor, esto se hace con la propiedad InputLen
MSComm1.InputLen = 1024
Enviar los datos que se desean
Cuando la aplicacin se termine se debe cerrar el puerto.
Aplicacin #1
1. Cree un Nuevo proyecto Form1 (es creado por default).
2. Seleccione del men Project ,verifique que el control MicrosoftComm, este en la barra
de herramientas
3. Agregue el control MSCOMM a la forma.
4. Agregue 2 controles Command Buttons a la forma.
Agregue el siguiente cdigo a sus respetivos controles:
Option Explicit
variable =
fread(PS,1,'uint8');
(PS,variable,'uint16');
Finalmente, unca vez que lees del puerto o escribes en el se debe de cerrar a
travs de lasinstrucciones
Close (PS);
Delete (PS);
Clear PS;
UART.- Decodifica serial a paralelo.
DSP .- Dispositivo Digital Programable.
Pin
N(Centronics
)
-Strobe
2
3
4
5
6
7
8
2
3
4
5
6
7
8
D0
D1
D2
D3
D4
D5
D6
Direccin
Entrada/
Salida
Salida
Salida
Salida
Salida
Salida
Salida
Salida
Registro(bit)
Control(0)
Datos(0)
Datos(1)
Datos(2)
Datos(3)
Datos(4)
Datos(5)
Datos(6)
9
10
11
12
13
9
10
11
12
13
3
D7
-Ack
Busy
Paper-out
Select
14
14
-Auto-Linefeed
15
32
-Error
16
31
-Initialize
17
36
-SelecPrinter
1825
19-30
GND
Salida
Entrada
Entrada
Entrada
Entrada
Entrada/
Salida
Entrada
Entrada/
Salida
Entrada/
Salida
Datos(7)
Estado(6)
Estado(7)
Estado(5)
Estado(4)
Control(1)
Estado(3)
Control(2)
Control(3)
TIERRA
Direccin
LPT1
378H
379H
37AH
Direccin
LPT2
278H
279H
27AH
Con estas dos tablas podemos modificar o leer cualquiera de las lneas del puerto
paralelo mediante el uso de las instrucciones de acceso a puerto, para C++ estas
son outportb e inportb, para Delphi no hay, por lo que tendrs que usar los dos
procedimientos siguientes:
// Envia el valor almacenado en num a puerto.
Procedure EnviaByte(puerto:word;num:Byte);
begin
asm
Mov DX,puerto
Mov AL,num
Out DX,AL
end;
end;
Ejemplo:
Este es un programa para enviar distintas secuencias al puerto paralelo y as
tener efectos con Leds.
;ProgramacinenEnsamblador
;Ejemplodeescrituraenpuertos
;VILLARREALROMEROMAGDALENA
;mag_fairy.sweet@hotmail.com
;Esteprogramatienecomofuncindemostrarcomosepuedeescribirdatosenun
;puerto,enestecasousamoselpuertoparalelodelPCelcualessencillo
;devisualizarconectando8ledsalospines2a9cadaunoenserieconuna
;resistenciade220ohms,losdatosvisualizadoscorrespondenalasvalores
;ASCIIdelateclapresionada.
;elprogramaterminacuandosepresiona*
;Declaracindelsegmentodepila
STACKSEGMENTPARASTACK'STACK'
DB256DUP(0);256BYTESDEESPACIOENELSTACK
STACKENDS
ASSUMECS:COD,DS:COD
CODSEGMENT
;Mensajes
MES1DB'EJEMPLODEACCESOAPUERTOSVILLARREALROMEROMAGDALENAJULIO15DE
2013','$'
MES2DB'OPRIMA*PARASALIR','$'
MES3DB'ADIOS','$'
MENSAJEDW0
MAINPROCFAR
MOVAX,CS
MOVDS,AX
;Escribirmensajeinicial
;EJEMPLODEACCESOAPUERTOSVILLARREALROMEROMAGDALENAJULIO15DE2013
;OPRIMA*PARASALIR
MOVMENSAJE,OFFSETMES1
CALLESCRIBIR
MOVMENSAJE,OFFSETMES2
CALLESCRIBIR
;BucleprincipalquecapturaloscaracteresdeltecladoyenvasuvalorASCII
;albusdedatosdelpuertoparaleloelcorrespondealadireccin378h
bucle:
;LEEELCARACTERDELTECLADO
MOVAH,1
MOVDL,0FFH
INT21H
;Verificasielcarctercorrespondeal*parasalirdelprograma
CMPAL,'*';ComparaelvalordeALconelvalorASCIIdelasterisco
JEADIOS;silaanteriorcomparacindioigualsaltaraadis
MOVDX,378H;DIRECCIONDELPUERTOPARALELO
3
;ElcomandoOUTtienecomofuncinescribirenelpuertocuyadireccinde16
bits
;seencuentraalmacenadaenDX,elvaloraescribirde8bitssealmacenaenAL
OUTDX,AL
JMPbucle
MAINENDP
;Rutinaparadesplegarmensajes
ESCRIBIRPROCNEAR
PUSHAX
PUSHDX
MOVAH,09H
MOVDX,MENSAJE
INT21H
MOVAH,06
MOVDL,0DH
INT21H
MOVAH,06H
MOVDL,0AH
INT21H
POPDX
POPAX
RET
ESCRIBIRENDP
;Rutinadesalida
ADIOS:
;Seescribeunreturnoalimentaciondelinea
MOVAH,06
MOVDL,0DH
INT21H
MOVAH,06H
MOVDL,0AH
INT21H
;Seescribeadis.
MOVMENSAJE,OFFSETMES3
CALLESCRIBIR
;Lafuncio4CHdelainte21HFdevuelveelcontrolalsistemaoperativo
MOVAH,4CH
INT21H
CODENDS
ENDMAIN
3
Turbo Pascal permite escribir procedimientos
y funciones en cdigo ensamblador
e incluirlas como parte de los programas en lenguaje Pascal; para esto, Turbo
Pascal cuenta con dos palabras reservadas: Assembler y Asm.
Assembler permite indicarle a Turbo Pascal que la rutina o procedimiento que
seest escribiendo est totalmente escrita en cdigo ensamblador.
Ejemplo:
Procedimiento hbrido:
Procedure Limpia_Pantalla;
Assembler;
AsmMov AX,0600h
Mov BH,18h
Mov CX,0000h
Mov DX,184Fh
Int 10h
End;
El procedimiento del listado 23 utiliza la funcin 06h de la Int 10h del BIOS para
limpiar la pantalla, este procedimiento es anlogo al procedimiento ClrScr de la
unidad CRT de Turbo Pascal.
4.6 Programacin De Puerto USB (Universal Serial Bus).
Lnea serial universal de transporte de datos. Es un conector rectangular de 4
terminales que permite la transmisin de datos entre una gran gama de
dispositivos externos (perifricos) con la computadora; por ello es considerado
puerto; mientras que la definicin de la Real Academia Espaola de la lengua es
"toma de conexin universal de uso frecuente en las computadoras".
Smbolo de USB
placas
de
nueva
generacin,
an
no
hay
dispositivos
3 / 8 Mbps
Velocidad en MB/s = (480 Mbps X 1 MB/s)
CONCLUSIONES
BIBLIOGRAFIA
http://es.scribd.com/doc/120689070/Ensamblador
http://bbeltran.cs.buap.mx/EnsambladorDisco.pdf
http://www.ramonmedina.name/files/universidad/ac/ac0001.PDF
http://es.scribd.com/doc/120689070/Ensamblador#download
http://www.mcbtec.com/programacion_del_dspic.htm
http://lenguajes-interfaz-2013.blogspot.mx/