0% encontró este documento útil (0 votos)
144 vistas30 páginas

Debug y Registros en Programación Assembler

El laboratorio tuvo como objetivo familiarizarnos con el debug y sus diferentes instrucciones para manejar registros, desplegar códigos ASCII, incrementar valores e interactuar con el mundo exterior. Se explicaron comandos como -r para revisar registros, -n para asignar nombres a programas, y OUT e IN para comunicarse con puertos. Finalmente, se mostró cómo crear un programa que produce sonidos usando loops, OUT e IN.

Cargado por

Luis Guardia
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Temas abordados

  • estructura de disco duro,
  • código maestro de carga,
  • entrada por teclado,
  • programación de software,
  • código ASCII,
  • instrucción AND,
  • virus informáticos,
  • funciones de salida,
  • programación de sistemas opera…,
  • estructura de disco
0% encontró este documento útil (0 votos)
144 vistas30 páginas

Debug y Registros en Programación Assembler

El laboratorio tuvo como objetivo familiarizarnos con el debug y sus diferentes instrucciones para manejar registros, desplegar códigos ASCII, incrementar valores e interactuar con el mundo exterior. Se explicaron comandos como -r para revisar registros, -n para asignar nombres a programas, y OUT e IN para comunicarse con puertos. Finalmente, se mostró cómo crear un programa que produce sonidos usando loops, OUT e IN.

Cargado por

Luis Guardia
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Temas abordados

  • estructura de disco duro,
  • código maestro de carga,
  • entrada por teclado,
  • programación de software,
  • código ASCII,
  • instrucción AND,
  • virus informáticos,
  • funciones de salida,
  • programación de sistemas opera…,
  • estructura de disco

Universidad Catlica Santa Mara La Antigua

Facultad de Ciencias Naturales y Tecnologa


Escuela de Ingeniera Electrnica


LABORATORIO No.5
REGISTROS


Profesor:
Jorge Lam

Elaborado por:
Luis Guardia
Jairo Aizprua
Cesar Correa


Fecha de Entrega:
17 de Agosto de 2012.

Objetivo

El objetivo de este laboratorio es familiarizarnos ms con el debug ya que hay que recordar
que el debug es un programa usado para probar y depurar (eliminar los errores) de otros
programas (el programa "objetivo"). En el laboratorio mediante diversas practicas iremos
conociendo las diferentes instrucciones para realizar la estructura de un programa.


I. Manejo de los registros con DEBUG

Corra DEBUG y con el prompt de Debug presente, teclee R, por registro.
Obtendremos la siguiente pantalla:

Corra DEBUG y con el prompt de Debug presente, teclee R, por registro. Obtendremos
la siguiente pantalla:
A:>debug
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=198C ES=198C SS=198C CS=198C IP=0100 NV UP EI PL NZ NA PO NC
198C:0100 0102 ADD [BP+SI],AX SS:0000=20CD

- R ( registrar) es el comando que nos permite modificar un registro en especifico.


Existe otra forma de cambiar el contenido de los registros. Estando en Debug, utilizaremos
una variante del comando r para llamar cada registro.
-rax


- el prompt de Debug
Esta secuencia pone el nmero 1234 hexadecimal en el registro AX, es decir dentro de AX.
Examine la pantalla aplicando de nuevo rax. Haga sus comentarios.
Ponga ahora dentro de CX, el valor ffff, y despliegue nuevamente los registros. All lo va a
encontrar y puede hacer lo mismo con el resto de los registros, dejndole una gran
flexibilidad para sus futuras investigaciones.

El comando r (registro) nos posibilita la interaccin con la unidad de procesamiento y la
revisin de los registros, posibilitando modificar sus contenidos. Se escribe -r ningn otro
parmetro nos muestra todos los registros con sus respectivos contenidos, pero cuando
queremos podemos agregar un parmetro en especifico nos mostrara el parmetro
especifico deseado por nosotros.

Cuando especificamos el nuevo valor para el registro AX vemos como queda con el valor
deseado.








II. DESPLIEGUE DEL CODIGO ASCII

Procedimientos:
A:>debug
-a100
198C:0100 mov dl, 0 ; nos coloca primer valor en DL
198C:0102 mov ah, 2 ; especifica funcin dos a usar
198C:0104 int 21h ; llama al DOS
198C:0106 inc dl ; cambia el siguiente carcter
198C:0108 jmp 102 ; regresa para imprimir el siguiente
198C:010A

- Cuando ingresamos todas las instrucciones al correr el programa se impresa y se
despliegan todos los cdigos ASCII en el debug.


III. INSTRUCCIONES INC

Incrementa el contenido de un registro o memoria en una unidad.
Para incrementar un registro:
INC BX
INC AL
Para incrementar una direccin de memoria:
INC WORD_VAR
INC BYTE_VAR
INC TABLE [BX]
Banderas afectadas: AF, OF, PF, SF, SF. Observe que no afecta la bandera de acarreo.

- Instruccin "Inc" es la cual incrementa en una unidad el operando, esta sentencia es
muy utilizada en la programacin normal para distintos tipos de soluciones, se puede
concluir que la instruccin INC no afecta al acarreo.


IV. ALMACENE EL PROGRAMA EN DISCO:

