Creo que este libro lo han estado buscando muchos y solo lo encuentran a miles o cientos de dólares.
Pero al parecer lo venden a $39.58 comprando con Visa, MasterCard o Western Union.
Es posible que ahora que lo han publicado se acabe en unos cuantos días siendo que TANTOS lo quieren y está tan barato, a no más de $70 USD.
Por si alguien quiso comprar este, en serio siempre que lo venden se acaba en unos 3 días, no creo que vuelva a encontrarse en ningún lugar después de esto:
El libro tiene un poco de ejemplos extra de manejar el mouse, enlazar ensamblador y C con Visual Studio y GCC.
MOD GLOBAL: Imagenes adaptadas al maximoi permitido
Aquí lo compré hace unos 3 días con Western Union.
Les cuento si me llega de Paraguay a Estados Unidos.
Por favor, debería alguien comprarlo y subir el escaneo a color y el CD-ROM al archive.org. CREO QUE SOLO QUEDAN 2 LIBROS de Ensamblador 2009 a $68 en todo el mundo, de esta librería d de Paraguay. Creo que ahora que pongo el link, simplemente se va a acabar en menos de 1 semana o 1 mes.
Necesito hacer un proyecto para el que tenga ayuda de varios otros para cada una de sus partes.
Se me ocurre que lo primero que tengo que hacer son las primitivas de manejo y dibujado de la pantalla, y los algoritmos básicos sin saltarse.
Así que necesito alguien que se encargue de los algoritmos de línea, de círculos, de rellenado, escalado, de color a escala de grises, doble búfer, entre otros que tengo que mencionar aquí.
Una vez eso esté listo, necesito gente que me ayude a hacer un de juegos que básicamente defina un conjunto de estructuras para cada personaje. TODO en el juego es un personaje, el fondo, la música, el suelo, etc., pero necesito que me ayuden a definir con código y explicaciones claras.
Esos personajes simplemente se actualizan al mismo tiempo en un mismo bucle cada cierto tiempo para un escenario de juego. Unos pueden actualizarse y otros tal vez no.
También necesito que alguien defina cómo definir cada acción como saltar, correr, caerse, etc..., y explique los trucos de cómo se hace en un programa.
Necesito que todavía alguien más descifre el Game Programming Crash Course de GameDev.net.
Esta es la información que he encontrado hasta ahora para hacer drivers VxD de Win9x fácil. Los VxDs pueden ser útiles para cargar drivers o emularlos en computadoras viejas o Bochs y así hacer programas con más recursos de hardware no estándar al cargar las VxDs por nuestra cuenta.
Los archivos VxD supestamente siempre son archivos con la marca "LE" en vez de "LX".
De la cabecera LE EXE:
MemPagesCtr es la cuenta de bloques de tamaño MemPageSZ en disco, que hasta ahora puedo dejar a 512 bytes de tamaño.
LastPageBytes dice cuántos bytes tiene el último bloque en el archivo, que puede ser menor o tal vez igual que MemPageSZ.
En el código, los servicios VxD se llaman con INT 20H, seguido de 4 bytes que tienen códigos de los servicios a llamar. Windows mismo se encarga de saltarse esos 4 bytes después de la instrucción INT para evitar errores de ejecución con esos bytes de opcode inválidos.
Esqueleto simple en NASM que muestra un MessageBox al abrir o cerrar una ventana de consola de MS-DOS:
db 0,0,0,1,3,1,0,3,0,0,0,0,0,0,0,0 db 0,0x60,0,0,0,0x75,0,0,0,0x75,0,0,0,7,0,0xE1 db 0,2,0x20,0,0x27,0,0x1F,1,0x5F,0,0x65,0,0x69,0,0x6D,0 db 0x71,0,0x75,0,0x79,0,0x7D,0,0x81,0,0x85,0,0x89,0,0x8D,0 db 0x91,0,0x95,0,0x99,0,0x9D,0,0xA1,0,0xA5,0,0xA9,0,0xAD,0 db 0xB1,0,0xB5,0,0xB9,0,0xBD,0,0xC1,0,0xC5,0,0xC9,0,0xCD,0 db 0xD1,0,0xD5,0,0xD9,0,0xDD,0,7,0,0x61,0,2,0,0,7 db 0,0x5B,0,1,0x61,0,7,0,0x18,0,1,0x50,0,7,0,0x21 db 0,3,0x1F,0,7,0,0x11,0,3,0,0,7,0,1,0,3 db 15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 db 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 db 0,0,0,0,0,0,0,0,0,0,0,0,32,32,32,32
db "MESSAGE_DDB",0,32,0X40,0X31,0 db 32,32,32,"CLASS",0,"'RCODE",0 db 0,0,32,32,32,"PRELOAD DISCARDABLE",0,0 db "CONFORMING",0,0,0,0,0,0,0,0,0,0,0,0
;times 0xD20 db 0
;align 0x1000 align 0x400
;END: ;END: ;END: ;END:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;0x1000 en el archivo tiene .00000000 ;de base en HIEW, por qué? ;;
db 0,0,0,0,0,4,0,0,1,0,0,0,"MESSAGE" db 32,0,0,0,0x80,0,0,0,0,0,0,0,0 times 16 db 0 dd 0,0,0 db "verPP",0,0,0 db "1vsR2vsR3vsR",0x83,0xE8,7,0x83,0xF8,0x21,0x73,7,-1,0x24,0x85,0,0,0,0,0xF8 db 0xC3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
La programación parte de DJGPP, NASM, conceptos de sistemas operativos y hardware, y la compilación de los diferentes programas existentes con las herramientas que se necesiten..
Bochs, VirtualBox, bootear desde discos USB y MS-DOS puro, DJGPP, sistemas operativos propios
Sale un anuncio que dice que las páginas se perderán después del 31 de enero de este año.
¿Cómo se podría hacer una lista de los sitios más importantes de Galeon.com, de favoritos y otros orígenes para hacer un mirror, tal vez entre todos, antes de que supuestamente desaparezca?
El libro de Ensamblador de Francisco Charte Ojeda, en su versión 2005 o 2009, es un importantísimo libro que enseña a programar en Ensamblador x86 para las PCs de 16 y 32 bits.
Es tal vez el mejor y más claro libro sobre Ensamblador en Español.
Sin embargo, lastimosamente ya no se encuentra a la venta desde hace varios años, por lo que los nuevos programadores de habla española/latinoamericana no podrían disfrutar del beneficio de aprender Ensamblador. Yo traté de comprarlo allá por el 2011 en Amazon pero jamás me lo enviaron ya que para comenzar también se había acabado en bodega. Se podía comprar y lo enviarían cuando lo encontraran, pero jamás me lo enviaron, y pagué unos 49 dólares por él en Amazon, aunque no sé si me los cobraron o no. Lo más probable es que no, pero ya no está disponible para comprarse.
Si bien solo habla de los modos de 16 y 32 bits, nos servirá de excelente base, si también lo complementamos junto con los diferentes manuales de Intel y de algoritmos, formatos de archivo y llamadas de sistema para cada sistema operativo.
Todos estos factores hacen que sea más difícil aprender a programar en Ensamblador para quienes hablamos Español, a menos que contemos con este libro, realmente el mejor sobre el tema que por lo menos yo he podido ver, escrito en Español, y de una manera que realmente simplifica los conceptos básicos de la programación en ese lenguaje, como si de una clase se tratara.
Con este libro aprenderemos a programar el BIOS base de todas las PC estándar. Necesitamos saber llamar a las funciones del BIOS con ensamblador de NASM, TASM o MASM, con Turbo C++ o con inline assembly de los diferentes compiladores. Es una adición importante a referencias como la de Ralf Brown ya que muestra cada campo y servicio del BIOS base de forma limpia, proveniente de un fabricante principal de BIOS (Phoenix).
Este video contiene la vista previa del video y el audio del texto completo (fue procesado a computadora con OCR de Lucion File Converter y leído a MP3 con Balabolka así que se oye exactamente lo que la computadora interpretó).
El video está pensado para poder oír cada detalle que el libro contiene y así decidir si hay información especial de interés, haciendo un esfuerzo mínimo para leerlo.
La explicación del funcionamiento de la función XOR a nivel de compuertas lógicas es bastante simple.
En principio, tenemos como mínimo una entrada de 2 bits distintos.
El circuito XOR nos devolverá un 1 como resultado siempre y cuando ambos bits sean diferentes.
En la entrada, necesitamos usar una compuerta OR de 2 entradas.
También necesitamos una compuerta AND de 2 entradas en la entrada, y frente a esta una compuerta de negación para invertir el resultado de dicha compuerta AND.
La primera pata de entrada de la compuerta OR va a la primera pata de entrada de la compuerta AND invertida, y la segunda pata de la compuerta OR de entrada va a la segunda pata de la compuerta AND invertida de entrada.
En otras palabras, queremos obtener el resultado del OR y del AND invertido para los dos bits iniciales de entrada.
Los dos bits de resultado obtenidos por la compuerta OR y AND invertida los haremos pasar por una compuerta AND final de dos entradas.
El resultado de esta última AND será el valor XOR.
La intención de este circuito es usar el OR para detectar la presencia de un 1 y devolver un 1 como resultado; y la intención de la AND invertida es detectar la presencia de un 0 y devolver un 1 como resultado.
Las compuertas OR están orientadas a devolver un 1 cuando hay por lo menos un 1 de entrada.
Las compuertas AND están orientadas a devolver un 0 cuando hay por lo menos un 0 de entrada. Con la compuerta de negación obtenemos un 1 de la AND cuando hay un 0 presente.
Así que con el OR detectamos si hay un 1 presente, y devolvemos 1. Con el AND detectamos si hay un 0 presente, y en ese caso obtenemos un 0 que invertimos para obtener un 1 en la presencia de un 0 de entrada.
Ahora, si hay un 1 presente, el OR nos devolverá 1. Y si hay un 0 presente, el AND invertido nos devolverá 1.
Tomemos como ejemplo 11 binario. Cuando la compuerta OR lo procese, obtendremos 1, que significa que hay un 1 presente en la entrada. Ahora, cuando la compuerta AND procese los dos bits de entrada originales a 1, también devolverá un 1, pero la compuerta de negación invertirá ese resultado de 1 a 0 para indicar que no había ningún 0 presente en la entrada. Cuando el 1 del OR y el 0 del AND invertido ingresen a la compuerta AND final, obtendremos un 0 en respuesta de la entrada original 11 binario. Esto indicará que ambos bits tenían el mismo valor.
Es como si el circuito XOR fuera una pregunta.: ¿Son ambos bits de entrada diferentes? La respuesta será un 1 para indicar VERDADERO si realmente son diferentes. Ahora podemos ver claramente que si ambos bits de entrada son iguales como en este caso con 11 binario, el resultado devuelto por la función XOR será 0.
Tomemos otro ejemplo, con 10 binario. La compuerta OR toma ambos bits, 1 y 0, y devuelve 1 ya que hay por lo menos un 1 presente. La compuerta AND toma ambos bits 1 y 0, y devuelve 0 ya que hay por lo menos un 0 presente. Pero con la compuerta de negación que le sigue a esta AND obtenemos un 1, lo que indica que hay un 0 presente.
Ahora, el bit con valor 1 de resultado de la OR, y el bit con valor 1 de la AND invertida entran en la última AND, la AND de salida, y ya que ambos bits son 1, devolvemos 1. Lo que indica esto es que la OR tomó el 1 y el 0 y detectó la presencia de un 1, devolviendo 1. También indica que la AND invertida tomó el 1 y el 0 y detectó la presencia de un 0, devolviendo 1. Ya que el circuito OR y AND invertido nos indican por su lado que hay tanto un 1 como un 0 presentes, devolvemos un 1 para la función XOR del circuito completo, para indicar que ambos bits eran diferentes.
Como vemos también, al nivel más fundamental siempre operamos las compuertas de 2 en 2, así que resolver será fácil. Incluso en la aritmética decimal normal operamos de 2 en 2 al nivel lógico más simple.
El siguiente código de javascript demuestra cómo se vería implementada como programa la función lógica del circuito XOR. Siempre que los 2 bits de entrada sean iguales, el programa devolverá 0. Si son diferentes, este devolverá 1.
Paso 1.: Necesitamos 2 variables de entrada de por lo menos 1 bit de tamaño. Paso 2.: Aplicamos OR entre ambas variables de entrada. Paso 3.: Aplicamos AND entre ambas variables, y negamos los valores de bits del resultado. Paso 4.: Aplicamos AND al resultado del OR y del NAND. Este es el valor XOR.
La mayoría de lenguajes de programación y ensambladores tienen operadores o instrucciones XOR. Estas son especialmente útiles para generar código más breve que asigne 0 a una variable o registro al aplicarle XOR con su mismo valor. Como hemos visto, ya que todos los bits serán los mismos al usar el mismo registro del procesador o variable de memoria como primer y segundo operando para la XOR, todos los bits quedarán a cero para indicar que todos eran iguales.
Código:
javascript:
/* Paso 1: Necesitamos 2 variables de entrada de por lo menos 1 bit de tamaño. */ var bits_A = 1; var bits_B = 1;
var OR_0 = bits_A|bits_B; /* Paso 2: Aplicamos OR entre ambas variables de entrada. */ var NAND_0 = ~(bits_A&bits_B); /* Paso 3: Aplicamos AND entre ambas variables, y negamos los valores de bits del resultado. */ var XOR_AND_OUT = OR_0&NAND_0; /* Paso 4: Aplicamos AND al resultado del OR y del NAND. Este es el valor XOR. */