Autor
|
Tema: Algunas dudas sobre ensambladores. (Leído 6,034 veces)
|
Usuario887
Desconectado
Mensajes: 310
|
Hola, tengo algunas inseguridades acerca de los ensambladores y me preguntaba si alguien conoce las respuestas. ¿para que sirve precisamente la instruccion ORG? Se que delimita el ori gen del programa en la generacion de archivos COM pero, ¿a que se refiere esto precisamente? ¿No es el registro CS dependiente unicamente del cargador del sistema? Lo mismo respecto a la instruccion LEA... Se supone que esta instruccion carga la direccion efectiva (Load Effective Address), pero ¿como?, es decir: si mov dx, offset _data
es lo mismo que lea dx, _data
¿como el procesador, en tiempo de ejecucion, sabe que es _data?. Me explico: ¿como puede cargarse la direccion efectiva de una direccion de memoria? es redundante... ¿por que no simplemente la primera instruccion? ¿o es LEA una instruccion del compilador que luego sustituye por MOV ..., OFFSET ..., en vez de ser parte del repertorio de instrucciones del procesador? Saludos y gracias de antemano.
|
|
|
En línea
|
|
|
|
|
Usuario887
Desconectado
Mensajes: 310
|
¿a que te refieres con "al menos para aprender"? Ya entiendo por que no se codifica... es una pseudo-instruccion. Aunque me haces dudar de si la entiendo plenamente con eso. Ya habia entrado a ese link en busqueda de la misma respuesta, pero las ultimas dos respuestas no estaban, fueron las mas claras. Respecto al manual de TASM, aun no llego a esa parte. Gracias por responder. Saludos.
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
¿a que te refieres con "al menos para aprender"? Me referia los comentarios de Michael Petch como: There is a difference between writing a bootloader from an academic perspective and targeting a particular VM/emulator/physical hardware but the shortcuts academics seem to take and teach doesn't necessarily make for the most portable mechanism. Anyone who is looking to write a real bootloader will know not to make any assumptions because they understand the ramifications. I should note that in PCDOS 2.1 not only did they explicitly set all the registers that included CS and they would do equivalent FAR JMP to a local label 0x0000:0x7C00+offset to set CS to 0.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Usuario887
Desconectado
Mensajes: 310
|
Anyone who is looking to write a real bootloader will know not to make any assumptions because they understand the ramifications.
Precisamente esta es la razon por la cual hice este tema. Aunque no estaba programando un bootloader. Hay algo que no me queda muy claro... se supone que ORG se utiliza para especificar el desplazamiento dentro del desplazamiento en el acceso a la memoria (datos). Sin embargo, ¿solo datos? ¿o añade este valor a otros tipos de referencias tambien? Y otra cosa... ¿recuerdas el archivo hookTSR.asm en el libro de Bill Blunden? Al inicio: SEGMENT CSEG WORD 'code' ASSUME CS:CSEG, SS:CSEG, DS:CSEG ORG 100h ... ¿que es lo que sucede cuando se ensambla la linea de codigo: PUSHF CALL CS:_oldISR ... ? Si Windows carga los archivos COM identicamente como se encuentran en el archivo, ¿no se estaria especificando 100h unidades "extra" al direccionamiento, al especificar ORG 100h?
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
Hay algo que no me queda muy claro... se supone que ORG se utiliza para especificar el desplazamiento dentro del desplazamiento en el acceso a la memoria (datos). Sin embargo, ¿solo datos? ¿o añade este valor a otros tipos de referencias tambien? ... ¿que es lo que sucede cuando se ensambla la linea de codigo: ?
Codigo tambien; _oldISR seria 0409h de otra manera (aunque no podrias enlazarlo con tlink como .COM sin el ORG 0100h). Usa TD hookTSR.com y podras ver: Si Windows carga los archivos COM identicamente como se encuentran en el archivo, ¿no se estaria especificando 100h unidades "extra" al direccionamiento, al especificar ORG 100h?
No. Un .COM es un archivo sin siquiera una misera cabecera asi que se carga tal cual es, MS-DOS pone antes el PSP: "Since it lacks relocation information, it is loaded by the operating system at a pre-set address, at offset 0100h immediately following the PSP, where it is executed (hence the limitation of the executable's size): the entry point is fixed at 0100h." https://en.wikipedia.org/wiki/COM_fileEn realidad Windows emula los ejecutables de 16 bits https://en.wikipedia.org/wiki/Virtual_DOS_machine#Windows_NTVDM
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Usuario887
Desconectado
Mensajes: 310
|
Codigo tambien; _oldISR seria 0409h de otra manera
Sin embargo en este caso codigo tambien porque esta siendo referenciado por un label, ¿no? No. Un .COM es un archivo sin siquiera una misera cabecera asi que se carga tal cual es, MS-DOS pone antes el PSP: "Since it lacks relocation information, it is loaded by the operating system at a pre-set address, at offset 0100h immediately following the PSP, where it is executed (hence the limitation of the executable's size): the entry point is fixed at 0100h." https://en.wikipedia.org/wiki/COM_fileEsta bien... pense que lo primero que se cargaba era el MCB del programa... ¿entonces el PSP mide 100 unidades hexadecimales?
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Usuario887
Desconectado
Mensajes: 310
|
aunque no podrias enlazarlo con tlink como .COM sin el ORG 0100h
Por cierto... ¿como TLINK reconoce que se declaro ORG 100h si es una pseudo-instruccion?
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
Por cierto... ¿como TLINK reconoce que se declaro ORG 100h si es una pseudo-instruccion?
El .asm se ensambla en .obj y ahi en su formato interno se pasan esa informacion entre el ensamblador y el enlazador. https://en.wikipedia.org/wiki/Object_file
|
|
« Última modificación: 19 Mayo 2020, 22:44 pm por Eternal Idol »
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Algunas dudas sobre el erize 1W
Hacking Wireless
|
acastrolorenzo
|
3
|
4,310
|
26 Septiembre 2010, 03:02 am
por buite
|
|
|
Algunas dudas sobre el uso de trojans
« 1 2 »
Hacking
|
erniker
|
14
|
8,630
|
2 Diciembre 2011, 14:16 pm
por erniker
|
|
|
Algunas dudas sobre Drivers...
« 1 2 3 »
Programación C/C++
|
Vaagish
|
20
|
9,661
|
11 Noviembre 2013, 19:01 pm
por Eternal Idol
|
|
|
...Algunas dudas sobre la WWE (lucha libre)
Foro Libre
|
Eleкtro
|
5
|
3,804
|
17 Octubre 2016, 18:10 pm
por basickdagger
|
|
|
Algunas dudas sobre el formato PE
Windows
|
Usuario887
|
1
|
6,522
|
4 Diciembre 2021, 15:51 pm
por Randomize
|
|