Para especificar el nombre de un programa, usamos el comando N (por nombre), seguido
inmediatamente (sin espacios), por el nombre que queremos dar al programa.
El filename, puede ser cualesquiera (8 caracteres), pero la extensin tiene que ser .COM
si queremos ejecutar el programa directamente desde el DOS.
Esto es porque los programas COM tienen ciertos atributos que son compatibles con
Debug.
Ahora, dmosle un nombre al programa:

-nascii.com
Ahora tenemos que decirle al Debug, cuan largo es el programa, es decir, de cuantos bytes
consta. Para esto le indicamos a Debug en un nmero de 32 bits el tamao del archivo
utilizando dos registros de 16 bits con el siguiente formato: BXCX, donde bx representa la
parte alta de nuestro nmero y cx la parte baja del mismo.


-rbx
BX 0000

-rcx



-
contesta esto

Se dio cuenta por qu el tamao del programa es de diez bytes?
Si desea salvar el programa en un drive diferente tiene que agregar la letra de la unidad y
dos puntos inmediatamente despus del comando n.
Ejemplo:
nc:ascii.com



-
- Se llego a la conclusion de que es de diez bytes como le asignamos el valor A en
Hexadecimal que cuando es traido a decimal equivale a 10.


V. EJECUCIN DEL PROGRAMA DESDE DEBUG

Ahora corra el programa.
Qu salida tenemos en pantalla? Para detener el programa puede pulsar <ctrl.-C> o <ctrl.-
pausa>
Interprete cada instruccin hasta que el proceso en pensamiento explique totalmente lo
observado.


- Cuando se ejecuta el programa teniamos guardado lo que correspondia al despliegue
de los codigos ASCII anteriores, simplemente se despliegan todos los valores
ASCII, al principio se pone el primer caracter en DL y vemos como va cambiando.
Este programa solo utilizo 10 bytes por eso el programa se detuvo.

VII. EJECUCIN DEL PROGRAMA DESDE EL DOS:
Para ejecutar el programa desde el dos, solo teclee el nombre del programa, sin la
extensin:
A>Ascii
Describa lo que sucede. Para suspender el programa use
<ctrl.-brk>

- Ejecutando desde el DOS, fuera de DEBUG y utilizando el comando de DIR se nota
claramente el programa guardado en el sistema y consiste en programa de 10 bytes.

VIII. CARGAR EL PROGRAMA DESDE DEBUG
Para cargar el programa desde Debug, debe usar el nombre completo, con la extensin.
A>debug ascii.com
Tambin puede entrar en Debug y usar el comando L, por Load.
A>debug
-nascii.com
-L
Puede comprobar que su programa esta en memoria con el comando u, y volver a correrlo
nuevamente sin temor a que le congele la maquina porque ya esta grabado en disco.
- Se noto que se puede cargar el programa desde el mismo debug, utilizar el
comando -u para ver donde estn guardadas nuestras instrucciones sin necesidad de
repetir todo nuevamente.



IX. USO DE LAS INSTRUCCIONES LOOP:

Salta para comenzar un loop, hasta que el registro CX=0. El nmero de veces que se
ejecuta el loop debe colocarse en CX antes de invocar el loop
MOV CX, COUNT
START:
(Instrucciones dentro del loop)
LOOP START
FLAGS AFECTADOS POR loop: NINGUNO
El programa es el siguiente:
-a100
198C:0100 mov cx,100
198C:0103 mov dl,0
198C:0105 mov ah,2
198C:0107 int 21
198C:0109 inc dl
198C:010B loop 105
198C:010D int 20
198C:010F
Llame el programa como smascii y slvelo en disco para volver a llamarlo. Corra el
programa y explique qu hace, e intrprete cada instruccin.
198C:0100 mov cx,100 ; copia el numero 100 dentro de CX
198C:0103 mov dl,0 ; asigna el primer carcter en DL
198C:0105 mov ah,2 ; especifica funcin dos a usar
198C:0107 int 21 ; llama al DOS
198C:0109 inc dl ; cambia el siguiente carcter incrementando
198C:010B loop 105 ; salto a 105
198C:010D int 20 ; finaliza el programa
- Finalmente cuando se corre el programa se ve que solo despliega una sola vez los
cdigos ASCII.





X. COMUNICACIN CON EL MUNDO EXTERIOR

a. Cuando accesamos la mayora de los perifricos en la PC, usamos las funciones del DOS
como apoyo. Esto lo hemos comprobado usando la funcin de despliegue por pantalla "02",
por ejemplo. Cuando usamos una funcin del DOS, no controlamos el perifrico con
instrucciones desde nuestro programa: dejamos que las rutinas del DOS hagan el trabajo
por nosotros.
b. Cuando accesamos la bocina, usamos instrucciones de nuestro programa para provocar
que algo suceda en un dispositivo fsico. No podemos usar las funciones del DOS, porque
no hay una funcin del DOS para la bocina (los creadores del DOS no pensaron que era
importante). Esto nos da la oportunidad de explorar y comprobar cun poderoso es el
Assembler, cuando se comunica directamente con dispositivos en el mundo exterior.
c. Para hacer sonidos, nuestro programa "enciende" y "apaga" una "compuerta" electrnica
(que es una especie de switch). Cada vez que encendemos el switch y lo apagamos de
nuevo provocamos un pulso. Estos pulsos son amplificados y enviados a la bocina, donde
se produce un sonido. Esta "compuerta" se enciende y se apaga con la instruccin OUT.

