Cita de: Eternal Idol en 18 Mayo 2020, 20:02 PMaunque no podrias enlazarlo con tlink como .COM sin el ORG 0100hPor cierto... ¿como TLINK reconoce que se declaro ORG 100h si es una pseudo-instruccion?
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úCita de: Eternal Idol en 18 Mayo 2020, 20:02 PMaunque no podrias enlazarlo con tlink como .COM sin el ORG 0100hPor cierto... ¿como TLINK reconoce que se declaro ORG 100h si es una pseudo-instruccion?
Cita de: Eternal Idol en 18 Mayo 2020, 20:02 PMSin embargo en este caso codigo tambien porque esta siendo referenciado por un label, ¿no?
Codigo tambien; _oldISR seria 0409h de otra manera
Cita de: Eternal Idol en 18 Mayo 2020, 20:02 PMEsta bien... pense que lo primero que se cargaba era el MCB del programa...
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_file
Cita de: Eternal Idol en 18 Mayo 2020, 16:31 PM
Anyone who is looking to write a real bootloader will know not to make any assumptions because they understand the ramifications.
CitarSEGMENT CSEG WORD 'code'
ASSUME CS:CSEG, SS:CSEG, DS:CSEG
ORG 100h
...
CitarPUSHF?
CALL CS:_oldISR
...
Cita de: Eternal Idol en 16 Mayo 2020, 22:53 PM¿a que te refieres con "al menos para aprender"?
En el manual de TASM que te deje antes hay una explicacion. Un uso habitual - al menos para aprender - era este:
https://stackoverflow.com/questions/5611047/why-do-we-give-org-7c00-at-the-start-of-a-boot-program
mov dx, offset _data
lea dx, _data
Cita de: RayR en 14 Mayo 2020, 05:39 AMSi me permites otra pregunta, ¿cual fue la primera version de Windows y/o Linux que utilizo GDTs?
tabla global de descriptores de segmento.
Cita de: NEBIRE en 14 Mayo 2020, 15:18 PMEl sol no se posa en manos que se quemen, si te deshaces de la llama es porque realmente no te gusta el fuego.
El modo más sencillo de espantar a alguien de la programación, es llenarlo de detalles crudos en fases tempranas.
Cita de: Eternal Idol en 13 Mayo 2020, 19:51 PM
Mas informacion en el archivo:
https://web.archive.org/web/20041011152640fw_/http://www.spiff.tripnet.se/~iczelio
Cita de: Eternal Idol en 13 Mayo 2020, 20:37 PM
Si vas a trabajar en Windows es el depurador por excelencia.
Cita de: Eternal Idol en 13 Mayo 2020, 19:51 PM
Podemos ver que al principio:
dd fs:0 l1
0053:00000000 006ff930
dd 006ff930 l2
006ff930 006ff948 77a788c0
u 77a788c0 l1
ntdll!_except_handler4:
77a788c0 8bff mov edi,edi
dd 006ff948 l2
006ff948 ffffffff 77a853d2
u 77a853d2 l1
ntdll!FinalExceptionHandlerPad50:
77a853d2 90 nop
Y no seguimos que ffffffff debe ser el señalador de fin de cadena.
Ahora ejecutamos nuestro programa hasta MOV DWORD PTR FS:[0], ESP
dd fs:0 l1
0053:00000000 006ff8d0
dd 006ff8d0 l2
006ff8d0 006ff930 008d101a ;en rojo la ultima estructura que existia hasta entonces
u 008d101a
seh+0x101a:
008d101a 6a01 push 1
008d101c e801000000 call seh+0x1022 (008d1022)
008d1021 c3 ret
u 008d1022
seh+0x1022:
008d1022 ff2500208d00 jmp dword ptr [seh+0x2000 (008d2000)]
dps 008d2000 l1
008d2000 754a4f20 KERNEL32!ExitProcessImplementation
Citar
Podemos ver que al principio:
dd fs:0 l1
0053:00000000 006ff930
dd 006ff930 l2
006ff930 006ff948 77a788c0
u 77a788c0 l1
ntdll!_except_handler4:
77a788c0 8bff mov edi,edi
dd 006ff948 l2
006ff948 ffffffff 77a853d2
u 008d101a
seh+0x101a:
008d101a 6a01 push 1
008d101c e801000000 call seh+0x1022 (008d1022)
008d1021 c3 ret
MOV ESI, OFFSET handler
MOV DWORD PTR FS:[0], ESI
;...
MOV ESI, OFFSET handler
PUSH ESI
PUSH DWORD PTR FS:[0] ;supongo que esto se utiliza como algun tipo de firma
MOV DWORD PTR FS:[0], ESP
;...