You are currently browsing the category archive for the ‘Assembler’ category.

Hace dias que llevo buscando como hacer un programa que pueda imprimir un caracter, que su tamaño sea el menor posible y bueno al fin lo logre el programa solo pesa 8 bytes ,el programa esta hecho en assembler, para compilarlo use TASM al ensamblarlo me di cuenta que cuando lo generaba en formato EXE me generaba como 556 bytes y pues esto era mucho pero cuando lo compile en COM  me genero solo 8 bytes, aqui el codigo fuente.

.MODEL tiny
CODESEGORG 100h
Start:
mov ah,02h
mov dl,0bh
int 21h
int 20h
END Start
 

Las principales instrucciones son las interrupciones de DOS “int 21h” sirve para imprimir un caracter. El modo de uso de esta interrupcion es que en el registro “ah” debe contener el valor 02h y el registro “dl” debe tener el  codigo  de caracter  (ASCII) que va imprimir  y finalmente la instruccion int21h hace que se imprima,la siguiente instruccion  “int 20h” es otra interrupcion que termina el programa. Para no hacernos tantos problemas para compilarlo, vamos a obviar este paso y lo vamos a escribir directamente en un editor hexadecimal para esto necesitamos un supereditor Hexadecimal, vamos a usar uno gratis porque ando misionero, lo pueden descargar desde la siguiente direccion http://www.fileheaven.com/bajar/free-hex-editor/56583.htm. Vamos hacer el papel del compilador, para esto vamos a reemplazar cada instruccion por su opcode: 

Haciendo el papel del compilador…

Esto es solo uso del compilador:

MODEL tiny
CODESEG
ORG 100h
Start:

para todas las instrucciones se usaran dos bytes:

mov ah,02h se traducira en-> B4 02
mov dl,41h se traducira en->B2 41 Aqui ponemos el valor del caracter que queremos imprimir por ejemplo 41 es la letra “A” para mas informacion acerca de esto consulte ASCII
int 21h se traducira en->CD 21
int 20h se traducira en-> CD 20
La siguiente instruccion es de uso del compilador:

END Start

De tal manera que quedara asi nuestro codigo B402B241CD21CD20

Creando programa.com…

EL siguiente paso solo es copiar estos codigos en el editor que recomende o en cualquier editor hexadecimal.

1.- Abrimos el programa inicio>Todos los programas >HHD Hex Editor Neo>Hex Editor Neo

2.-Luego File>new

3.-Escribimos: B402B241CD21CD20

4.- lo guardamos File>Save as… Seleccionamos una ubicacion facil para poder ejecutarla desde la linea de comandos por ejm en el disco D: y lo nombramos “programa.com” de tal manera que quede algo como esto:
 

jpe.jpg

Finalmente …

Eso es todo, ahora solo falta la prueba Final entramos a la linea de comandos:

Inicio>ejecutar escribimos CMD y le damos enter, escribimos “d:” le damos enter y escribimos programa.com , y como podemos observar en la imagen imprime el caracter “A”
 

cmd.jpg

…Y  el programa mas pequeño …? (2 bytes)

Lo que explique lineas atras es el programa mas pequeño q pueda escribir un caracter, pero hay otro aun mas pequeño q no hace absolutamente nada, para crearlo procedemos de la misma manera,  el codigo que vamos a poner es”int 20h” traducido a opcodes seria “CD 20” que es una interrupcion de DOS q termina el programa:

1.- Abrimos el programa inicio>Todos los programas >HHD Hex Editor Neo>Hex Editor Neo

2.-Luego File>new

3.-Escribimos: CD 20

4.- lo guardamos File>Save as… Seleccionamos una ubicacion facil para poder ejecutarla desde la linea de comandos por ejm en el disco D: y lo nombramos “programa.com” de tal manera que quede algo como esto:

 pequeno.jpg

Este programa q no hace nada solo pesa 2 bytes 

Eso es todo, ahora solo falta la prueba Final entramos a la linea de comandos:

Inicio>ejecutar escribimos CMD y le damos enter, escribimos “d:” le damos enter y escribimos programa.com , y como podemos observar en la imagen imprime el caracter no hace nada

cmd2.jpg
Anuncios