- Para la comunicacin con el mundo exterior nos percatamos de la poderosa
herramienta del Assembler para conectarse con el mundo exterior, mediante la
instruccin "Loop" podemos producir un "delay", o rutina de retardo en los
programas que mientras mas rpidos se envi los pulsos, mas alto ser el pitch del
sonido. El delay es un efecto de sonido que consiste en la multiplicacin y retraso
modulado de una seal sonora. Obtenemos el efecto de eco sonido sonoro.

XI. LA INSTRUCCIN OUT
Una instruccin que sirve para encender o apagar el "gate"
- La instruccin "Out" es aquella que escribe lo que conlleva un registro del
procesador en algn registro del puerto que nos conectara con el exterior. La
instruccin OUT copia un byte de AL o un word de AX, al puerto especificado. La
instruccin OUT tiene dos formas posibles: puerto fijo y puerto variable.
- Por puerto fijo, la direccin del puerto de 8 bits se especifica directamente en la
instruccin, por ejemplo: OUT3BH, AL.
- Para puerto variable, el contenido de AL O AX ser copiado al puerto en una
direccin contenida en DX. Puesto que DX es de 16 bits, la direccin del puerto que
este ah puede ser cualquier numero entre 0000H y FFFFH, por ejemplo: OUT DX,
AL.


XII. LA INSTRUCCIN IN
- Instruccin "In" es la que lee un byte del registro de salida del puerto y lo coloca en
un registro del procesador.
Ejemplo: In Acc, DESTINO
Puede ser Ax o Al en el puerto origen del Acumulador-destino, el puerto puede ser
expresado en HEX o mediante acumulador-origen que tiene que ser Dx, siendo asi, su
contenido se toma la direccin del puerto que se lee en debido momento.

XIII. LA INSTRUCCIN AND

Esta instruccin realiza la operacin lgica AND de cada bit en una fuente de tipo byte o
word con cada bit correspondiente de un destino byte o word. El resultado se coloca en el
destino especfico.
El contenido de la fuente no se altera. Esto permite realizar operaciones de "enmascarado"
(reset) de los bits "andeando" con 0. El operando fuente puede ser un nmero inmediato,
los contenidos de un registro, o el contenido de una localizacin de memoria especificado
por uno de los 24 modos de direccionamiento del CPU. El destino puede ser un registro o
una localizacin de memoria. La fuente y el destino no pueden ser ambos localizaciones de
memoria en la misma instruccin.
Ejemplo:
Cdigo: AND BX, 00FFH ;AND ; word en BX con el inmediato 00FFH, o "enmascara el
byte superior, y deja el byte bajo sin cambiar".

El efecto de la instruccin XOR es que si algo est ON lo pone OFF. El trmino XOR
significa que una de las variables lgicas puede estar asignada, pero las dos no:
0 XOR 0 = 0
O XOR 1 = 1
1 XOR 0 = 1
1 XOR 1 = 0.



XIV. EL RETARDO DE TIEMPO
En muchos programas que se realizan en la vida o siendo parte de este laboratorio se puede
notar la necesidad de una rutina de retardo a nuestro programa hacen que la sincronizacin
de la aplicacin real o de una seal pueda estar a la par de nuestro programa, para realizar
este tipos de rutinas sera necesario utilizar el contador registro y los LOOPS.

XV. INTRODUZCA EL PROGRAMA DEL SILBIDO


- Cuando se corre el programa si se pudo percibir el sonido, pero al cambiar el pitch
se noto que el aumento el sonido ya que la frecuencia en este caso es mas rpida que
la anterior.

XVI. KEYBOARD INPUT FUNCTION nmero 01h
Se entra con: Reg AH = 1
Se ejecuta con: Int 21
Regresa con: carcter del keybd en AL
Comentarios: ctrl.-brk causa la salida de la funcin.
USO DE LA FUNCION 01H:
A:>DEBUG
-a100
198C:0100 mov ah,1
198C:0102 int 21
198C:0104 int 20

Este programa es hasta ms corto que el de la carita feliz. Para estar seguro que se ha
introducido correctamente desensmblelo.
Ahora, corra el programa,
-g

Program terminated normally
-
El control de la computadora regresa a Usted y usted est en Debug

Respuesta: el programa finaliza normalmente, y nuevamente nos encontramos en
DEBUG, Interrupcin 21h, 01h la utilizamos para leer un carcter del teclado y
introducirlo, AH=01h y y registro de retorno AL=Carcter Ledo, con esta funcin se hace
sencillo la lectura de un carcter del teclado, el cdigo hexa se almacena en AL. Si el
carcter es extendido AL tendr valor 0 y ser necesario llamar de nuevo a la instruccin
para tener el cdigo del carcter.
XVII. CUIDADO, PROBLEMAS!

- La observacin mas importante es que sera muy importante tener cuidado al
momento de redactar ya que si se comete algn error podra conllevar al
funcionamiento incorrecto del mismo, adicional para estos programas es necesario
siempre tener en cuenta el IP correcto antes de correr el programa.
XVIII. ENTRANDO UNA ORACIN POR EL TECLADO
Ahora queremos utilizar la funcin 01 para entrar algo mas que un simple carcter.
Simplemente quitamos la instruccin INT 20 y ponemos en su lugar un JMP 100, para
lograr el efecto de repeticin.

-a100
0FF7:0100 mov ah,1
0FF7:0102 int 21
0FF7:0104 jmp 100
0FF7:0106

- En este ejemplo ilustra como introducir una serie de caracteres, no uno en particular
y basarnos en los comandos previamente mencionados en el enunciado del
problema para salirnos del loop y as conocer los registros.

