Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - _Enko

#451
Cita de: MasterPM2 en 21 Noviembre 2011, 09:36 AM
ya no me acuerdo lol
lo que si recuerdo es que si dices "mov ax,data" estas pasando el contenido de data hacia el registro AX.. no viceversa..
aww extrano este lenguaje quisiera retomarlo :)
NO es obligatorio responder. Menos si la respuesta puede estar equivocada.


En DOS los segmentos pueden apuntar a distintos lugares; algunas de las interrupciones dependen de los segmentos.
Por ejemplo LODSB lee un byte de DS:SI, y luego STOSB escribe un byte en ES:DI.
Por eso los segmentos tienen que estar bien configurados.

El segmento de datos esta ahi, pero quien te dice que no puedes tener otro. Y ademas, el ensamblador no te inicia los registros con valores, por lo tanto es el programador que tiene que asegurarse que este bien inicializado.

En resumen, lo que se hace es inicializar el registro de segmento de datos (DS), para que apunte al segmento correcto. Y Al registro ES para que apunte al mismo segmento.

Saludos.
#452
Movimiento de ignorantes que jamas han programado en html5.
Quiero verlos hacer por ejemplo un juego decente en html5, que tenga la misma calidad grafica y que tenga, por lo menos, el mismo rendimiento.

Luego me gustaria que comparan el tiempo que lleva hacer eso en actionscript/flash y javascript/html5...
Y si aun mi punto no es claro... tambien me gustaria ver que tan bien van de compatibilidad y que se ejecute en todos los navegadores por igual.


html5 sirve bien para hacer galerias de fotos, mostrar videos (en especial iphone), se puede hacer juegos tambien, pero por lo que he visto en flash funcionan mejor.
#453
Hola, tenes que leer mi post anterior de nuevo. [DX+Val] no es una forma de direccionar la memoria valida. Lee de nuevo la lista, dx no esta alli. Saludos
#454
ASM / Re: Por que esta instrucción no es válida?
20 Noviembre 2011, 16:24 PM
Mi respuesta era a la pregunta 1 y 3. La 2 no la vi.

2) Sacado de AMD_INSTRUCTION_SET
Citar
Copies an immediate value or the value in a general-purpose register, segment register, or memory
location (second operand) to a general-purpose register, segment register, or memory location. The
source and destination must be the same size (byte, word, doubleword, or quadword) and cannot both
be memory locations
Citar
When reading segment-registers with a 32-bit operand size, the processor zero-extends the 16-bit
selector results to 32 bits. When reading segment-registers with a 64-bit operand size, the processor
zero-extends the 16-bit selector to 64 bits. If the destination operand specifies a segment register (DS,
ES, FS, GS, or SS), the source operand must be a valid segment selector
Citar
Attempting to use the MOV instruction to load the CS register generates an invalid opcode exception
(#UD). Use the far JMP, CALL, or RET instructions to load the CS registe



Como destino se puede tener DS, FS, GS, SS  y ES (en modo KERNEL, RING0. Si lo haces en modo usuario, el programa muere)

Para modificar CS, lo que se hace es un far jump.
Me imagino que habras visto varias veces algo asi:
mov eax, [fs:0x0]
mov eax, [fs:0x20] etc..

FS en realidad no guarda una direccion de memoria en modo protegido, ni tampoco CS, DS, ES, GS etc...
Lo que guardan es un Indice a una tabla. Y en esa tabla si se guarda la direccion. (gdt). Se los suele llamar "selectores" en vez de "segmento" ya que son eso, un indicde selector. CodeSelector, DataSelector etc...

Para modificar el CS lo que hay que hacer es un far jump indicando que "indice"/selector de esa tabla hay que usar.
Código (asm) [Seleccionar]

jmp pword 0x08: .kernel ;usamos el primer selector
.kernel:

;o tambien
jmp pword 0x1B: 1000h ;el selector que usa windows supongo

;donde luego en la memoria en la direccion [CS: 1000h] esta el codigo


Saludos

#455
Holas, el registro SP si se puede modificar. Lo que no puedes hacer es usarlo como Inidice cuando Indicas  un bloque de memoria.

Ejemplo:
Código (asm) [Seleccionar]

mov sp, 100h ;valido
mov [sp], 5; INVALIDO
mov [sp + 2], 5 ;INVALIDO.


O sea, justamente el registro SP es lo que puedes modificar. Lo que no puedes hacer es usarlo como indicador "puntero".
#456
En modo real el direccionamiento de momoria funciona asi:

[BX + val]
[SI + val]
[DI + val]
[BP + val]
[BX + SI + val]
[BX + DI + val]
[BP + SI + val]
[BP + DI + val]
[address]


Cualquier otra combinacion no es valida.
Por ende, te toca hacer por ejemplo:

mov bp, sp
mov ax, [bp+8]


Los registros no son de uso general. No son AX, BX, CX, DX por ABCD...
Sino Acomulator, Base, Counder, Data

Saludos.
#457
ASM / Re: Entrenador de codigo...existe?
20 Noviembre 2011, 05:32 AM
Crimson Editor.

No te lo recomiendo demasiado porque  hace 3 años que no se actualiza, esta abandonado. Es solo que me acostumbre.


Me gusta porque los archivos de sintaxis son facilmente editables (se puede agregar palabras claves, identificadores y otros...)
Y luego se pueden cambiar los colores a cada uno de esos grupos.


Lo que no tiene es "code completition", cuando escribes el nombre de una funcion, RadASM te muestra que parametros lleva (o por lo menos lo intenta).

Y lo que si le falta  que me gustaria usar es la funcion para ocultar bloques de codigo. (aparece un simbolo "+" en el editor y se ocultan lineas)

Es un notepad++ con menos opciones, pero las justas que me gustan.
http://www.crimsoneditor.com/

Saludos.
#458
ASM / Re: Entrenador de codigo...existe?
19 Noviembre 2011, 22:38 PM
En el editor que uso, tengo configurado:
F7: Ensamblar
F5: Ejecutar
Ctrl+F5: Depurar Olly


Si quiero probar algo, escribo el codigo, F7, Ctrl+F5 y listo. Tarda 15 segundos cada reensamblado.
#459
ASM / Re: Entrenador de codigo...existe?
19 Noviembre 2011, 20:57 PM
Citar
veo que es de 16 bits  se puede trabajar bien con 32 ?
xD
que parte de 8086 no se entendie?  :silbar:

Solamente 16bit.
Recien el 80486 es de 32bit.

#460
Mas que ver online, te conviene descargar peliculas con una compresion alta. La calidad sería inverior, pero te ahoras bastante MB.
Por ejemplo  algunas pelis  comprimidas en un contenedor mp4 con formato h264, MPEG4... pesan 400Mb y se ven bastante bien.

Los servidores de videos online deben hacer algo parecido, les subes un dvdRip en formato AVI(divx, xvid) que pesa unos 800 megas. Una vez subido lo convierten a un formato mas ligero (mp4), finalmente un reproductor flash lee ese mp4 y lo comprime aun mas y te hace streaming en formato FLV.


En resumen, con streaming online (flv) es donde obtienes uno de los menores consumos del ancho de banda.
Pero la desventaja no es solo la calidad, sino que se usa mas el procesador para decodificar el video, de forma que la temperatura del micro sube  facil unos 5-10ºC mas que si estuvieras viendo un  avi o mp4 desde el disco.

Saludos