lecteur memoire
Transcription
lecteur memoire
LECTEUR MEMOIRE Mise en garde : Je conserve ici la partie formatage de windows car c’est plus facile pour travailler avec l’éditeur hexadécimal d’où le saut très court vers l’avant EBh 58h qui arrive à l’offset 50h + 08h = 58h. Un saut très court (8 bits) est vers l’avant si son adresse de destination n’est pas supérieure à 7Fh (car de 00h à 7Fh c’est un nombre relatif positif et de 80h à FFh c’est un nombre relatif négatif donc un saut arrière). Evidemment, ne recopiez pas le texte en clair et mon nom si vous voulez que cela marche, et pensez à mettre 55 AAh à la fin du secteur de boot. Ce programme fonctionne et commence réellement en 5Ah, donc on peut noter ici le manque de précision qui est si souvent mis en avant pour décrire les vertus de l’informatique. Explication du programme : Ce programme lit la mémoire RAM aux adresses segment (violet)/offset (bleu) que l'on peut spécifier sur une certaine longueur (vert), le tout écrit en little-endian. Ici c'est l'adresse de l'IVT en 0000:0000h sur une longueur de 592 caractères en décimale soit 250 en hexadécimale. B8 00 B8 mov ax, B800h 90 nop et, 8E C0 mov es, ax c'est 2 instructions chargent le segment vidéo ne rien faire B8 00 00 mov ax, 0000h et, 8E D8 mov ds,ax data que l'on veut explorer (violet) c'est 2 instructions chargent le segment de BE 00 00 mov si, 0000h charge offset data (bleu) avec un caractère BF 00 00 mov di, 0000h charge offset vidéo avec 4 caractères 3E 8A 0C mov cl,ds:[si] 26 88 0D mov es:[di], cl 83 C6 01 add si, 01 83 C7 04 add di, 04 met l'adresse segment/offset de la data dans cl met cl dans l'adresse segment/offset de la vidéo (lecture) le pas de la data le pas vidéo (double word) 81 FE 50 02 cmp si, 0250h test la longueur de 0250h en little-endian de la data (vert) sur le registre 'si' et positionne le flag ZF du microprocesseur en conséquence. 75 EE jne EEh si le test est faux (flag ZF = 0) alors saut court 18 occurrences d'offset en arrière (soit à : 3E 8A 0C ...), si le test est vrai (flag ZF = 1) alors arrêt du programme. nota : la dernière adresse vidéo générée est toujours 4 fois plus grande que la dernière adresse de data. http://f.herbillon.free.fr