XIX. FUNCION DE IMPRESIN DE CARACTERES

Dnde termina el programa y donde inicia la frase? Este es un caso de un programa donde
tanto instrucciones y datos se encuentran en un solo segmento. Sabe usted cual es este
segmento? Puede comprobarlo con argumentos aprendidos hasta el momento?
- Termina con la Int 20H como observamos en la imagen, frase inicia con el comando
Db, seguido DS debe apuntar al segmento donde se encuentra la cadena y DX debe
contener el desplazamiento de la cadena dentro de ese segmento.

XX. EL PSEUDO-OPERADOR DB
- DB proporciona ayuda a las maquinas para que comprendan lo que ingresara un
usuario no es una instruccin sino una serie de caracteres que deben ser impresos de
igual forma como fueron introducidos, tratndolos como datos. Llevaran comillas y
al final $.
XXI. FUNCION BUFFER PARA ENTRADA POR TECLADO

- Funcin buffer se utilizo a travs de la interrupcin 21h, funcin 0AH y lee cadenas
de smbolos desde el teclado y el cdigo se almacena en buffer; almacenara un
mximo de 31 caracteres antes de que suene la campana.

XXII. PROGRAMA ESPEJO

Ahora pongamos juntas las ltimas dos funciones estudiadas, y hagamos un programa.
Tome una oracin que entremos desde el teclado y haga un eco o espejo en la pantalla.
Entre el siguiente programa en Debug:

- 198C:0100 mov dx,116
- 198C:0103 mov ah,a ;funcin de entrada por keyb
- 198C:0105 int 21
- 198C:0107 mov dl,a
- 198C:0109 mov ah,2 ;funcin para retorno de carro
- 198C:010B int 21
- 198C:010D mov dx,118
- 198C:0110 mov ah,9 ;impression de caracter
- 198C:0112 int 21
- 198C:0114 int 20
- 198C:0116 db 50
- 198C:0117

- Cuando se hace el dump en el programa aparece lo antes grabado, luego se
imprimi los caracteres con la funcin 09h, luego se ingreso una cadena de
caracteres al correr el programa, enter y se la ultima cadena se imprimi y si reviso
la memoria para y se corroboro que las mismas fueron almacenadas en sus
direcciones correspondientes.

XXIII. OTROS EJEMPLOS Y USOS DE INTERRUPCIONES
OBTENIENDO EL NUMERO DE VERSIN DEL SISTEMA OPERATIVO
- Escribiendo el programa mencionado para obtener el numero de versin del sistema
operativo realizamos los siguientes pasos: Rastrear la ejecucin de las instrucciones,
primero se ingresa R para ver los registros, luego T para rastrear MOV. En lugar de
rastrear la instruccin INT, ingrese P(proced, proceder) para ejecutar toda la rutina
del DOS. El proceso termina con la instruccin NOP. Ahora se puede ver en AL el
nmero principal de la versin del DOS, como X en DOS X.20, y en AH el nmero
secundario de la versin, como 14H(o 20) en DOS X.20.

COMO OBTENER LA FECHA ACTUAL
MOV AH, 2A
INT 21
NOP
- El programa ya escrito previamente y mediante el uso de T para ejecutar mov, P
para las interrupciones, y se detendr en NOP, por consiguiente mostrara los
registros con lo que deseamos:


AL = mircoles (donde 0 = domingo)
CX = 2012 (07DCH )
DH = agosto (01 a 12)
DL = 16 (01 a 31).
OTRA FORMA DE DETERMINACIN DE TAMANO DE MEMORIA
En el Laboratorio 1 se determin que los datos de tamao de memoria se encontraban en las
direcciones 413h y 414h. En ese momento se interrog directamente al Sistema operativo
para que nos diera esa informacin. Tambin podemos interrogar al Bios de la mquina de
la siguiente manera:
INT 12
NOP
En este caso no utilizamos nmero de funcin. Ingrese R para mostrar los registros y la
primera instruccin. La int. 12h transfiere el control a una rutina en el bios que entrega el
tamao de la memoria en AX. Presiones t (y enter) de forma repetida para ver cada
instruccin del bios que se ejecuta. De esta forma, usted ver algo aproximado a esto:
Sti ;establece la interrupcin
push ds ;guarda la direccin del ds en la pila
mov ax,0040 ;segmento 00400
mov ds, ax ;mas
mov ax,[0013] ;desplazamiento 0013h
pop ds ;restaura direccin en el ds
irte ;regresa de la interrupcin




Push Ds ; guarda la direccion del Ds en pila
Push Ax ; guarda la direccion del Ax en pila
Mov Ax, 0040 ; copia
Mov Ds, Ax ; copia
Test Word [0314],2400 ; And entre fuente y destino
Jnz 06BD ; salta a IP
Pop Ax ; recupera del stack y guarda en registro AX
Pop Ds ; restaura direccion en el Ds
Ret ; regresa a la interrupcion
NOP ; no hace nada pasa a la siguiente

EL OPERADOR PTR
MOV AX,[11A]
ADD AX,[11C]
ADD AX,25
MOV [11E],AX
MOV WORD PTR [120],25
MOV BYTE PTR [122],30
NOP
NOP
DB 14 23
DB 05 00
DB 00 00
DB 00 00 00


