Ouvrir un fichier en assembleur
Résolu/Fermé
mitchlegeek
Messages postés
6
Date d'inscription
vendredi 28 décembre 2007
Statut
Membre
Dernière intervention
3 janvier 2008
-
28 déc. 2007 à 18:16
mitchlegeek Messages postés 6 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 3 janvier 2008 - 3 janv. 2008 à 23:24
mitchlegeek Messages postés 6 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 3 janvier 2008 - 3 janv. 2008 à 23:24
A voir également:
- Ouvrir un fichier en assembleur
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir fichier .bin - Guide
- Comment ouvrir un fichier docx ? - Guide
- Ouvrir un fichier .dat - Guide
- Fichier rar - Guide
14 réponses
mitchlegeek
Messages postés
6
Date d'inscription
vendredi 28 décembre 2007
Statut
Membre
Dernière intervention
3 janvier 2008
3
28 déc. 2007 à 19:02
28 déc. 2007 à 19:02
Dans mon IUT on compile via l'invité de commande... compile.bat , à base de Tlink et Tasm...
Au final ça ne répond pas à ma question...
Mon programme est écrit au Bloc note et il donne ça :
ideal
model small
stack 200h
include "Nmacros.asm"
dataseg
fich1 db 'fic1.txt', 00
fich2 db 'fic2.txt', 00
handle1 dw ?
handle2 dw ?
tampon db 5 dup (?)
tampon2 db 5 dup (?)
mess1 db 'Erreur ouvr mode lectur'
lmess1 dw $-mess1
mess2 db 'Erreur ouvr mode ecriture'
lmess2 dw $-mess2
mess3 db 'Erreur ecriture'
lmess3 dw $-mess3
mess4 db 'Erreur lecture'
lmess4 dw $-mess4
codeseg
debut:
init
ouvrfichl fich1
lectfich handle1,tampon, 5
ouvrfiche fich2
ecrifich handle2, tampon2, 5
jmp fin
;......erreurs !!!.....................................
err_1m:
ecrire [lmess1], mess1
mov bx, [handle1]
mov ah, 3eh
int 21h
jmp fin
errlec1:
ecrire [lmess2], mess2
mov ah, 3eh
int 21h
jmp fin
errecr2:
ecrire [lmess3], mess3
mov ah, 3eh
int 21h
jmp fin
errouv2:
ecrire [lmess4], mess4
mov bx, [handle2]
mov ah, 3eh
int 21h
jmp fin
;.......................................................
fin:
exit
end debut
Je souhaite juste savoir manipuler ces macros... J'espère bien m'exprimer.
Au final ça ne répond pas à ma question...
Mon programme est écrit au Bloc note et il donne ça :
ideal
model small
stack 200h
include "Nmacros.asm"
dataseg
fich1 db 'fic1.txt', 00
fich2 db 'fic2.txt', 00
handle1 dw ?
handle2 dw ?
tampon db 5 dup (?)
tampon2 db 5 dup (?)
mess1 db 'Erreur ouvr mode lectur'
lmess1 dw $-mess1
mess2 db 'Erreur ouvr mode ecriture'
lmess2 dw $-mess2
mess3 db 'Erreur ecriture'
lmess3 dw $-mess3
mess4 db 'Erreur lecture'
lmess4 dw $-mess4
codeseg
debut:
init
ouvrfichl fich1
lectfich handle1,tampon, 5
ouvrfiche fich2
ecrifich handle2, tampon2, 5
jmp fin
;......erreurs !!!.....................................
err_1m:
ecrire [lmess1], mess1
mov bx, [handle1]
mov ah, 3eh
int 21h
jmp fin
errlec1:
ecrire [lmess2], mess2
mov ah, 3eh
int 21h
jmp fin
errecr2:
ecrire [lmess3], mess3
mov ah, 3eh
int 21h
jmp fin
errouv2:
ecrire [lmess4], mess4
mov bx, [handle2]
mov ah, 3eh
int 21h
jmp fin
;.......................................................
fin:
exit
end debut
Je souhaite juste savoir manipuler ces macros... J'espère bien m'exprimer.
mitchlegeek
Messages postés
6
Date d'inscription
vendredi 28 décembre 2007
Statut
Membre
Dernière intervention
3 janvier 2008
3
31 déc. 2007 à 13:02
31 déc. 2007 à 13:02
"ton probleme c'est que tu lis dans tans 'tampon' mais tu ecris a partir de tampon2 donc il est vide ! utilises un seul tampon "
--> Modification déjà effectuée ^^
"5 dup (?) te definit une zone de seulement 5 octects , prends plus , 200 par exemple pour avoir quelques lignes de texte "
--> En l'occurence je ne voulais que recopier le mot "petit"...Est ce vraiment à l'origine de tout ce texte inbouffable ?
"il faudrait ensuite recopier un nbre d'octects selon la longueur du fichier et non pas un nombre imposée (ici tout le tampon) attend toi a avoir des caracteres bizarres apres la zone correctement copiée"
--> Je ne comprend pas très bien ce que je dois faire...et comment ? J'appelle bien mes macros de lecture et écriture avec le paramètre nbo ( nombre d'octet )...c'est pas ça ?
"Apparrement ton ouverture en lecture et en écriture ont échouées comme on le voit dans le début du message. "
--> En fait, mon programme ne demande à aucun moment d'écrire les erreurs dans mon fichier...uniquement dans l'invité de commande ( sinon j'aurai utilisé "ecrifich gnagnah..." pour écrire les erreurs
--> De plus en début de fichier il y a toutes les erreurs et non pas les 2 d'ouverture...Je vous avoue que je suis totalement largué
"Vérifie bien les valeurs des modes d'ouverture"
--> Comment faire ?
"vérifie bien que l'utilisateur est autorisé à écrire dans ce fichier. "
--> Histoire de lecture seule ?
"Tu peux tester les valeurs de retour des registre AX (ou les afficher) pour savoir quel est le type d'erreur retourné."
--> Donc du handle c'est ça ?...ou directement AX ? Genre je le mets dans une variable avant le "jc error" pour l'afficher ensuite ?
Merci beaucoup en tout cas pour vos réponses, ça me fait vraiment avancer !
Désolé j'suis un peu chiant, je ne comprends pas tout ^^
--> Modification déjà effectuée ^^
"5 dup (?) te definit une zone de seulement 5 octects , prends plus , 200 par exemple pour avoir quelques lignes de texte "
--> En l'occurence je ne voulais que recopier le mot "petit"...Est ce vraiment à l'origine de tout ce texte inbouffable ?
"il faudrait ensuite recopier un nbre d'octects selon la longueur du fichier et non pas un nombre imposée (ici tout le tampon) attend toi a avoir des caracteres bizarres apres la zone correctement copiée"
--> Je ne comprend pas très bien ce que je dois faire...et comment ? J'appelle bien mes macros de lecture et écriture avec le paramètre nbo ( nombre d'octet )...c'est pas ça ?
"Apparrement ton ouverture en lecture et en écriture ont échouées comme on le voit dans le début du message. "
--> En fait, mon programme ne demande à aucun moment d'écrire les erreurs dans mon fichier...uniquement dans l'invité de commande ( sinon j'aurai utilisé "ecrifich gnagnah..." pour écrire les erreurs
--> De plus en début de fichier il y a toutes les erreurs et non pas les 2 d'ouverture...Je vous avoue que je suis totalement largué
"Vérifie bien les valeurs des modes d'ouverture"
--> Comment faire ?
"vérifie bien que l'utilisateur est autorisé à écrire dans ce fichier. "
--> Histoire de lecture seule ?
"Tu peux tester les valeurs de retour des registre AX (ou les afficher) pour savoir quel est le type d'erreur retourné."
--> Donc du handle c'est ça ?...ou directement AX ? Genre je le mets dans une variable avant le "jc error" pour l'afficher ensuite ?
Merci beaucoup en tout cas pour vos réponses, ça me fait vraiment avancer !
Désolé j'suis un peu chiant, je ne comprends pas tout ^^
juanpablo
Messages postés
142
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
16 juin 2008
10
31 déc. 2007 à 13:48
31 déc. 2007 à 13:48
re
pour la longueur exacte de copie c'était pour fignoler. laissons pour plus tard
par contre comment as tu visualisé le fichier creé , quand ça affiche des hieroglyphes? peut etre qu'il manque une fin de fichier
je te propose la manip suivante qui rajoute un zero terminateur au fichier creé
tampon 5 dup (?) , 0
tu lis 5 octets dans lecture mais tu ecris 6 octets dans ecriture ( ce qui inclue le zero)
a+
(voir macro pour la fonction 42h deplacement pointeur fichier pour trouver longueur fichier)
pour la longueur exacte de copie c'était pour fignoler. laissons pour plus tard
par contre comment as tu visualisé le fichier creé , quand ça affiche des hieroglyphes? peut etre qu'il manque une fin de fichier
je te propose la manip suivante qui rajoute un zero terminateur au fichier creé
tampon 5 dup (?) , 0
tu lis 5 octets dans lecture mais tu ecris 6 octets dans ecriture ( ce qui inclue le zero)
a+
(voir macro pour la fonction 42h deplacement pointeur fichier pour trouver longueur fichier)
juanpablo
Messages postés
142
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
16 juin 2008
10
31 déc. 2007 à 15:13
31 déc. 2007 à 15:13
re
je viens de réaliser qu'il manque la fermeture du fichier, en ecriture c'est important
si tu n'as pas de macro c'est
mov ah,3Eh
mov bx, handle_fich
int 21H
je viens de réaliser qu'il manque la fermeture du fichier, en ecriture c'est important
si tu n'as pas de macro c'est
mov ah,3Eh
mov bx, handle_fich
int 21H
SUPER t'es un génie !
Problème résolu...je récapitule pour les futurs visiteurs :
Je voulais un prog en ASM permettant d'ouvrir un fichier1 ( fic1.txt) en mode lecture, lire ce fichier, ouvrir un fichier2 ( fic2.txt) en mode écriture et recopier le contenu du premier dans celui-ci.
Nmacros.asm__________________
;
;ouverture de fichier en mode LECTURE
macro ouvrfichl fich1
; fich1 = adresse mémoire où se trouve le nom du fichier
; handle1 = adresse mémoire avec handle sauvegardé
; les registres ax, bx, dx sont modifiés
mov dx, offset fich1
mov ax, seg fich1
mov ds, ax
mov ax, 3d00h ; 3d00h --> mode Lecture
int 21h ; interruption DOS
jc err_1m
mov [handle1], ax
endm
;
; ouverture de fichier en mode écriture
macro ouvrfiche fich2
; fich2 = adresse mémoire où se trouve le nom du fichier
; handle2 = adresse mémoire avec handle sauvegardé
; les registres ax, bx, dx sont modifiés
mov dx, offset fich2
mov ax, seg fich2
mov ds, ax
mov al, 02h
mov ah, 3dh ; ax = 3d02h --> mode écriture
int 21h
jc errouv2
mov [handle2], ax
endm
;
; lecture d'un fichier
macro lectfich handle1, tamp, nbo
; tamp = adresse de début de la zone
; handle1 = adresse mémoire avec handle sauvegardé
; les registres ax, bx, cx, et dx sont modifiés
mov bx, [handle1]
mov cx, [nbo] ; nombres d'octets qu'on veut lire
mov dx, offset tamp
mov ax, seg tamp
mov ds, ax
mov ax, 3f00h ; Nombre de la fonction du SE DOS pour la lecture
int 21h ; Interruption DOS
jc errlec1
endm
;
;écriture dans un fichier
macro ecrifich handle2, tamp1, nbo
; tamp1 = adresse de début de la zone
; handle2 = adresse mémoire avec handle sauvegardé
; les registres ax, bx, cx, dx sont modifiés
mov bx, [handle2]
mov cx, [nbo] ; nombres d'octets qu'on veut écrire
mov dx, offset tamp1
mov ax, seg tamp1
mov ds, ax
mov ah, 40h
int 21h
jc errecr2
endm
;
;fermeture de fichier
macro ferme handle
mov bx, [handle]
mov ah, 3eh
int 21h
endm
______________________________________________
Prog ASM
_______________________________________________
; Manipulation de fichier en ASM
; Nom du fichier : Test.asm
; Date d’ecriture : 30 Dec. 2007
; Objet : Programme ouvrant un fihier, le lisant,
; et le recopiant dans un 2eme fichier
ideal
model small
stack 200h
include "Nmacros.asm"
dataseg
fich1 db 'fic1.txt', 00
fich2 db 'fic2.txt', 00
handle1 dw ?
handle2 dw ?
taille dw ?
tampon db 200 dup (?),0
mess1 db 'Error ouvr mode lectur'
lmess1 dw $-mess1
mess2 db 'Error ouvr mode ecriture'
lmess2 dw $-mess2
mess3 db 'Error ecriture'
lmess3 dw $-mess3
mess4 db 'Error lecture'
lmess4 dw $-mess4
codeseg
debut:
init
ouvrfichl fich1
mov bx,[handle1]
sub cx, cx
sub dx, dx
mov ax, 4202h
int 21h
mov [taille],ax
sub cx,cx
sub dx,dx
mov ax, 4200h
int 21h
lectfich handle1,tampon, taille
ouvrfiche fich2
ecrifich handle2, tampon, taille
ferme handle1
ferme handle2
jmp fin
;......erreurs !!!.....................................
err_1m:
ecrire [lmess1], mess1
ferme handle1
errlec1:
ecrire [lmess2], mess2
ferme handle1
errecr2:
ecrire [lmess3], mess3
ferme handle2
errouv2:
ecrire [lmess4], mess4
ferme handle2
;.......................................................
fin:
exit
end debut
________________________________________________
En espérant que ça en aide d'autres.
Problème résolu...je récapitule pour les futurs visiteurs :
Je voulais un prog en ASM permettant d'ouvrir un fichier1 ( fic1.txt) en mode lecture, lire ce fichier, ouvrir un fichier2 ( fic2.txt) en mode écriture et recopier le contenu du premier dans celui-ci.
Nmacros.asm__________________
;
;ouverture de fichier en mode LECTURE
macro ouvrfichl fich1
; fich1 = adresse mémoire où se trouve le nom du fichier
; handle1 = adresse mémoire avec handle sauvegardé
; les registres ax, bx, dx sont modifiés
mov dx, offset fich1
mov ax, seg fich1
mov ds, ax
mov ax, 3d00h ; 3d00h --> mode Lecture
int 21h ; interruption DOS
jc err_1m
mov [handle1], ax
endm
;
; ouverture de fichier en mode écriture
macro ouvrfiche fich2
; fich2 = adresse mémoire où se trouve le nom du fichier
; handle2 = adresse mémoire avec handle sauvegardé
; les registres ax, bx, dx sont modifiés
mov dx, offset fich2
mov ax, seg fich2
mov ds, ax
mov al, 02h
mov ah, 3dh ; ax = 3d02h --> mode écriture
int 21h
jc errouv2
mov [handle2], ax
endm
;
; lecture d'un fichier
macro lectfich handle1, tamp, nbo
; tamp = adresse de début de la zone
; handle1 = adresse mémoire avec handle sauvegardé
; les registres ax, bx, cx, et dx sont modifiés
mov bx, [handle1]
mov cx, [nbo] ; nombres d'octets qu'on veut lire
mov dx, offset tamp
mov ax, seg tamp
mov ds, ax
mov ax, 3f00h ; Nombre de la fonction du SE DOS pour la lecture
int 21h ; Interruption DOS
jc errlec1
endm
;
;écriture dans un fichier
macro ecrifich handle2, tamp1, nbo
; tamp1 = adresse de début de la zone
; handle2 = adresse mémoire avec handle sauvegardé
; les registres ax, bx, cx, dx sont modifiés
mov bx, [handle2]
mov cx, [nbo] ; nombres d'octets qu'on veut écrire
mov dx, offset tamp1
mov ax, seg tamp1
mov ds, ax
mov ah, 40h
int 21h
jc errecr2
endm
;
;fermeture de fichier
macro ferme handle
mov bx, [handle]
mov ah, 3eh
int 21h
endm
______________________________________________
Prog ASM
_______________________________________________
; Manipulation de fichier en ASM
; Nom du fichier : Test.asm
; Date d’ecriture : 30 Dec. 2007
; Objet : Programme ouvrant un fihier, le lisant,
; et le recopiant dans un 2eme fichier
ideal
model small
stack 200h
include "Nmacros.asm"
dataseg
fich1 db 'fic1.txt', 00
fich2 db 'fic2.txt', 00
handle1 dw ?
handle2 dw ?
taille dw ?
tampon db 200 dup (?),0
mess1 db 'Error ouvr mode lectur'
lmess1 dw $-mess1
mess2 db 'Error ouvr mode ecriture'
lmess2 dw $-mess2
mess3 db 'Error ecriture'
lmess3 dw $-mess3
mess4 db 'Error lecture'
lmess4 dw $-mess4
codeseg
debut:
init
ouvrfichl fich1
mov bx,[handle1]
sub cx, cx
sub dx, dx
mov ax, 4202h
int 21h
mov [taille],ax
sub cx,cx
sub dx,dx
mov ax, 4200h
int 21h
lectfich handle1,tampon, taille
ouvrfiche fich2
ecrifich handle2, tampon, taille
ferme handle1
ferme handle2
jmp fin
;......erreurs !!!.....................................
err_1m:
ecrire [lmess1], mess1
ferme handle1
errlec1:
ecrire [lmess2], mess2
ferme handle1
errecr2:
ecrire [lmess3], mess3
ferme handle2
errouv2:
ecrire [lmess4], mess4
ferme handle2
;.......................................................
fin:
exit
end debut
________________________________________________
En espérant que ça en aide d'autres.
Rocksy
Messages postés
509
Date d'inscription
mercredi 14 novembre 2007
Statut
Membre
Dernière intervention
31 décembre 2007
73
28 déc. 2007 à 19:27
28 déc. 2007 à 19:27
Sorry, je n'avais pas bien compris et je ne pige pas plus l'Assembler que toi!
J'ai trouvé un spécialiste (regarde ce post, soumet-lui directement ton problème : http://www.commentcamarche.net/communaute/profil ekra
@+
J'ai trouvé un spécialiste (regarde ce post, soumet-lui directement ton problème : http://www.commentcamarche.net/communaute/profil ekra
@+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mitchlegeek
Messages postés
6
Date d'inscription
vendredi 28 décembre 2007
Statut
Membre
Dernière intervention
3 janvier 2008
3
29 déc. 2007 à 15:49
29 déc. 2007 à 15:49
Petit up....
S'il vous plait.
Personne ne 'sy connait en assembleur ?
S'il vous plait.
Personne ne 'sy connait en assembleur ?
ekra
Messages postés
1870
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
24 juillet 2014
342
30 déc. 2007 à 22:24
30 déc. 2007 à 22:24
Bonjour,
Je ne suis pas un expert de l'assembleur mais je veux bien essayer de t'aider :p
Pour le Handle:
Lorsque tu ouvres ton fichier, le système d'exploitation (DOS) identifie ton fichier avec un numero (handle) que tu récupères pour te servir de ce fichier plus tard.
Pour le tampon:
Lorsque tu vas lire ton fichier, il faut mettre dans une zone mémoire temporaire les données. C'est la zone mémoire dédiée pour cela qui est nommée tampon.
handler et tampon semblent être juste des pointeurs.
Regarde un peu ici si tu veux plus d'aide :
http://cui.unige.ch/DI/cours/1840/tips/asm/int21.html
Bonne soirée.
Je ne suis pas un expert de l'assembleur mais je veux bien essayer de t'aider :p
Pour le Handle:
Lorsque tu ouvres ton fichier, le système d'exploitation (DOS) identifie ton fichier avec un numero (handle) que tu récupères pour te servir de ce fichier plus tard.
Pour le tampon:
Lorsque tu vas lire ton fichier, il faut mettre dans une zone mémoire temporaire les données. C'est la zone mémoire dédiée pour cela qui est nommée tampon.
handler et tampon semblent être juste des pointeurs.
Regarde un peu ici si tu veux plus d'aide :
http://cui.unige.ch/DI/cours/1840/tips/asm/int21.html
Bonne soirée.
mitchlegeek
Messages postés
6
Date d'inscription
vendredi 28 décembre 2007
Statut
Membre
Dernière intervention
3 janvier 2008
3
31 déc. 2007 à 03:59
31 déc. 2007 à 03:59
Merci beaucoup
J'ai fait quelques progrès....maintenant quand je compile mon prog ca me recopie bien le contenu du fichier1 ( yataaa ! ) mais après je me tape 500 lignes de textes "inbouffable" juste à la suite...en voici un extrait ( âme sensible s'abstenir ) :
_______________________________________________________________________________
petit Error ouvr mode lectur Error ouvr mode ecriture Error ecriture Error lecture
p@ tx pRU b2ûRŽ $ ` 8 „ L p f parameter$bad A20 on parameter$bad switch parameter$insufficient extended memory$cannot create FRET$cannot create linear address space$cannot create system linear space$cannot copy kernel to high memory$undefined error$unable to copy DOSX$unable to copy IDT$unable to create int chain table$unable to create PM stack$unable to initialize swapping$à!ààààààààààààóóóóóóóóóàóóóààà8óM`s“à: $unrecognized error$internal error$out of memory$out of selectors$out of internal tables$invalid dynamic link$couldn't open file$invalid exe format$wrong version$cannot initialize$DLL initialization error$,-@@L,,,,,,,,,,,LLarLƒLL“L®ÂLLLL ™ ¡ & & & & $needs at least 286$can't find $unexpected DOS error$file not found: $path not found: $access denied: $not enough memory to load $invalid environment$invalid file $
$ÏêK3Ïê SR¸#5Í!.‰Õ.Œ×¸#%ºÓÍ!¸5Í!.‰Û.ŒÝ¸%ºÙÍ!Z[ÃSR.¡Û.ÝÀt(¸%.‹Û.ŽÝÍ!¸#%.‹Õ.Ž×Í!3À.£Û.£ÝZ[Ãû¸ 3Í!.ˆX¸3² Í!Ã.ŠX€úût¸3Í!.ÆXûù& ƒÁÁéŒÀŒË+ØÙ¸ JÍ!séxè@ÿè·ÿ÷â t¡àèNø= tè5ën÷â t%ŒØŽÀ»FºT¸ KÍ!séD¸ MÍ!= tèä ëBèÿ¸Bû»‹àÍ/= u
‹Â=ÿÿtèà ¸ÿ ÷â tP¸Bû»Í/XPèøþèFÿX´LÍ!èíþè;ÿ¸ÿLÍ!÷à u‹ò¹ÿÿü¬<$t< tâõ÷Ùƒé» ¸ @Í!Ã0123456789ABCDEFXXXP‹ûƒÇ3Û¹ ‹Øƒã.ŠŸ\ˆOÁèâîè¦ÿXÃPºè»ôèÔÿºÝè”ÿ[Sãÿ Ñã‹—¬è…ÿ[ãÿ Ñã‹—ìƒú tèrÿºÐèlÿÃPº»è›ÿºÝè[ÿ[ãÿ Ñã‹—èMÿºÐèGÿÃPºú»èvÿºÝè6ÿ[ãÿÑã‹— è(ÿºÐè"ÿø èwÿé
ÿ ènÿéÿC:\DOCUME~M G EMI~1\BUREACOMSPEC=C:\WINDOWS\SYSTEM32\COMMAND.COM ALLUSERSPROFILE=C:\DOCUME~1\ALLUSE~1 APPDATA=C:\DOCUME~1\PCDEMI~1\APPLIC~1 CLIENTNAME=Console COMMONPROGRAMFILES=C:\PROGRA~1\FICHIE~1 COMPUTERNAME=TOSHIBA FP_NO_HOST_CHECK=NO HOMEDRIVE=C: HOMEPATH=\Documents and Settings\PC de Mitch LOGONSERVER=\\TOSHIBA NUMBER_OF_PROCESSORS=2 OS=Windows_NT PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\PROGRA~1\Autodesk\BACKBU~1\;C:\PROGRA~1\FICHIE~1\GTK\2.0\bin PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH PROCESSOR_ARCHITECTURE=x86 PROCESSOR_IDENTIFIER=x86 Family 6 Model 15 Stepping 6, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=0f06 PROGRAMFILES=C:\PROGRA~1 PROMPT=$P$G PYTHONPATH=C:\windows\system32\python24.zip;C:\python24;C:\python24DLLs;C:\python24\lib;C:\python24\lib\plat-win;C:\python24\lib\lib-tk;C:\python24\lib\site-packages SESSIONNAME=Console SYSTEMDRIVE=C: SYSTEMROOT=C:\WINDOWS TEMP=C:\WINDOWS\TEMP TMP=C:\WINDOWS\TEMP USERDOMAIN=TOSHIBA USERNAME=PC de Mitch USERPROFILE=C:\DOCUME~1\PCDEMI~1 BLASTER=A220 I5 D1 P330 T3 C:\DOCUME~1\PCDEMI~1\BUREAU\COURSI~1\ARCHIT~1\PROJET~1\TDETTASM\rtm.exe R3í±è_<M ªtNrtm t <eÍ õ šðþðoÓ‡V3Rÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡2j¹â Kÿÿÿÿ Í!Ë V TEST OBJ /v test.obj
sm
A0
sse de port d'E/S de base SB non valide. Par exemple :
Ÿ 0123456789ABCDEFS‹ØƒãIãÑêÑØÑêÑØÑêÑØÑêÑØèäÿ.Š— ¸ Í![ÃPQR¹ èÏÿZYXÃPQR¹ èÂÿZYXÃPQR¹ èµÿZYXÃã PQRè©ÿZYXø ŽØ¸´ » ŽÐ‹ã‰& &¡ ŽÀ&; té” œë{RTM loader version 1.5 Copyright (c) 1990-94 Borland International
This loader is invoked and required by Borland tools
$PRº– ¸ Í!ZX¸ LÍ!&> 16té`ÿ&>STtéTÿ&>UBtéHÿ.Œ Œ Œ Œ Œ »}%+ ¸ JÍ!è\s°%éuŒ
Œ Œ Œ ŒË¸
Í1£ Ž &Œ ¹}%éõ ‹ÙÁëÁá¸Í1s¸ é4‰ ‰ ‰> ‰6 ¸ ¹ Í1s¸ é£ £ £ £" ¸ ‹ ËÁéƒÉ
Í1¸ ‹ ‹ ‹ Í1‹ Í1ºCêõ ‹ÊÁéÁ⸠‹ Í1¸ ‹ ºCêõ B‹ÊÁéÁâƒêƒÙ Í1‹ Í1¸ ‹ º}%êCB‹ÊÁéÁâƒêƒÙ Í1¸ ‹ º´ ê B‹ÊÁéÁâƒêƒÙ Í1èT Ž ¹ ¾ ¿ð(üó¥èC»õ + ¸ JÍ!è`hÒÿ6 h ÿ6 Ë= uèèjºõ + ¸ 1Í!° ´LÍ!¸ ‹" ºÿÿ¹ Í1ºõ ‹ÊÁéÁ⸠‹" Í1¹Céõ ÁáüŽ Ž" 3ö3ÿó¥ºC‹ÊÁéÁ⸠‹" Í1¹}%éCÁᎠŽ" 3ö3ÿó¥Ã0123456789ABCDEFS‹ØƒãIãÑêÑØÑêÑØÑêÑØÑêÑØèäÿ.Š—a¸ Í![ÃPQR¹ èÏÿZYXÃPQR¹ èÂÿZYXÃPQR¹ èµÿZYXÃã PQRè©ÿZYXø‡Í/= téƒ Œv ‰>t …öt@SQR¸+¹EDºQSÍ!<ÿtÆÿæÿý¸ XÍ!P» ¸XÍ!‹Þ¸ HÍ![œP¸XÍ!XZY[r;ŽÀ3Àÿt r3¸Í1‰z ‰x ‰6~ ‰>| ¸Í1£€ ‰„ ‰‚ ‰6ˆ ‰>† øÃùÃùÃùÃWP‹>Š¸ ÿ† ¡€ ŠX_ËWP‹>Œ¸ ÿ‚ ¡€ ŒX_ËWP‹>ŠÿŠ t¡€ )Š+ø¸ ÿ† X_ËWP‹>ŒÿŠt¡€ )Œ+ø¸ ÿ‚ X_ËU‹ì.Ž èxÿ£Ž‰‰’‰”‰>–‰6˜‹F £š‹F£œ‹F£ž‹F‹N
‹V‹^¾[¿)ÿ.| PPU‹ìP¸ ŽØè‚ÿ¡Ž‰Fü‹‹’‹”‹>–‹6˜¡š‰F ¡œ‰F¡ž‰FX]ËU‹ìh è ÿ£Ž‰‰’‰”‰>–‰6˜‹F £š‹F£œ‹F£ž‹F‹N
‹V‹^‹6 ¿´ÿ.x PPU‹ìP.Ž èÔþ¡Ž‰Fü‹‹’‹”‹>–‹6˜¡š‰F ¡œ‰F¡ž‰FX]ËP‹Äÿ6 hÿ6 ÿ6 ÿ6 PèÏþXø ¿$ ÿ† ÃP‹Äÿ6 h;ÿ6 ÿ6
ÿ6 Pè.ÿXÃVWPQRSè—þVWPQRSèÿË=t
=Bûuéé êŒ÷ uõRPº~¸ Í!XZ¹ ÏYou have attempted to run Windows in enhanced mode while
running in a shell under a protected mode program. This
is not a compatible configuration. Run Windows in standard
[........vous multipliez ça par 5 à peu près....]
_____________________________________________________________________
NB : "petit" est le mot que je voulais recopier ( cf. début de ce texte )
J'ai fait quelques progrès....maintenant quand je compile mon prog ca me recopie bien le contenu du fichier1 ( yataaa ! ) mais après je me tape 500 lignes de textes "inbouffable" juste à la suite...en voici un extrait ( âme sensible s'abstenir ) :
_______________________________________________________________________________
petit Error ouvr mode lectur Error ouvr mode ecriture Error ecriture Error lecture
p@ tx pRU b2ûRŽ $ ` 8 „ L p f parameter$bad A20 on parameter$bad switch parameter$insufficient extended memory$cannot create FRET$cannot create linear address space$cannot create system linear space$cannot copy kernel to high memory$undefined error$unable to copy DOSX$unable to copy IDT$unable to create int chain table$unable to create PM stack$unable to initialize swapping$à!ààààààààààààóóóóóóóóóàóóóààà8óM`s“à: $unrecognized error$internal error$out of memory$out of selectors$out of internal tables$invalid dynamic link$couldn't open file$invalid exe format$wrong version$cannot initialize$DLL initialization error$,-@@L,,,,,,,,,,,LLarLƒLL“L®ÂLLLL ™ ¡ & & & & $needs at least 286$can't find $unexpected DOS error$file not found: $path not found: $access denied: $not enough memory to load $invalid environment$invalid file $
$ÏêK3Ïê SR¸#5Í!.‰Õ.Œ×¸#%ºÓÍ!¸5Í!.‰Û.ŒÝ¸%ºÙÍ!Z[ÃSR.¡Û.ÝÀt(¸%.‹Û.ŽÝÍ!¸#%.‹Õ.Ž×Í!3À.£Û.£ÝZ[Ãû¸ 3Í!.ˆX¸3² Í!Ã.ŠX€úût¸3Í!.ÆXûù& ƒÁÁéŒÀŒË+ØÙ¸ JÍ!séxè@ÿè·ÿ÷â t¡àèNø= tè5ën÷â t%ŒØŽÀ»FºT¸ KÍ!séD¸ MÍ!= tèä ëBèÿ¸Bû»‹àÍ/= u
‹Â=ÿÿtèà ¸ÿ ÷â tP¸Bû»Í/XPèøþèFÿX´LÍ!èíþè;ÿ¸ÿLÍ!÷à u‹ò¹ÿÿü¬<$t< tâõ÷Ùƒé» ¸ @Í!Ã0123456789ABCDEFXXXP‹ûƒÇ3Û¹ ‹Øƒã.ŠŸ\ˆOÁèâîè¦ÿXÃPºè»ôèÔÿºÝè”ÿ[Sãÿ Ñã‹—¬è…ÿ[ãÿ Ñã‹—ìƒú tèrÿºÐèlÿÃPº»è›ÿºÝè[ÿ[ãÿ Ñã‹—èMÿºÐèGÿÃPºú»èvÿºÝè6ÿ[ãÿÑã‹— è(ÿºÐè"ÿø èwÿé
ÿ ènÿéÿC:\DOCUME~M G EMI~1\BUREACOMSPEC=C:\WINDOWS\SYSTEM32\COMMAND.COM ALLUSERSPROFILE=C:\DOCUME~1\ALLUSE~1 APPDATA=C:\DOCUME~1\PCDEMI~1\APPLIC~1 CLIENTNAME=Console COMMONPROGRAMFILES=C:\PROGRA~1\FICHIE~1 COMPUTERNAME=TOSHIBA FP_NO_HOST_CHECK=NO HOMEDRIVE=C: HOMEPATH=\Documents and Settings\PC de Mitch LOGONSERVER=\\TOSHIBA NUMBER_OF_PROCESSORS=2 OS=Windows_NT PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\PROGRA~1\Autodesk\BACKBU~1\;C:\PROGRA~1\FICHIE~1\GTK\2.0\bin PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH PROCESSOR_ARCHITECTURE=x86 PROCESSOR_IDENTIFIER=x86 Family 6 Model 15 Stepping 6, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=0f06 PROGRAMFILES=C:\PROGRA~1 PROMPT=$P$G PYTHONPATH=C:\windows\system32\python24.zip;C:\python24;C:\python24DLLs;C:\python24\lib;C:\python24\lib\plat-win;C:\python24\lib\lib-tk;C:\python24\lib\site-packages SESSIONNAME=Console SYSTEMDRIVE=C: SYSTEMROOT=C:\WINDOWS TEMP=C:\WINDOWS\TEMP TMP=C:\WINDOWS\TEMP USERDOMAIN=TOSHIBA USERNAME=PC de Mitch USERPROFILE=C:\DOCUME~1\PCDEMI~1 BLASTER=A220 I5 D1 P330 T3 C:\DOCUME~1\PCDEMI~1\BUREAU\COURSI~1\ARCHIT~1\PROJET~1\TDETTASM\rtm.exe R3í±è_<M ªtNrtm t <eÍ õ šðþðoÓ‡V3Rÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡2j¹â Kÿÿÿÿ Í!Ë V TEST OBJ /v test.obj
sm
A0
sse de port d'E/S de base SB non valide. Par exemple :
Ÿ 0123456789ABCDEFS‹ØƒãIãÑêÑØÑêÑØÑêÑØÑêÑØèäÿ.Š— ¸ Í![ÃPQR¹ èÏÿZYXÃPQR¹ èÂÿZYXÃPQR¹ èµÿZYXÃã PQRè©ÿZYXø ŽØ¸´ » ŽÐ‹ã‰& &¡ ŽÀ&; té” œë{RTM loader version 1.5 Copyright (c) 1990-94 Borland International
This loader is invoked and required by Borland tools
$PRº– ¸ Í!ZX¸ LÍ!&> 16té`ÿ&>STtéTÿ&>UBtéHÿ.Œ Œ Œ Œ Œ »}%+ ¸ JÍ!è\s°%éuŒ
Œ Œ Œ ŒË¸
Í1£ Ž &Œ ¹}%éõ ‹ÙÁëÁá¸Í1s¸ é4‰ ‰ ‰> ‰6 ¸ ¹ Í1s¸ é£ £ £ £" ¸ ‹ ËÁéƒÉ
Í1¸ ‹ ‹ ‹ Í1‹ Í1ºCêõ ‹ÊÁéÁ⸠‹ Í1¸ ‹ ºCêõ B‹ÊÁéÁâƒêƒÙ Í1‹ Í1¸ ‹ º}%êCB‹ÊÁéÁâƒêƒÙ Í1¸ ‹ º´ ê B‹ÊÁéÁâƒêƒÙ Í1èT Ž ¹ ¾ ¿ð(üó¥èC»õ + ¸ JÍ!è`hÒÿ6 h ÿ6 Ë= uèèjºõ + ¸ 1Í!° ´LÍ!¸ ‹" ºÿÿ¹ Í1ºõ ‹ÊÁéÁ⸠‹" Í1¹Céõ ÁáüŽ Ž" 3ö3ÿó¥ºC‹ÊÁéÁ⸠‹" Í1¹}%éCÁᎠŽ" 3ö3ÿó¥Ã0123456789ABCDEFS‹ØƒãIãÑêÑØÑêÑØÑêÑØÑêÑØèäÿ.Š—a¸ Í![ÃPQR¹ èÏÿZYXÃPQR¹ èÂÿZYXÃPQR¹ èµÿZYXÃã PQRè©ÿZYXø‡Í/= téƒ Œv ‰>t …öt@SQR¸+¹EDºQSÍ!<ÿtÆÿæÿý¸ XÍ!P» ¸XÍ!‹Þ¸ HÍ![œP¸XÍ!XZY[r;ŽÀ3Àÿt r3¸Í1‰z ‰x ‰6~ ‰>| ¸Í1£€ ‰„ ‰‚ ‰6ˆ ‰>† øÃùÃùÃùÃWP‹>Š¸ ÿ† ¡€ ŠX_ËWP‹>Œ¸ ÿ‚ ¡€ ŒX_ËWP‹>ŠÿŠ t¡€ )Š+ø¸ ÿ† X_ËWP‹>ŒÿŠt¡€ )Œ+ø¸ ÿ‚ X_ËU‹ì.Ž èxÿ£Ž‰‰’‰”‰>–‰6˜‹F £š‹F£œ‹F£ž‹F‹N
‹V‹^¾[¿)ÿ.| PPU‹ìP¸ ŽØè‚ÿ¡Ž‰Fü‹‹’‹”‹>–‹6˜¡š‰F ¡œ‰F¡ž‰FX]ËU‹ìh è ÿ£Ž‰‰’‰”‰>–‰6˜‹F £š‹F£œ‹F£ž‹F‹N
‹V‹^‹6 ¿´ÿ.x PPU‹ìP.Ž èÔþ¡Ž‰Fü‹‹’‹”‹>–‹6˜¡š‰F ¡œ‰F¡ž‰FX]ËP‹Äÿ6 hÿ6 ÿ6 ÿ6 PèÏþXø ¿$ ÿ† ÃP‹Äÿ6 h;ÿ6 ÿ6
ÿ6 Pè.ÿXÃVWPQRSè—þVWPQRSèÿË=t
=Bûuéé êŒ÷ uõRPº~¸ Í!XZ¹ ÏYou have attempted to run Windows in enhanced mode while
running in a shell under a protected mode program. This
is not a compatible configuration. Run Windows in standard
[........vous multipliez ça par 5 à peu près....]
_____________________________________________________________________
NB : "petit" est le mot que je voulais recopier ( cf. début de ce texte )
juanpablo
Messages postés
142
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
16 juin 2008
10
31 déc. 2007 à 12:27
31 déc. 2007 à 12:27
salut
il faut bien comprendre que ' tampon' est la zone mémoire où tu lis et ecris, il faut tout definir en assembleur
ton probleme c'est que tu lis dans tans 'tampon' mais tu ecris a partir de tampon2 donc il est vide ! utilises un seul tampon
autres remarques
5 dup (?) te definit une zone de seulement 5 octects , prends plus , 200 par exemple pour avoir quelques lignes de texte
il faudrait ensuite recopier un nbre d'octects selon la longueur du fichier et non pas un nombre imposée (ici tout le tampon) attend toi a avoir des caracteres bizarres apres la zone correctement copiée
il faut bien comprendre que ' tampon' est la zone mémoire où tu lis et ecris, il faut tout definir en assembleur
ton probleme c'est que tu lis dans tans 'tampon' mais tu ecris a partir de tampon2 donc il est vide ! utilises un seul tampon
autres remarques
5 dup (?) te definit une zone de seulement 5 octects , prends plus , 200 par exemple pour avoir quelques lignes de texte
il faudrait ensuite recopier un nbre d'octects selon la longueur du fichier et non pas un nombre imposée (ici tout le tampon) attend toi a avoir des caracteres bizarres apres la zone correctement copiée
ekra
Messages postés
1870
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
24 juillet 2014
342
31 déc. 2007 à 11:10
31 déc. 2007 à 11:10
Apparrement ton ouverture en lecture et en écriture ont échouées comme on le voit dans le début du message.
Vérifie bien les valeurs des modes d'ouverture et sinon vérifie bien que l'utilisateur est autorisé à écrire dans ce fichier.
Tu peux tester les valeurs de retour des registre AX (ou les afficher) pour savoir quel est le type d'erreur retourné.
Bye.
Vérifie bien les valeurs des modes d'ouverture et sinon vérifie bien que l'utilisateur est autorisé à écrire dans ce fichier.
Tu peux tester les valeurs de retour des registre AX (ou les afficher) pour savoir quel est le type d'erreur retourné.
Bye.
Petite mise à jour des différentes modifications ^^
1) Nouvelle macro :
;
;fermeture de fichier
macro ferme handle
mov bx, [handle]
mov ah, 3eh
int 21h
jmp fin
endm
2) "Nouveau" prog
; Manipulation de fichier en ASM
; Nom du fichier : Test.asm
; Date d’ecriture : 30 Dec. 2007
; Objet : Programme ouvrant un fihier, le lisant,
; et le recopiant dans un 2eme fichier
ideal
model small
stack 200h
include "Nmacros.asm"
dataseg
fich1 db 'fic1.txt', 00
fich2 db 'fic2.txt', 00
handle1 dw ?
handle2 dw ?
tampon db 200 dup (?),0
mess1 db 'Error ouvr mode lectur'
lmess1 dw $-mess1
mess2 db 'Error ouvr mode ecriture'
lmess2 dw $-mess2
mess3 db 'Error ecriture'
lmess3 dw $-mess3
mess4 db 'Error lecture'
lmess4 dw $-mess4
codeseg
debut:
init
ouvrfichl fich1
lectfich handle1,tampon, 5
ouvrfiche fich2
ecrifich handle2, tampon, 5
ferme handle1
ferme handle2
jmp fin
;......erreurs !!!.....................................
err_1m:
ecrire [lmess1], mess1
ferme handle1
errlec1:
ecrire [lmess2], mess2
ferme handle1
errecr2:
ecrire [lmess3], mess3
ferme handle2
errouv2:
ecrire [lmess4], mess4
ferme handle2
;.......................................................
fin:
exit
end debut
_______________________________________________________
Voili voilou ^^
A l'éxécution j'ai bien mon mot du fich1 recopié ( yataa ) mais toujours ce texte inbouffable à la suite...
Je sais, suis chiant...mais vous me faites avancer alors j'continue à vous demander :)
1) Nouvelle macro :
;
;fermeture de fichier
macro ferme handle
mov bx, [handle]
mov ah, 3eh
int 21h
jmp fin
endm
2) "Nouveau" prog
; Manipulation de fichier en ASM
; Nom du fichier : Test.asm
; Date d’ecriture : 30 Dec. 2007
; Objet : Programme ouvrant un fihier, le lisant,
; et le recopiant dans un 2eme fichier
ideal
model small
stack 200h
include "Nmacros.asm"
dataseg
fich1 db 'fic1.txt', 00
fich2 db 'fic2.txt', 00
handle1 dw ?
handle2 dw ?
tampon db 200 dup (?),0
mess1 db 'Error ouvr mode lectur'
lmess1 dw $-mess1
mess2 db 'Error ouvr mode ecriture'
lmess2 dw $-mess2
mess3 db 'Error ecriture'
lmess3 dw $-mess3
mess4 db 'Error lecture'
lmess4 dw $-mess4
codeseg
debut:
init
ouvrfichl fich1
lectfich handle1,tampon, 5
ouvrfiche fich2
ecrifich handle2, tampon, 5
ferme handle1
ferme handle2
jmp fin
;......erreurs !!!.....................................
err_1m:
ecrire [lmess1], mess1
ferme handle1
errlec1:
ecrire [lmess2], mess2
ferme handle1
errecr2:
ecrire [lmess3], mess3
ferme handle2
errouv2:
ecrire [lmess4], mess4
ferme handle2
;.......................................................
fin:
exit
end debut
_______________________________________________________
Voili voilou ^^
A l'éxécution j'ai bien mon mot du fich1 recopié ( yataa ) mais toujours ce texte inbouffable à la suite...
Je sais, suis chiant...mais vous me faites avancer alors j'continue à vous demander :)
juanpablo
Messages postés
142
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
16 juin 2008
10
2 janv. 2008 à 03:35
2 janv. 2008 à 03:35
bonjour , bonne année
pas de probleme , si on vient ici c'est pour trouver de l'aide ou en apporter si on peut
la macro ferme force un saut à fin il faut le supprimer
de ce fait la ligne
ferme handle1
envoie le programme à fin et on ne passe jamais par
ferme handle2
le fichier ecrit n'est toujours pas fermé
ce code place le pointeur en fin de fichier donc donne la longueur du fichier en ax (pour taille < 64k ) puis le remet en debut
mov bx,[ handle]
sub cx, cx
sub dx, dx
mov ax, 4202h
int 21h
mov [taille],ax
sub cx,cx
sub dx,dx
mov ax, 4200h
int 21h
placé apres l'ouverture du premier fichier ça met dans la variable
taille dw ?
le nbre d'octets du fichier
si on remplace le 5 par taille ça marche pour des fichiers ou on change 'petit' par autre chose, tant que le tampon est assez grand !
bonne continuation
pas de probleme , si on vient ici c'est pour trouver de l'aide ou en apporter si on peut
la macro ferme force un saut à fin il faut le supprimer
de ce fait la ligne
ferme handle1
envoie le programme à fin et on ne passe jamais par
ferme handle2
le fichier ecrit n'est toujours pas fermé
ce code place le pointeur en fin de fichier donc donne la longueur du fichier en ax (pour taille < 64k ) puis le remet en debut
mov bx,[ handle]
sub cx, cx
sub dx, dx
mov ax, 4202h
int 21h
mov [taille],ax
sub cx,cx
sub dx,dx
mov ax, 4200h
int 21h
placé apres l'ouverture du premier fichier ça met dans la variable
taille dw ?
le nbre d'octets du fichier
si on remplace le 5 par taille ça marche pour des fichiers ou on change 'petit' par autre chose, tant que le tampon est assez grand !
bonne continuation
mitchlegeek
Messages postés
6
Date d'inscription
vendredi 28 décembre 2007
Statut
Membre
Dernière intervention
3 janvier 2008
3
3 janv. 2008 à 23:24
3 janv. 2008 à 23:24
Je sais pas pour toi mais moi je compile via l'invité de commande windows...avec un compile.bat à base de Tlink et Tasm.
Pour les macros...Bien je sais pas...vous avez bien créé le fichier Nmacros.asm, le fichier fic1.txt avec un texte dedans ?....le fic2.txt de destination ?
Qu'est ce qui ne fonctionne pas exactement ?
Pour les macros...Bien je sais pas...vous avez bien créé le fichier Nmacros.asm, le fichier fic1.txt avec un texte dedans ?....le fic2.txt de destination ?
Qu'est ce qui ne fonctionne pas exactement ?
Rocksy
Messages postés
509
Date d'inscription
mercredi 14 novembre 2007
Statut
Membre
Dernière intervention
31 décembre 2007
73
28 déc. 2007 à 18:34
28 déc. 2007 à 18:34
Bonjour,
Le fichier texte sert juste à éditer, écrire et/ou modifier des routines en Assembler. Il faut ensuite le compiler grace à un compilateur pour le transformer en language machine.
Initiation à l'Assembler :
https://www.commentcamarche.net/contents/15-introduction-a-l-assembleur
https://asm.developpez.com/intro/
@+
Le fichier texte sert juste à éditer, écrire et/ou modifier des routines en Assembler. Il faut ensuite le compiler grace à un compilateur pour le transformer en language machine.
Initiation à l'Assembler :
https://www.commentcamarche.net/contents/15-introduction-a-l-assembleur
https://asm.developpez.com/intro/
@+