C´est normal, le service DOS que tu appelles veut un $ pour terminer les chaînes rien d´autre.
Oui, mais en utilisant un ´$´ j´obtiens le problème que j´évoquais précédement.
Sparce que tu quittes pas proprement. Quand j´essayais la même chose sans mettre le code pour quitter, il buguait.
Tiens voilà :
[BITS 16]
[ORG 0100h]
[SECTION . text]
START:
mov dx, msg
mov ah, 9
int 21h
mov ax, 04C00h
int 21h
[SECTION . data]
msg db " Hello ! ", 13, 10, " $"
; ;;
Celui là fonctionne. Tu vois aussi la partie où le programme appelle DOS pour lui dire de quitter le programme. Sans cette partie, y´a une segmentation fault ( comment traduire en Français Windozien ? ). Et si je remplace le " $" par un 0, comme le service de DOS attend un $ pour finir la chaîne, il continue et affiche une grosse zone de mémoire à l´écran.
Tu sais tout ![]()
Arf je pouvais pas savoir, j´code ( on va dire) en ASM sur win32. ^^
T´as un exemple de helloworld ?
; ****************************
. 386
. model flat,stdcall
option casemap:none
; ****************************
include windows.inc
include user32.inc
include kernel32.inc
includelib user32.lib
includelib kernel32.lib
; ****************************Include
. data
text BYTE "Oué Hello weurld ! ",0
caption BYTE "Le caption ! !!!",0
; ****************************Data
. data?
; ****************************Data?
. code
code:
invoke MessageBox,NULL, addr text , addr caption , MB_OK
xor eax,eax
invoke ExitProcess,eax
; ****************************Code
end code
J´vais pas te créer un fenetre avec CreateClassMachin sinon on est pas sorti du bois . .. ![]()
Lol okay ![]()
( Surtout que je connais pas toute les foutues lignes parcoeur . .. créer une fenetre c´est un 20aine de ligne
)
Merci à tous, je teesterais ca dès que je serais chez moi ![]()
Bonjour à tous.
Je me suis récemment mis à l´assembleur. Mes connaissances approchent donc le zéro absolu.
J´aimerais, pour l´instant, n´avoir que quelque précision.
On dit que l´assembleur est directement compréhensible par le processeur.
Que cela veut-il dire ? Qu´il suffit de tapper son code dans un . txt et de le renommer en . exe ?
En fait je sais déjà que non... Mais alors de quelle façon est-il directement compris par le processeur ?
Un compilateur C/C++ transforme bien le code de haut niveau en assembleur, non ?
Le compilateur optimise le code. Mais qu´entends-on par optimisation ? Optimisation de place, de rapidité ou un bon compromis entre les deux ?
J´ai souvent vu des types se battre pendant des semaines entières sur des forums pour savoir quelle opértation est la plus rapide.
( i * 2) ou i < < 2
S´il y a deux opération possible, cela veut-il dire que le compilateur utilisera deux instructions différentes ? ( genre ou MUL ou SHL)
Et pour finir connaissez-vous un programme gratuit qui puisse calculer le nombre de cycle effectué par un programme en assembleur ? ( Je sais que cela n´est pas très utile puisque je débute mais je suis perfectionniste ( en tout cas pour ça))
Merci.
un assembleur ( i.e. masm ou autre) convertit directement les mnémonique ( genre push mov ou jmp) en code hexa qui eur correspond. c´est ces codes héxa que le processeur comprend directement.
mais contrairement à un compilateur c++ qui fait un gros travail de fond, l´assembleur ne fait que s´occuper des label, des nom de variables et quelques petit autres trucs qui simplifie la tache du programmeur.
Mais quand tu tape un programme en asm tu peut savoir exactement quel tête il aura une fois assemblé ( ce qui n´est pas le cas du C par exemple).
quand on optimise on choisit ce qu´on veut optimiser justement, si on se concentre sur la vitesse ( dans ce cas là, on peut ( mais ce n´est pas toujours le mieux) inliner toute les fonction) ou alors sur la place ( dans ce cas là c´est el cotnraire) etc...
pour le i*2 ou i<<2 en c++ ça revient au même car un bon compilo mettra automatiquement ce qui prendra le moisn de cycle surle processeur que tu utilise ( et selon le contexte) le seul truc c´est qu´avec i<<2 tu risque de l´étonner.
mais effectivemtn les 2 instructions ont un équivalent en asm qui est équivalent.
Mais bon, il y a souvent plusieurs manière de faire les chose.
par exemple pour mettre ta variables à zéro, pourquoi ne pas faire
mov eax,o ?
ben, parce que
xor eax,eax est moins gourmand en mémoire et en temps ( à vérifier dans la doc intel pour le temps).
pour ta dernière question, je n´en connait pas, même si un débogueur fait un peu ça.
mais bon, il vaut mieux utiliser un traceur, enfin comme tu dit, concentre toi sur le langage, tu optimisera à mort après...
si j´ai bien compris mes trois lectures sur le sujet , l´asm depend du processeur , mais en gros tout le monde utilise l´asm d´intel puisqu´amd l´utilise aussi pour ses processeurs . .. ?
mais tout ca , pour les 32 bits .
Par contre , je crois qu´amd a lance y a pas longtemps un processeur à 64 bits , l´asm est-il different pour ce processeur ?
si oui , vaut-il encore le coup de ce lancer dans l´asm 32 bits , sachant que les processeurs 64 bits arrivent ? ou bien les 64 bits ne serrvent à rien , et ne perceront jamais le marché ? ou bien on n´en sais strictement rien , personne ne peut voir le futur ![]()
Bah je suis pas un pro, mais je crois que les base 32bits -> 64bits sont les mêmes. C´est pas ocmme le passage de 16bits à 32bits. ( Mode Réel -> Protégé )
Moi quand j´ai commencé ( bein je commence en fais ) je faisais du 16bits ( le AoA parle seulement du 16bits avec MS-DOS ) .
apprend le 32bit i86 ( intel normal quoi) sinon tu ne pourra même pas essayer tes programme.
les pentium compatible on encore de beau jours devant eux.
pour ce qui est de l´AMD, ils utilisent juste les même jeux d´instruction qu´Intel, donc ce sont à quelques toute petite différence les même code pour les i86 et les proco AMD.
Mais il y a plein d´autre sorte de proco ( motorola 68k, PIC en tout genre entre autre, mais intel lui même et AMD font toutes sorte de proco différent en 32 et 64bit) avec d´autre asm.
pour le 16bit, le problème c´est qu´avec XP ya pas mal de chose qui sont pas complétement possible même en mode virtuel ( un émulateur de mode réel en mode protégé).
ok merci , de toute facon l´asm c´est pas pour tout de suite , je perfectionne mon c++ d´abord ^^
en fait , c t pour craquer des programmes , je crois qu´on peut ouvrir un programme compile dans un desassembleur et voir ainsi le code asm pour le modifier . ..
Attention , tout cela dans un but louable hein ^^ je fais les challenges d´un site de hacking - crak etc . .. vous le connaissez deja en fait.
deja 16 points ? !
Bah il faut un bon niveau en ASM avant de s´attaqué au RE . ..
J´ai pas lu tout le topic pcq je ne m´interesse pas à l´asm mais prograammant en turbo pascal j´en ai parfois besoin alors je viens voir les connaisseurs...
J´aauraiis juste besoin de savoir comment éteindre le pc. Soit en entrant la commande dos shutdown -l soit en tappant directement votre " charabia" incompréhensible ![]()
Ouais ouais on aide pas les fabricant de virus.