PTR indica que el dato que sigue es un puntero, el mismo se usa en casos en los que hay
una diferencia en el tamao de datos que una instruccin debe manejar o compilar.
XXIV. FUNCION DE SALIDA POR EL PRINTER (hacer aunque no haya printer)
198C:0100 8A163201 MOV DL,[0132]
198C:0104 B405 MOV AH,05
198C:0106 CD21 INT 21
198C:0108 8A163301 MOV DL,[0133]
198C:010C B405 MOV AH,05
198C:010E CD21 INT 21
198C:0110 8A163401 MOV DL,[0134]
198C:0114 B405 MOV AH,05
198C:0116 CD21 INT 21
198C:0118 8A163501 MOV DL,[0135]
198C:011C B405 MOV AH,05
198C:011E CD21 INT 21
198C:0120 8A163601 MOV DL,[0136]
198C:0124 B405 MOV AH,05
198C:0126 CD21 INT 21
198C:0128 8A163701 MOV DL,[0137]
198C:012C B405 MOV AH,05
198C:012E CD21 INT 21
198C:0130 CD20 INT 20
198c:0132 686F6c610D0A Db hola,0d, 0a
198c:0138

Las instrucciones son las correctas para enviar un solo carcter a la impresora sin embargo
el problema es que se presentara muy extenso y tedioso la forma de imprimir un texto.

XXV. UNA FORMA MAS ELEGANTE

Utilizando 8 lneas solamente se imprimi toda una frase esta sera la mayor ventaja que
posee sobre el problema anterior.
Asignacin
Crear un programa en ensamblador de Debug que tome una frase del teclado y la enve a un
impresor.
Mov Cx, 001B
Mov Bx, 0111
Mov Dl, [BX]
Mov Ah, 05
Int 21
Inc Bx
Loop 0106
Int 20
Db 'Arquitectura de Computadora', 0d, 0a


Actividades

Investigar cuales son los archivos de iniciacin de Sistemas Operativos modernos tales
como Windows y Linux.

Los archivos de inicio de Windows son los siguientes:
- Archivo --> Localizacin --> Fase en el boot
- NTLDR --> C: (System Partition Root) --> Preinicio e Inicio (preboot y boot)
- BOOT.INI --> C: --> Inicio
- BOOTSECT.DOS --> C: --> Inicio (opcional)
- NTDETECT.COM --> C: --> Inicio
- NTBOOTDD.SYS --> C: --> Inicio (opcional)
- NTOSKRNL.EXE --> systemrootsystem32 --> Carga del Kernel (ncleo)
- HAL.DLL --> systemrootsystem32 --> Carga del Kernel (ncleo)
- SYSTEM --> systemrootsystem32 --> Inicializacin del Kernel
- dispositivos.sys --> systemroorsystem32drivers --> Inicializacin del Kernel

Los archivos de inicio de Linux son los siguientes:
- /ETC/ISSUE Y /ETC/ISSUE.NET: Estos archivos los lee mingetty para mostrar una
cadena de bienvenida al usuario que se conecta a travs de terminal (issue) o telnet
(issue.net). Incluyen la versin de Red Hat, nombre e ID del kernel. Los usa rc.local
- /ETC/REDHAT-RELEASE: Incluye una lnea en la que dice la versin y nombre de Red
Hat. Lo usa rc.local
- /ETC/RC.D/RC: funciona para todos los niveles como argumento.
- /ETC/RD.C/RC.LOCAL: Puede ser llamado desde rc, rc.sysinit, o /etc/inittab
- /ETC/RC.D/RC.SYSINIT: Normalmente el primer script para todos los niveles
- /ETC/RC.D/RC/RCX.D : Scripts desderc (X se refiere acualquier nmero entre 1 y 5).
Cuando un sistema arranca, identifica el runlevel para iniciarlo, y despus llama a todos los
scripts de inicio presentes en el directorio especfico para ese runlevel.

Busque en el Internet o bibliografa el listado completo de las interrupciones de los
sistemas DOS. Indique vector e utilidad de los mismos con detalles de las funciones.

Int 01h - CPU. Ejecucin paso a paso.
Int 02h - Interrupciones no enmascarables NMI.
Int 03h - CPU. Punto de prueba o ruptura (breakpoint).
Int 04h - CPU. Desbordamiento (INTO detect overflow).
Int 05h - Imprimir pantalla.
Cuando pulsamos la tecla imprimir pantalla en modo DOS, se ejecuta esta
interrupcin.
Int 06h - CPU. Reservada (cdigo de operacin invalido).
Int 07h - CPU. Reservada comprueba si existe coprocesador matemtico.
Int 08h - IRQ 0. Contador del sistema. Reloj interno.
Int 09h - IRQ 1. Teclado.
Int 0Ah - IRQ 2. LPT2. Puerto paralelo 2.
Int 0Bh - IRQ 3. COM2. Puerto de comunicaciones serie 2.
Int 0Ch - IRQ 4. COM1. Puerto de comunicaciones serie 1.
Int 0Dh - IRQ 5. disco duro "Fixed disk".
Int 0Eh - IRQ 6. Controlador de discos (floppy).
Int 0Fh - IRQ 7 LPT1. Puerto paralelo 1.
Int 10h - BIOS VIDEO. Funciones de vdeo.
Int 11h - BIOS EQUIPO. Obtiene una lista del equipo.
Int 12h - BIOS. Tamao de memoria. Memoria disponible.
Int 13h - BIOS DISCO. Maneja todo lo relativo a lectura, escritura, formateo, etc.
Int 14h - BIOS. Funciones de puertos serie. Comunicaciones asincronas.
Int 15h - BIOS. Extensiones entrada/salida opciones de cassette (obsoleta).
Int 16h - BIOS. Funciones de teclado. FUNCIONES
Int 17h - BIOS - Funciones de impresora. FUNCIONES
Int 18h - rom del Bsic. "Diskless boot hook" (obsoleta).
Int 19h - "Bootstrap loader". Utilizada para arrancar el S/O.
Int 1Ah - Servicios reloj tiempo real.
Int 1Bh. - Break teclado.
Int 1Ch - Timer tick usuario.
Int 1Dh - Parmetros del bios.
Int 1Eh - Parmetros disquete.
Int 1Fh. - Caracteres grficos.
Int 20h - Terminar programa MS-DOS.
Int 21h - MS-DOS. Aqu hay una gran variedad de funciones. Aunque muchas de las
funciones de la interrupcin 21h pueden ser realizadas a travs de otras interrupciones, su
objetivo mas bien consiste en simplificar el uso de estas.
Int 22h - Direccin terminar. Donde se devuelve el control cuando acaba un programa.
Int 23h - MS-DOS. Direccin de tratamiento Ctrl-C CONTROL-BREAK.
Int 24h - MS-DOS. Tratamiento de errores crticos.
Int 25h - MS-DOS. Lectura directa de disco.
Int 26h - MS-DOS. Escritura directa de disco.
Int 27h - MS-DOS. Terminar y permanecer residente (TSR).
Int 28h - MS-DOS. "Dos idle interrupt".
Int 29h - MS-DOS. Salida rpida de consola.
Int 2Ah - Funciones de redes.
Int 2Bh - MS-DOS. Reservado.
Int 2Ch - MS-DOS. Reservado.
Int 2Dh - MS-DOS. Reservado.
Int 2Eh - Ejecutar comando.
Int 2Fh - MS-DOS. Multiplex. Funciones internas, CD-ROM y Windows.
Desde Int 30h hasta Int 32h - Reservado para DOS.
Int 33h - Funciones del ratn. Para poder utilizarlo, necesita que el driver del mouse se
encuentre en memoria.
Desde Int 34h hasta Int 3Dh - Reservado para DOS.
Int 3Fh - Gestor Overlay.
Int 40h - Reasignacin disquete.
Int 41h - Parmetros del disco duro.
Int 42h - Gestor vdeo reasignado.
Int 43h - Reservado Bios.
Int 44h - API Red Novell.
Int 45h - Reservado Bios.
Int 46h - Parmetros disco duro.
Desde Int 47h hasta Int 49h - Reservado bios.
Int 4Ah - Alarma de usuario.
Desde Int 4Bh hasta Int 4Eh - Reservado bios.
Int 4Fh - Reservado zona sistema DOS.
Desde Int 50h hasta Int 5Fh - Reservado bios.
Desde Int 60h hasta Int 66h - Reservado programas.
Int 67h - Memoria expandida EMS.
Desde Int 68h hasta Int 6Fh - Reservado bios.
Int 70h - Reloj tiempo real.
Desde Int 71h hasta Int 73h - Reservado bios.
Int 74h - Reservado zona sistema DOS.
Int 75h - Redirigido a Interrupcin NMI.
Int 76h - Reservado zona sistema DOS.
Int 77h - Reservado bios.
Desde Int 78h hasta Int 7Fh - No usadas.
Desde Int 80h hasta Int 85h - Reservado para Bsic.
Desde Int 86h hasta Int F0h - Reservado para interprete de Bsic.
Desde Int F0h hasta Int FFh - Reservado programas.

Investigue la estructura de las unidades de almacenamiento masivas tales como
disquetes y discos duros e indique que interrupciones accedan y guardan informacin.

Los discos duros son los nicos dispositivos de almacenamiento magntico que llevan
componentes del disco duro mviles:
Piezas que lo componen o componentes del disco duro:
- Cabezales: son los componentes del disco duro ms sensibles y los principales
componentes mviles del disco. Los cabezales funcionan variando la posicin
dentro del disco duro para poder acceder a la informacin que necesitamos. El
aumento de la densidad magntica y los sistemas de recuperacin de la seal, hace
que en la actualidad, estos componentes del disco duro necesiten de un ajuste y
programacin de funcionamiento.
- El sistema de funcionamiento consiste en una bobina de cobre encerrada en un imn
(voice coil), que en funcin de la corriente que se le aplique varia su posicin para
acceder a la informacin requerida. Esta pieza lleva en la punta las piezas cermicas
que son los dispositivos sensibles a los campos magnticos que componen la
informacin. Debido a la debilidad de la seal que generan estos campos
magnticos, el cabezal dispone de un amplificador de la seal alojado en chasis de
las cabezas (head assembly).
- Electrnica: tambin llamada Placa o PCB, es la parte del disco duro que se encarga
del manejo de los distintos tipos de componentes del disco duro as como de
verificar su funcionamiento. Es la parte responsable de la comunicacin con el
ordenador, en ella se aloja el bus, y la alimentacin. Esta placa es en s, un pequeo
ordenador compuesto por un microprocesador, memoria ram, los
microcontroladores que manejan los perifricos, como el control de posicin, giro
del motor y bus de comunicacin.
- Firmware: es el componente del disco duro de software que configura el disco duro,
y contiene toda la informacin necesaria para poner el disco en marcha,
comunicarnos con l, protegerlo e identificarse.
- Motor: tambin llamado spin, es un eje autor rotante alimentado por generadores de
trenes de pulsos para mantener una velocidad exacta.
- El motor est compuesto generalmente por tres juegos de bobinas contrapuestas,
que imprimen el movimiento al eje central que soporta los platos del disco duro.
- Platos: son los elementos rgidos que albergan la pelcula magntica en la que se
graban nuestros datos.
ESTRUCTURA FSICA DE UN DISQUETE

- los datos se almacenan en el disco en crculos concntricos llamados pistas, y cada
una de estas pistas se divide en sectores de 512 bytes.
- En nmero total de sectores de un disco es: n total de sectores = nmero total de
caras x nmero total de pistas por cara x numero de sectores por pista.
- Los sectores que se encuentran en las pistas ms cercanas al centro del disco son
fsicamente ms pequeos que los sectores del exterior, sin embargo, almacenan la
misma cantidad de informacin, 512 bytes
- Para calcular la capacidad de un disquete se utiliza la expresin: capacidad= n
caras x n pistas x n sectores/pista x 512 bytes.


Con el uso de debug.com investigue el rea de iniciacin del Sistema operativo
(bootstrap) y trate de desensamblar la informacin que encuentre aqu. Presente esta
informacin en su informe.

El debug funciona bajo DOS. Debe de existir un programa que haga la inicializacin del
sistema y determine las metas a alcanzar para poder hacer que el sistema est en posibilidad
de aceptar entradas de los dispositivos externos como pueden ser el teclado o los discos
magnticos de almacenamiento. A este programa se le conoce como programa de arranque
(start-up program). Usualmente se le conoce en ingls con el nombre de bootstrap o
programa de arranque en fro (cold-start), los programas de arranque no necesariamente
tienen que ser muy grandes. El procedimiento comn consiste en colocar en una localidad
de memoria predefinida del tipo ROM, el pequeo programa de arranque. Toda
computadora tiene una forma determinada de comenzar la ejecucin de un programa en una
localidad especifica al aplicarles la energa elctrica, esta caracterstica se
aprovecha para guardar en esa localidad el inicio del programa de arranque.
El programa de arranque inicia una cadena de eventos que termina con
la ejecucin en memoria principal de una parte del sistema operativo conocida como
procesador de comandos que queda en todo momento activo para recibir rdenes
posteriores de otros programas o del usuario directamente en una parte del sistema
operativo llamado BIOS o sistema bsico de entrada y salida (Basic Input Output System).

Se denomina sector de arranque MBR ("Master boot record") o bloque maestro de carga
("Master boot block"). Sus 512 bytes contienen tres bloques con informacin sobre la
arquitectura fsica y lgica del disco.

Cdigo maestro de carga MBC
Si el disco es "bootable", los primeros 446 bytes del MBR (sector de arranque), estn
ocupados por un pequeo trozo de cdigo denominado cdigo maestro de carga MBC
("Master Boot Code") o cargador inicial (bootstrap loader), que es cargado por la BIOS
para comenzar el proceso de carga. El bootstrap loader repasa la tabla maestra de
particiones buscando una particin activa. En caso de encontrarla, busca su sector inicial,
carga su cdigo en memoria, y le transfiere el control.

A continuacin el volcado ASCII en DOS de Master Boot code:






Investigue y adquiera algunos de los desensambladores ms populares en el Internet.
Cul es su principal uso? Qu beneficios pudiera explotar de estos programas?
Desensambladores ms populares:

- ELF: hace uso a la informacin de depuracin simblica que estn presentes en los
archivos objeto
- INTERACTIVE DISSAMBLER: permite al usuario humano colocar smbolos
mnemnicos para valores o regiones de cdigo: la intuicin humana aplicada al proceso de
desensamblado a menudo va en paralelo con la creatividad humana en el proceso de la
escritura del cdigo.
- ILDASM: es una herramienta contenida en el SDK del .NET Framework. Puede ser usado
para desensamblar los archivos PE conteniento cdigo Common Intermediate Language
- OllyDbg: es un depurador analizador ensamblador de 32 bits
- SIMON: un probador/depurador/animador con desensamblador integrado para el
Ensamblador, COBOL y PL/1
- Texe: es un desensamblador de 32 bits y un analizador de archivos PE de Windows libre
- unPIC: es un desensamblador para los microcontroladores PIC el objdump, parte del
GNU Binutils, est relacionado con el depurador interactivo gdb.
Los desensambladores son ampliamente utilizados para crackear programas y para realizar
ingeniera inversa. Tambin son utilizados por desarrolladores de software, investigadores o
estudiantes.


Investigue la naturaleza de los virus computacionales y su relacin al anlisis a nivel
de mquina.

Qu es exactamente un virus informtico?
Definiciones hay tantas como preguntas sin respuesta exacta. Veamos, pues, si cabe la
posibilidad de concretar algunos requisitos que cumplen estos agentes vricos:

* Son programas de computadora.
* Su principal cualidad es la de poder autor replicarse.
* Intentan ocultar su presencia hasta el momento de la explosin.
* Producen efectos dainos en el "husped".

La relacin que tiene al anlisis a nivel maquina es que los virus informticos estn hechos
en Assembler. Las instrucciones compiladas por Assembler trabajan directamente sobre el
hardware, esto significa que no es necesario ningn software intermedio. No
Normalmente este tipo de programas se pega a alguna entidad ejecutable que le facilitar la
subida a memoria principal y la posterior ejecucin. Como entidades ejecutables podemos
reconocer a los sectores de arranque de los discos de almacenamientos magnticos, pticos
o magneto-pticos (MBR, BR), los archivos ejecutables de DOSs (.exe, .com, entre otros),
las libreras o mdulos de programas (.dll, .lib, .ovl, .bin, .ovr). Los sectores de arranque
son fundamentales para garantizar que el virus ser cargado cada vez que se encienda la
computadora.

Conclusin

En este laboratorio se hizo la introduccin y reconocimiento de comandos de una de las
utilidades de MS-DOS llamada "Debug". La realizacin de este trabajo nos ha parecido
muy interesante ya que cada laboratorio que hacemos comprendemos poco a poco el
comportamiento de debug y como el Debug mediante el lenguaje assembler es un lenguaje
muy importante para la programacin, paso a paso se usaron las distintas instrucciones y se
realizaron distintas programas.





















Bibliografa

http://www.taringa.net/posts/info/1449657/virus-informaticos_historia_clasificacion-
funcionamiento____.html
http://en.wikipedia.org/wiki/Debugging
http://www.zator.com/Hardware/H1_7_1.htm
http://lenguajeensamblador.tripod.com/Resumen%20DEBUG.htm
http://www.zator.com/Hardware/H8_1_2c.htm

Common questions

Con tecnología de IA

El pseudo-operador DB es utilizado en ensamblador para indicar que lo que sigue no es una instrucción de máquina, sino simplemente una serie de caracteres o datos que deben ser tratados como tales e impresos exactamente como fueron introducidos. Los caracteres van entre comillas y suelen terminar con un símbolo '$' para delimitar el final de la cadena .

El operador PTR en ensamblador se utiliza para especificar el tamaño de los datos que una instrucción debe manejar, ya que las mismas pueden operar sobre diferentes tipos de datos. PTR se aplica cuando hay una diferencia en el tamaño de datos que se deben compilar o procesar, ayudando al compilador a interpretar correctamente las operaciones como las que involucran direcciones de memoria o manipulaciones de datos en registros específicos .

El bootstrap, o programa de arranque, es crucial en el proceso de inicio del sistema operativo ya que establece las bases para cargar los componentes críticos del sistema. Este pequeño programa, que reside en una ROM, inicia la secuencia de arranque, incluyendo la carga de controladores y el manejador de comandos del sistema operativo, asegurando que se establezcan las condiciones necesarias para el reconocimiento y gestión adecuada de hardware y periféricos .

El programa lee una cadena de texto ingresada por el usuario mediante la función de entrada ‘ah=0A’ del DOS, almacenando la información en un buffer. Posteriormente, usa la función para impresión de carácter ‘ah=09’ para replicar la cadena en la pantalla. Utiliza instrucciones de movimiento de registros y la interrupción 21h en varias ocasiones para gestionar los datos entre las entradas y salidas .

La capacidad de un disquete se calcula mediante la multiplicación del número de caras, el número de pistas por cara, y el número de sectores por pista, multiplicando finalmente por 512 bytes (el tamaño estándar de un sector). Debido a que los sectores están distribuidos concéntricamente, todos tienen la misma capacidad aunque su tamaño físico puede variar dependiendo de la ubicación en la pista .

Las interrupciones en DOS son vitales para la programación a nivel bajo porque simplifican la interacción directa con el hardware, permitiendo realizar operaciones complejas en pocos pasos. Por ejemplo, la interrupción 21h ofrece una amplia variedad de funciones para E/S, gestión de archivos, y control de dispositivos, evitando que el programador tenga que escribir rutinas complejas para cada tarea. Otras interrupciones, como la 12h para la memoria, facilitan obtener especificaciones del sistema sin conocimientos profundos del hardware .

Memory management interrupts like INT 12h, which checks available memory, are crucial for efficient system resource utilization as they allow the system to dynamically adjust operations based on current memory availability. They provide a mechanism for allocating resources to processes more effectively, contributing to overall system stability and performance by preventing over-allocation and ensuring availability for critical processes .

Para obtener el número de versión del sistema operativo en DOS, se utiliza la instrucción INT 21h con AH establecido en 0Ah. Después de ejecutar INT, se procede a rastrear el registro AL que contendrá el número principal de la versión del DOS, y AH el número secundario. Este procedimiento incluye ejecutar las instrucciones utilizando 'R' para ver registros y 'T' para rastrear la ejecución .

Las interrupciones BIOS, como INT 13h para manejo de discos, permiten operaciones de bajo nivel como la lectura y escritura directa en dispositivo, accediendo directamente al hardware, mientras que las interrupciones DOS, por ejemplo INT 21h, proporcionan una capa de abstracción y simplificación para gestionar recursos de E/S, archivos, y datos. Esta combinación permite a los programadores acceder a operaciones detalladas del hardware con las facilidades de alto nivel que ofrece DOS .

Para cargar un programa desde Debug, se debe utilizar el nombre completo del archivo junto con su extensión, por ejemplo, 'ascii.com'. Alternativamente, se puede ingresar a Debug y usar el comando 'L' para 'Load'. Una vez cargado, se puede comprobar que el programa está en memoria usando el comando 'u', que muestra las instrucciones guardadas. Esto evita la necesidad de repetir todo nuevamente .

También podría gustarte