Copy Link
Add to Bookmark
Report

PGK Issue 9

eZine's profile picture
Published in 
PGK
 · 11 Oct 2020

  

******************************************************************************
************************P.G.K nø9: Novembre 99 version 1.1********************
******************************************************************************

ÜßßßßßßßßßßßßßßÜ ÜßßßßßßßßßßßßßßÜÜßßßßßßßßÜ ÜßßßßßßßßßÜ
Û ÛÛÛÛÛÛÜÜÛÛÛÛÜ ßÜÜß ÜÛÛÛÛÜÜÛÛÛÛÛÛ ÛÛ ÛÛÛÛÛÛ Û Üß ÛÛÛÛÛÛÛ Û
Û ÛÛ²²ÛÛÛÛÛÛ²ÛÛÛ ÛÛ ÛÛÛ²ÛÛÛÛÛÛ²²ÛÛ ÛÛ ÛÛ²²ÛÛ Û Üß Û²²²²²Û Üß
Û Û²²Û²Ûß Û²Û²ÛÛ ÛÛ ÛÛ²Û²Û ßÛ²Û²²Û ÛÛ Û²²Û²Û ÛÜß Û²±²²²Û Üß
Û Û±²²ÛÛ Û±²²²Û ÛÛ Û²²²±Û ÛÛ²²±Û ÛÛ Û±²²ÛÛ Ûß Û±²²±²Û Üß
Û Û²²±²Û Û²±±²Û ÛÛ Û²±±²Û Û²±²²Û ÛÛ Û²²±²Û ß Û±²±²²Û Üß
Û Û±²±±Û Û±±²±Û ÛÛ Û±²±±Û Û±±²±Û ÛÛ Û±²±±Û Û±±²±±Û Üß
Û Û±±²²Û Û²±±²Û ÛÛ Û²±±²Û Û²²±±Û ÛÛ Û±±²²Û Û±±±±±Û Üß
Û Û²±±±Û Û±°±±Û ÛÛ Û±±°±Û Û±±±²Û ÛÛ Û²±±±ÛÛ±±°±±Û Üß
Û Û±°±²Û Û°±±°Û ÛÛ Û°±±°Û Û²±±°Û ÛÛ Û°±±²ÛÛ±°±±±Û ßÜ
Û Û±±°±ÛÛÜÛ°°°±Û ÛÛ Û±°°°ÛÜÛÛ±°±±Û ÛÛ Û±±°±Û Û°°±°±Û ßÜ
Û Û±°±°ÛßÛÛÛßßß ÜßßÜ ßßßÛÛÛßÛ±±°±Û ÛÛ Û±°±°Û Û±°±±°Û ßÜ
Û Û°°°°Û ÜÜÜÜßßß Û ÜÜÜÜÜÜ Û±°±°Û ÛÛ Û°°°°Û Ü Û°±°°°Û ßÜ
Û Û°±°°Û Û Û Û±±°±Û Û°°°°Û ÛÛ Û°±°°Û ÛÜ Û°°±°°Û ßÜ
Û Û°°°°Û Û Û Û°±±°Û Û°±°°Û ÛÛ Û°°°°Û ÛßÜ Û°°°°°Û ßÜ
Û Û°°°°Û Û Û Û±°°°ßßßß°°°°Û ÛÛ Û°°°°Û Û ßÜ Û°°°°°Û ßÜ
Û ÛÜÜÜÜÛ Û ßÜ ßßßÛÜÜÜÜÜÜÜÜÛ ÛÛ ÛÜÜÜÜÛ Û ßÜ ÛÜÜÜÜÜÛ Û
ßÜÜÜÜÜÜÜÜß ßßßÜÜÜÜÜÜÜÜÜÜÜÜßßÜÜÜÜÜÜÜÜß ßÜÜÜÜÜÜÜÜÜß

w w w . m u l t i m a n i a . c o m / p g k

Asphyx


"Travailler pour un P.G.K. meilleur, c'est travailler
pour un monde meilleur!"
Bug-in


******************************************************************************
**********************************Disclaimer**********************************
******************************************************************************

Quelles que soient les conneries que vous pourriez faire suite … la lecture
de cet e-zine ou … la consultation du site de Pretty Good Keys (www.multimania
.com/pgk), les deux principaux auteurs que sont NONO (nono_18_02@hotmail.com)
et Johann__3 (johann__3@hotmail.com) ne sauraient en ˆtre tenus responsables.
En effet, de par la nature mˆme des lois qui tentent vainement de r‚gir
notre putain de pays de merde, vous ˆtes libres de poursuivre ou non votre
lecture, en sachant cependant que si vous continuez plus loin, les auteurs
respectifs de tout ce qui suit n'encouragent personne … r‚aliser les actions
d‚crites ci-dessous, mais les d‚crivent uniquement … titre informatif.
Cependant, les lois ne sont bien ‚videmment pas les mˆmes dans tous les
pays, et donc, si chez vous, votre droit d'acc‚s aux informations que vous
pourriez trouver ici est encore plus restreint qu'en France, vous vous
devez de prendre vos responsabilit‚s.
Ainsi, en lisant ceci, ou plus simplement, rien que par le simple fait d'
avoir charg‚ ce site (et donc cette page et ce texte), vous prenez
connaissance de ces principes et de la "d‚responsabilisation" des auteurs de
tout ce que vous pourrez trouver ici. Ce n'est pas du tout un manque de
courage de notre part, mais tout simplement un simple avertissement: aprŠs
tout, rien ne vous invite … lire, croire, et encore moins … reproduire les
actions d‚crites ici.
De plus, bien que vous pouvez trouver ici des r‚f‚rences … des substances
qui peuvent ˆtre prohib‚es dans votre pays (notamment des substances
psychotropes), et qui le sont h‚l…s ici en France, cela ne constitue en aucun
cas un encouragement de quelque nature que ce soit … consommer ou mˆme
cultiver ces substances qui peuvent avoir des effets parfois incontr“lables,
et qui peuvent s'av‚rer quelquefois dangereux (surtout pour ceux qui n'en
ont pas l'habitude).
Pour finir, en continuant votre lecture, vous acceptez ainsi de prendre
vos responsabilit‚s et ainsi, en cas de problŠmes avec la justice (un malheur
est si vite arriv‚, et puis il faut dire que les keufs sont partout), nous
ne saurions en aucun cas ˆtre impliqu‚s dans vos problŠmes...

******************************************************************************
**********************************Introduction********************************
******************************************************************************

Je sais, ce num‚ro sort avec deux mois de retard... Alors pour un soi-disant
num‚ro anniversaire, c'est plut“t rat‚... Mais j'ai une excuse: pendant
environ un mois-et-demi, j'avais pas de PC … ma disposition pour ‚crire ce
num‚ro ni pour m'occuper du site. Donc, je ne l'ai pas mis … jour comme je
l'avais promis, et en fait, il y a plein de choses que je n'ai pas eu le temps
de faire. Mais, pour me faire pardonner, si cela se peut, ce num‚ro est le
plus gros de tous les P.G.K., alors voil….
Et comme je n'ai plus vraiment le temps de m'occuper de P.G.K., h‚l…s, je
suis en train de r‚fl‚chir … la seule solution que j'ai trouv‚e (si vous en
voyez d'autres, ‚crivez-moi): je vais peut-ˆtre arrˆter P.G.K.. Oh, rassurez-
vous, je serais encore pr‚sent, mais je crois que cela sera trŠs limit‚. Et
je ne m'occuperais mˆme plus du site.
Si cela doit se faire, je pense que je me d‚chargerais de mon "fardeau"
(en fait, je dois dire que j'ai r‚ellement pris du plaisir … faire P.G.K.
pendant un an, mais je garde ‡a pour la conclusion) sur (roulement de tambour)
Bug-in, qui, ces temps-ci, s'est montr‚ particuliŠrement actif et qui s'est
spontan‚ment propos‚ pour reprendre le flambeau... Car Johann__3 ne peut pas
non plus le faire, et j'en suis d‚sol‚...

NONO, nono_18_02@hotmail.com

******************************************************************************
************************************Sommaire**********************************
******************************************************************************

- Courrier des lecteurs
- W95.CIH (t00nx)
- Quelques id‚es (Bug-in)
- Les codes barres de la norme EAN 13 (Raffaelo)
- Lettre au Procureur de Justice (Bug-in)
- Cours d'Assembleur (suite) (Adam - traduit par NONO)
- Le nihilisme (King Fisher)
- Cryptage (Bug-in)
- Cours d'Assembleur (suite) (Adam - traduit par NONO)
- La gravure (Pyton51)

Eh bien voil… ce que j'appelle un num‚ro exceptionnellement riche et
imposant, non?

NONO, nono_18_02@hotmail.com

******************************************************************************
******************************Courrier des lecteurs***************************
******************************************************************************

From: Raffaelo <raffaelo@ifrance.com>
To: nono_18_02@hotmail.com
Subject: P.G.K. ezine
Date: Sun, 5 Sep 1999 11:25:00 +0200

Salut,

j'ai fond‚ un groupe de crackers fran‡ais d‚but juillet, et on est environ 20.
Le site est http://zone14.cjb.net. Bon, ‡a c'‚tait pour la pub ;-].

En fait, c'est pour dire que je suis un cracker d'origine, et que je
m'int‚resse depuis 2/3 jours au H/P et j'ai lu une bonne quantit‚ de mags, et
le votre a l'air le plus vivant et motiv‚. Je sais pas encore grand-chose, et
j'ai encore jamais hack‚, mais je me d‚brouille pas mal en crack, je connais
comment les codes barres, les cartes de cr‚dits marchent, et comment ‚viter
les banniŠres sur certains h‚bergeurs gratuits... et quelques autres trucs
bien marrants.

Quand j'ai fond‚ mon groupe, j'ai recherch‚ des gens motiv‚s, et ils ‚taient
tous des d‚butants. Je n'ai pas cherch‚ des ‚lites, qui savent tout faire mais
ne sont plus motiv‚s. C'est pour ‡a que mon groupe bouge bien aujourd'hui.

Quel rapport? J'ai choisi ton groupe parce qu'il est motiv‚, et moi aussi.
Donc, si tu veux bien, je serai content de faire partie de ton groupe si ‡a
d‚range personne, et aussi participer aux articles du super e-zine. Je te
joins un tutorial sur les codes barres que j'ai fait il y a quelques temps.

Voil…, j'espŠre que tu me r‚pondras vite, parce que c'est bient“t la rentr‚e
des classes pour moi, et ‡a va bien me faire chier pour mon temps libre.

Atchao bonsoir, et merci!

Raffaelo

[NONO: salut! Tu sais quoi, ta motivation fait plaisir … voir! Si si je t'
assure. Je dirais pas que ‡a me rappelle mes propres d‚buts, car ‡a ferait un
peu pr‚tentieux, mais c'est vrai. Mˆme si P.G.K. n'est pas un groupe …
proprement parler. En effet, au d‚but, je me suis content‚ d'‚crire un e-zine,
avec l'aide plus ou moins r‚guliŠre de Johann__3. Ensuite, des gens ont
commenc‚ … m'‚crire, pour me dire qu'ils aimaient bien ce que je faisais.
Alors ‡a m'a pouss‚ … continuer, comme le fait aujourd'hui ta lettre et ton
excellent article sur les codes barres. Non, franchement, j'ai vraiment
appr‚ci‚. J'avais d‚j… lu des trucs sur les codes barres, mais rien d'aussi
pr‚cis... Alors, pas de problŠme, tu es le bienvenu... H‚l…s, c'est la
rentr‚e... Peu de monde y ‚chappe... A+]

From: Nicky HAckRRIS <toonx@caramail.com>
To: nono_18_02@hotmail.com
Subject: article;)
Date: Thu, 12 Aug 1999 17:57:11 GMT+1

Salut NONO,

Je t'envoie un p'tit article pour P.G.K.! Je sais pas si tu le publieras, …
toi de voir ;) !

Tiens, en tant que newbie, j'essaye, grƒce … tes explications, de d‚plomber un
prog dont je me sers au boulot. Je t'embˆterais avec ‡a plus tard!

RESPECT.

[NONO: Bon, je crois qu'il n'y a pas grand-chose … dire sinon que c'est
exactement le genre de mails que j'adore recevoir... Voici donc l'article en
question. Et au fait, si vous avez des problŠmes pour le cracking ou quoi que
ce soit, n'h‚sitez pas … m'‚crire, je me ferais une joie d'essayer de vous
aider.]

******************************************************************************
***********************************W95.CIH************************************
******************************************************************************

Ayant eu devant mes yeux cet e-zine sympa qu'est P.G.K., je me suis dit:
"tiens, ‡a serait sympa d'‚crire un petit article pour eux!". Je me pr‚sente:
tOOnx, certains d'entre vous me connaissent via le web, d'autres (pour les
plus vieux, j'ai 27 ans!;) ) me connaissent sous le pseudo zeus/Z.F.K. (sur
Amiga!) ou encore Crystal Angel! J'ai ‚galement contribu‚ au Swap de AGNUS, un
petit zine sur disk qui existait sur Amiga... Nostalgie, quand tu nous tiens..

Bon, si NONO est d'accord, j'‚crirais d'autres articles traitant de sujets
divers, mais bon, on verra ‡a plus tard...

Je vais vous causer d'un virus, et pas n'importe lequel:
W95.CIH.
Plus connu par les m‚dias sous le nom de Tchernobyl, cette saloperie de
virus infecte tous les fichiers .exe de votre disque dur, quand il ne le
crashe pas, et vous nique le bios "manu militari"! J'ai, ‚videmment, eu
affaire … cette grosse merde, aprŠs avoir pomp‚ un prog sur le net. Ce virus
est vicieux, il ne se d‚clenche que le 26 de chaque mois, d'o— son appellation
"Tchernobyl" par les m‚dias, le 26 ‚tant la date de cette catastrophe...

Le pire, c'est que la b‚cane infect‚e ‚tait celle que j'utilise pour bosser,
du coup il me fallait r‚cup‚rer mon pr‚cieux disque, et refoutre ma b‚cane en
route! Je fonce chez un revendeur informatique, et je change ma carte mŠre.
J'utilise Norton 5.0 sur disk en b0oo sur mon premier disque: 6 go - Norton
a mis 03 h 15 … le scanner, il … analys‚ 5868 fichiers dont 262 infect‚s et
heureusement r‚par‚s. Pour le second de 4 go, il a mis 01 H 50, a analys‚ 4946
fichiers parmi lesquel 162 ‚taient infect‚s... :(

Bref, j'ai r‚ussi … r‚cup‚rer mes deux disques, et ma b‚cane fonctionne …
nouveau, c'est d'ailleurs par le biais de celle-ci que je vous ‚cris ;) [NONO:
comme quoi, … quelque chose malheur est bon. En effet, si t'avais pas chop‚ ce
putain de virus, t'aurais pas ‚crit cet article, et peut-ˆtre que ton
intervention va sauver d'autres lecteurs de ce v‚ritable fl‚au... En plus, ‡a
m'aurait fait un article de moins :-) .].

Les gars, faites gaffe … ce putain de virus, c'est le pire que je connaisse
:( .

Le 26 mai dernier, il a infect‚ 18 b‚canes d'un lyc‚e, je vous explique pas
la gueule du service technique!! ;)

Si vous avez NORTON 5.0, utilisez le AVANT le 26, sinon vous courrez droit …
la catastrophe !

La seule solution pour pouvoir conserver sa carte mŠre, d'aprŠs mon
revendeur, c'est de pouvoir r‚cup‚rer une EPROM identique … la sienne, booter
sur Norton pour nettoyer son disque de cette saloperie de virus. Ensuite, il
faut copier le contenu de l'eprom; si vous avez un copieur d'eprom, et que par
une chance formidable, vous avez copi‚ votre bios, tant mieux pour vous ;) -
sinon vous devez faire une manip risqu‚e: vous bootez avec un bios identique
au v“tre, une fois sous DOS, vous remplacez le BIOS par celui qui est flamb‚,
et vous flashez ce dernier... unique solution :( Grr..

Evidemment, cette solution n'est possible que si vous avez un bios dit "…
pattes", sinon si c'est un bios comme celui qui ‚quipe certaines cartes mŠre
ASUS (c'est une puce carr‚e qui s'emboŒte dans un compartiment ‚tudi‚ pour),
vous renvoyez votre carte mŠre chez votre revendeur, qui devrait,
th‚oriquement, pouvoir r‚soudre le problŠme en renvoyant la carte mŠre chez le
constructeur. Si votre carte mŠre est trop ancienne, laissez tomber, c'est
foutu!
Par contre, si vous avez une carte mŠre r‚cente, vous devriez pouvoir
activer la protection de votre bios, soit par cavalier, soit directement par
le bios lui-mˆme [NONO: cette manip consiste … empˆcher la modification
(volontaire ou non) des informations contenues dans le BIOS (Basic Input
Output System) et qui contient de pr‚cieux renseignements sur votre mat‚riel.]
!

A part ‡a, il existe, … ma connaissance, plusieurs antivirus qui permettent
de l'‚radiquer:
CLEANCIH, KILL CIH, remove_cih, NORTON 5.0...

Voili, voilou, si vous avez d'autres infos sur cette grosse merde de virus,
mailez-moi …:
t00nx@caramail.com

J'attends maintenant la r‚ponse de NONO, … savoir si je peux ‚crire d'autres
articles pour P.G.K., qui traiteront de divers sujets [NONO: tu rigoles ou
quoi? Depuis quand je refuse de l'aide?]!

*** FREE CONDOR *** NEWBIES RULEZ *** FUCK W95.CIH *** CHOCHON RULEZ ***
C4rD1n9 RuLeZ***

tOOnx, t00nx@caramail.com

******************************************************************************
**************************Quelques id‚es (Bug-in)*****************************
******************************************************************************

Lors du num‚ro 8, je finissais mon article (sur le concept de "monde
virtuel"), en parlant des diff‚rentes drogues, je continue donc … partir de
l….

L'alcool, le tabac, et la TV font partie des drogues l‚gales, tandis que le
cannabis ne l'est pas, et en voici la raison, que l'on peut d‚duire:

Quand une personne boit de l'alcool, sur le coup, elle ne sera pas en ‚tat
de faire tout correctement, et ainsi, jusqu'au lendemain, au r‚veil, le
travail peut ainsi ˆtre repris quasiment normalement et donc, vous ˆtes
toujours productif, ainsi l'‚tat autorise l'alcool, car on peut toujours
produire (bien qu'on puisse se demander ce que signifie production dans l'ƒge
de la simulation), contrairement au cannabis; je m'explique: l'alcool, une
fois pris, libŠre des barriŠres mentales que la personne s'est fix‚e, et
abaisse aussi son attention (ainsi qu'un massacre du foie et de l'estomac),
tandis que le cannabis permet … certaine personne de se reposer et de fuir le
stress de la vie, et durant ce temps, elle reflechit … elle-mˆme, … sa place
dans la societe, et ‡a, le gouvernement, ‡a lui plaŒt pas.
Le gouvernement ne vous demande pas de r‚fl‚chir mais de travailler. Quand
vous allez … l'ecole, au lyc‚e, … la fac, on vous apprend … travailler et
avoir des bases culturelles, et de l'histoire, on ne nous apprend pas …
r‚fl‚chir, … se poser des questions; il est impos‚ un systŠme, avec certains
problŠmes connus, qui ont des r‚ponses connues. En aucun cas, on ne vous
demande de r‚fl‚chir … une meilleure solution ou de trouver de nouveaux
problŠmes.
Seulement voil…, le cannabis a un inconv‚nient comme expliqu‚ dans P.G.K. 8,
il permet de r‚fl‚chir … soi et c'est tout. Il n'apporte pas de solution
miracle, et pire, vous met en situation latente, voire vous ‚nerve, parce que
vous vous dites que la soci‚t‚ est mal faite, mais vous n'agissez pas donc...
Comme beaucoup de gens, on se retrouve alors vite en mauvaise posture, c'est
… dire critiquer, sans savoir, sans pouvoir donner de solution ou d'aider …
cette recherche, ou d'expliquer clairement le problŠme, certains critiquent
mˆme parce que ‡a leur semble a la mode!
Quand vous regardez la t‚l‚, le taux de passivit‚ est … son maximum, vous ne
faites plus rien. Vous n'agissez pas, vous ne faites que recevoir, certains
regardent des documentaires, soit, mais prenez au moins des notes pendant que
vous les regardez; je sais, ‡a paraŒt chiant et con, mais au moins vos
neurones r‚agissent. De mˆme, quand vous lisez un journal, vous ne voyez
qu'une partie des choses, il en faut plus; quand on rˆve, le cerveau d‚pense
plus de kilojoules que quand on lit un livre (au cours de notre vie, on
d‚pense 2,4 kilojoules en lisant et 4 kilos joules en rˆvant [ce qui peut nous
faire penser qu'en fait, au cours du rˆve, l'esprit peut enfin se lib‚rer de
la viande, pour s'‚vader en des lieux o— il n'y a ni temps ni espace, l… se
r‚unissent les idees, et ainsi elles se diffusent, et atterrissent dans
notre inconscient]). Car quand on rˆve, le cerveau travaille, alors qu'en
lisant, il ne r‚fl‚chit pas beaucoup, il lit la r‚alit‚, ou du moins la v‚rit‚
que l'on lui impose, sauf certains livres r‚actionnaires (ou les e-zines ;-))
...

Bug-in,
buginutopia@multimania.com
http://www.multimania.com/buginutopia/

******************************************************************************
********************Les codes barres de la norme EAN 13***********************
********************************(Raffaelo)************************************
******************************************************************************

Introduction:

Ca y est, je suis revenu tout bronz‚ de vacances, et en pleine forme.
Aujourd'hui, nous allons apprendre … cracker les codes barres... Comment?
Les codes barres? Je croyais qu'on crackait les sharewares...
Ben voyons, ˆtre un crackeur, c'est pas avoir des sharewares sans payer...
C'est tout un style de vie: un crackeur est curieux, mais pas curieux pour les
choses sans valeur (ce que fait le voisin...), curieux pour savoir comment les
choses marchent! N'avez-vous jamais ‚t‚ curieux de savoir comment les codes
barres marchent?
Peut-ˆtre avez-vous d‚j… fait des recherches sur internet et que vous avez
trouv‚ des milliers de r‚ponses sans int‚rˆt... Et le fonctionnement n'est
pas trŠs m‚diatis‚! Eh bien, le bon vieux Raffaelo va vous apprendre … les
d‚chiffrer et … en cr‚er!

R‚flexions:

Si vous avez d‚j… observ‚ attentivement un code barre, vous avez s–rement
remarqu‚ que le mˆme chiffre n'est pas toujours cod‚ par la mˆme s‚rie de
barres...
Ensuite, les gens pensent souvent que le prix est inscrit dans le code barre
, ce qui est totalement faux! Si on r‚fl‚chit un peu, on se rend compte que
le code barre est diff‚rent pour chaque produit (deux produits diff‚rents de
mˆme prix n'ont pas le mˆme code).
Et comment font les caisses pour afficher la d‚signation du produit sur
l'‚cran et sur le ticket de caisse? Le code barre doit ˆtre unique pour chaque
produit et ne contient aucune information: c'est seulement un nombre... Alors,
quand on passe … la caisse, le lecteur optique d‚chiffre et envoie le code …
la machine, qui consulte une ‚norme base de donn‚es qui contient la
description et le prix associ‚ … chaque code.
C'est trŠs pratique, et c'est pour ‡a que le code barre a ‚t‚ cr‚‚. Pour
changer le prix d'un produit, il n'y a pas besoin de changer toutes les
‚tiquettes des boŒtes concern‚es (comme dans une petite ‚picerie par exemple),
il suffit de changer le prix dans la base de donn‚es! Autre avantange, on
embrouille le client qui est cens‚ ne rien comprendre aux codes barres.
Enfin, ‡a doit servir … g‚rer les stocks en enregistrant les quantit‚s de
tel ou tel produit vendu...

Th‚orie:

Bon, alors, je commence par o—??? E.A.N. veut dire European Article Numbering
system, et le 13 signifie que le code a 13 chiffres! Cette norme est
utilis‚e en Europe et un peu partout dans le monde. Par contre, aux USA, ils
utilisent la norme U.P.C. qui signifie Universal Product Code... On va bien
s–r parler de la norme utilis‚e en France plus particuliŠrement, qui est la
mˆme partout en Europe. Prenez n'importe quel objet, et vous verrez ces
petites barres sur le paquet, ou la couverture, etc... Sauf pour les magazines
et journaux qui utilisent une autre norme qui ne fait pas l'objet de ce
tutorial.
Alors, les codes barres sont compos‚s de barres et de chiffres. Les barres
sont la transcription des chiffres pour que le lecteur optique puisse lire le
code. Les chiffres servent juste aux humains et ne sont d'aucune utilit‚ pour
la machine, incapable de reconnaŒtre les chiffres. Donc, il y a 13 chiffres,
et chaque chiffre est cod‚ par 7 barres verticales. Ces barres sont soit
blanches, soit noires. La machine ne comprend que des 0 ou des 1, alors le
blanc code 0 et le noir 1. Les chiffres sont s‚par‚s en 3 groupes par des
barres plus longues. Le premier chiffre est tout seul … l'ext‚rieur des barres
… gauche, alors que les autres sont regroup‚s par 6 … l'int‚rieur des barres.
Le premier chiffre n'est pas cod‚ par des barres.
Chaque code barre a 13 valeurs, des chiffres de 0 … 9, #0 … #12. #0 et #1
indiquent l'origine du produit, #2 … #11 donnent le code de l'article et #12
(le 13Šme et dernier) est une somme de contr“le (checksum) qui v‚rifie la
validit‚ des autres valeurs.
Voici les 4 ‚tapes du calcul de #12:


VALEUR A : somme des chiffres en position impaire, donc A = #0 + #2 + #4 + #6
+ #8 + #10


VALEUR B : somme des chiffres en position paire, puis multiplier par 3, donc
B = (#1 + #3 + #5 + #7 + #9 + #11) x 3


VALEUR C : somme de A et B, donc C = A + B


VALEUR D : C modulo 10 (on divise par 10 et on garde le reste de la division,
ce qui revient … garder seulement le chiffre des unit‚s de C) puis on
retranche le r‚sultat … 10 si le r‚sultat est diff‚rent de 0, donc
D = C (mod 10); if D <> 0 then; 10 - D; endif


Les codes barres ont des zones vides blanches tout autour, en g‚n‚ral 10
fois la largeur d'une petite barre. Ces zones sont indispensables, et sans
elles, le code peut ˆtre illisible. Ensuite, il y a 3 groupes de barres
noir/blanc/noir de chaque c“t‚ du code et au milieu. Les barres sont plus
longues que les autres et d‚passent vers le bas. Elles servent au lecteur … se
caler et s'adapter … la taille du code barre.
Voici maintenant la partie magique. Accrochez-vous bien... Je vous avais dit
que le mˆme chiffre n'est pas forc‚ment cod‚ par les mˆmes barres, et ben
c'est normal: ‡a a ‚t‚ fait pour que le consommateur n'y comprenne rien, et
voici comment ‡a marche: les codes barres utilisent diff‚rents jeux de
caractŠres pour repr‚senter les valeurs de 0 … 9. Cela devrait rendre
impossible pour les gens de comprendre ce qui se passe, comme d'habitude, dans
cette soci‚t‚, les esclaves n'ont pas besoin de s'inqui‚ter du fonctionnement
des choses. Voici les codes graphiques des 3 jeux de caractŠres:

ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³Valeur ³Code A ³Code B (xor C) ³Code C (not A)³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³0 ³0001101 (13) ³0100111 (39) ³1110010 (114) ³
³1 ³0011001 (25) ³0110011 (51) ³1100110 (102) ³
³2 ³0011001 (19) ³0011011 (27) ³1101100 (108) ³
³3 ³0111101 (61) ³0100001 (33) ³1000010 (66) ³
³4 ³0100011 (35) ³0011101 (29) ³1011100 (92) ³
³5 ³0110001 (49) ³0111001 (57) ³1001110 (78) ³
³6 ³0101111 (47) ³0000101 (05) ³1010000 (80) ³
³7 ³0111011 (59) ³0010001 (17) ³1000100 (68) ³
³8 ³0110111 (55) ³0001001 (09) ³1001000 (72) ³
³9 ³0001011 (11) ³0010111 (23) ³1110100 (116) ³
ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

Les barres plus longues des bords sont repr‚sent‚s par 101 et celle du
centre par 01010.
Ensuite, ce n'est pas fini! Les chiffres … gauche de la barre du milieu et
ceux … droite n'utilisent pas les mˆmes jeux de caractŠres... La premiŠre
moiti‚ du code barre (… gauche) est cod‚e avec les jeux A et B, alors que la
deuxiŠme moiti‚ (… droite) est cod‚e uniquement avec le jeu C. En plus, les
jeux A et B sont utilis‚ avec une combinaison qui d‚pend de la valeur du
premier chiffre du code barre, #0:

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄ¿
³Valeur de #0 ³#1 ³#2 ³#3 ³#4 ³#5 ³#6³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄ´
³0 ³A ³A ³A ³A ³A ³A ³
³1 ³A ³A ³B ³A ³B ³B ³
³2 ³A ³A ³B ³B ³A ³B ³
³3 ³A ³A ³B ³B ³B ³A ³
³4 ³A ³A ³B ³B ³B ³A ³
³5 ³A ³B ³B ³A ³A ³B ³
³6 ³A ³B ³B ³B ³A ³A ³
³7 ³A ³B ³A ³B ³A ³B ³
³8 ³A ³B ³A ³B ³B ³A ³
³9 ³A ³B ³B ³A ³B ³A ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÙ

Ah, les stupides consommateurs ne comprendrons jamais pourquoi les mˆmes
valeurs donnent des barres diff‚rentes! Rien n'est aussi fiable que les codes
barres! =ø]. Nous allons voir concrŠtement maintenant comment d‚chiffrer un
code barre...
Prenons comme exemple le livre "Assembleur" de chez Marabout. Le code est
9 782501 011761. Alors, on a 9 78 donc c'est un livre. Le premier chiffre est
9 donc la combinaison des jeux de caractŠres A et B pour les valeurs #1 … #6
est ABBABA, et pour les valeurs #7 … #12, c'est toujours CCCCCC. La somme des
chiffres en position impaire est 9 + 8 + 5 + 1 + 1 + 7 = 31, et la somme des
chiffres en position paire multipli‚e par 3 est (7 + 2 + 0 + 0 + 1 + 6) x 3 =
48. Ensuite, 31 + 48 = 79 et donc 79 (mod 10) = 9. Enfin, comme 9 est
diff‚rent de 0 (si si, j'vous jure...), on fait 10 - 9 = 1 et le dernier
chiffre, la somme de contr“le, est 1.
DeuxiŠme exemple, on prend le livre "Acc‚der … tout l'internet par e-mail",
de chez Marabout lui aussi. On a le code, et on voudrait g‚n‚rer les barres...
Le code est 9 782501 031752. On regarde le premier chiffre, qui est un 9, et
on jette un coup d'oeil dans le petit tableau. La combinaison est donc
ABBABA CCCCCC. On fait afficher le 9 … gauche des barres, puis la longue barre
… gauche: 101 mais qui d‚passe vers le bas. Ensuite, on va coder les 6
premiers chiffres #1 … #6: on regarde dans le premier tableau. #1 est cod‚
avec le jeu A, et c'est un 7, donc ‡a donne 0111011. #2 est un 8, mais il est
cod‚ avec le jeu B, donc il faut mater dans la deuxiŠme colonne: 0001001...etc
...#6 est un 1, et il est cod‚ avec le jeu A, donc on a 0001101. Maintenant
qu'on a transcrit les chiffres en barres, on affiche toutes les traductions en
0 et 1 … la suite. Lorsqu'on a un 0, on affiche une barre blanche, et quand
c'est un 1, c'est une barre noire. On affiche alors les barres de #1 … #6, ce
qui donne 011101100010010011011011000101001110011001 pour la premiŠre moiti‚.
Ensuite on fait afficher la longue barre du milieu: 01010, puis on continue
avec les 6 derniers chiffres. Enfin, on fait afficher la longue barre … droite
: 101 et on affiche les chiffres sous le code barre. Surtout, il ne faut pas
oublier les espaces vierges blancs tout autour du code barre. Et voil…, on
peut construire n'importe quel code barre … partir des chiffres!

Pratique:

Ben maintenant que vous savez la th‚orie, la pratique ne devrait pas poser
de problŠme particulier... Vous savez d‚chiffrer et g‚n‚rer les codes barres,
alors ‡a devrait aller. Je vais quand mˆme vous donner quelques petits
conseils.
D'abord, vous n'allez pas faire vos codes … la main! Il vous faut un
logiciel... Il y en a un inclus dans Corel Draw 8 (mˆme dans la version d‚mo)
qui fait des codes dans pas mal de normes, mais vous pouvez aussi chercher
sur internet. Pour vous ‚pargner du temps, je vous dis quand mˆme comment
ils s'appellent: AnyLabel (pour ‚tiquettes mais fait aussi les codes barres
dans plusieurs normes) et CodeBar (uniquement des codes barres EAN 13). Je
vous apprends pas … chercher efficacement, vous devriez savoir... Si vous
savez chercher par e-mail, c'est encore mieux.
Sinon, ce qui est franchement le mieux, c'est de programmer son propre
logiciel de code barres dans votre langage pr‚f‚r‚. Si vous ne savez pas
programmer, faites-en un en Visual Basic en trŠs peu de temps, le VB est trŠs
nul, fait des programmes lents et gros mais c'est facile...
Personnellement, j'en ai fait un sur ma calculatrice (j'avais pas accŠs …
l'ordinateur quand je l'ai fait), la TI-89. Pour l'imprimer, je connecte la
TI-89 … l'ordinateur et je fait une capture d'‚cran. Je vais bient“t en faire
un en Delphi aussi, quand j'aurai le temps...
Voil…, maintenant vous avez fait un code barre et vous l'avez imprim‚ sur
une ‚tiquette autocollante, et vous vous demandez bien s'il marche... Pas
d'inqui‚tude … avoir! Les lecteurs optiques ont une grande tol‚rance: ils
doivent reconnaŒtre des codes barres trŠs diff‚rents sur chaque produit!
Certains sont petits, d'autres gros, certains hauts et fins, d'autres
d‚form‚s parce qu'ils sont coll‚s sur des bouteilles rondes... Ils
reconnaŒtraient mˆme les codes barres vert et rouge fluo avec des chiffres
‚crits … la main, mais c'est pas trŠs discret pour passer … la caisse! Une
fois que vous avez imprim‚ un code barre, passez le sur une borne
"information" au supermarch‚. Ca marche … chaque fois, mais il vaut mieux
v‚rifier quand mˆme, et ‡a rassure...
Ensuite, essayez le code barre sur le produit qu'il d‚signe et passez … la
caisse avec. La caissiŠre ne devrait rien remarquer, et il n'y a pas d'
inqui‚tude … avoir du c“t‚ du lecteur optique. Franchement, la caissiŠre qui
passe toute sa journ‚e … faire d‚filer des produits ne devrait pas se rendre
compte qu'un code barre a ‚t‚ coll‚ par-dessus le vrai. Normalement, les
vrais sont directement imprim‚s sur l'emballage. Si jamais elle remarquait
(trŠs improbable) quelque chose, personne ne peut savoir que c'est vous qui
avez coll‚ l'‚tiquette par-dessus. Comment un simple consommateur saurait
comment les codes barres marchent? Il y a eu une erreur, et vous avez
simplement pris la mauvaise boŒte dans le rayon...
Ensuite, vous pouvez passer aux choses s‚rieuses: vous trouvez un bon livre,
mais bien cher. Qu'… cela ne tienne: vous cherchez un livre moins cher, et
vous relevez son code barre. Vous rentrez chez vous et vous imprimez une
‚tiquette avec le code barre du livre pas cher. Vous retournez au magasin et
collez l'‚tiquette sur le livre cher qui vous int‚resse. Vous paierez le livre
cher au prix du pas cher! C'est bien s–r ill‚gal, mais vous prenez vos
responsabilit‚s, et de toute fa‡on, vous n'ˆtes pas au courant des codes
barres, hein? ;-]
Autre chose, ne collez pas le code barre d'un livre sur une bouteille de
champagne! D‚brouillez-vous pour trouver une bouteille de champagne moins
chŠre que celle que vous d‚sirez... La seule chose "risqu‚e" est que les deux
produits doivent avoir presque la mˆme description sur l'‚cran de la caisse
pour ne pas attirer l'attention. Dernier conseil: ne changez qu'un code barre
… la fois, et achetez quelques autres articles avec... C'est tout, vous voil…
savant!

Le mot de la fin:

Ben j'espŠre que vous avez pas eu trop de mal … suivre ce tutorial assez
inhabituel, parce que j'ai eu un peu de mal … expliquer et … organiser mes
id‚es. Si je n'ai pas ‚t‚ assez clair sur un point, envoyez-moi un message, et
je me ferais un plaisir de vous r‚pondre... Ca fait toujours plaisir de savoir
qu'on n'a pas pass‚ du temps pour rien, et que ‡a sert … quelqu'un.
Bon, peut-ˆtre que je parlerai dans un prochain tutorial des codes barres
des magazines, mais pour l'instant, je sais pas trop comment ‡a marche... Mais
je vais les ‚tudier! Comme je r‚pŠte souvent, il faut avoir l'esprit libre,
cracker dans la vie de tous les jours... Pour moi, cracker ne signifie pas
pirater ni ill‚gal, mais apprendre et comprendre.

Allez, … + et bon crack !

Ecrivez-moi … raffaelo@ifrance.com pour vos critiques, compliments, conseils,
autres m‚thodes, demande d'‚claircissement, demande de crack sur un programme
particulier...
Raffaelo, raffaelo@ifrance.com
http://zone14.cjb.net

******************************************************************************
***********************Lettre au Procureur de Justice*************************
********************************(Bug-in)**************************************
******************************************************************************

"Mr. ou Mme. le Procureur de Justice,
Je vous demande dans la pr‚sente lettre, les 3 choses suivantes:

1. Pourquoi doit-t-on payer pour connaŒtre l'information [Moi mˆme par le
pr‚sent courrier, j'ai pay‚ plus de 20 Francs pour ˆtre inform‚] (de toutes
sortes, sur tout support)? A qui appartient-elle? Pourquoi doit-on payer pour
que justice soit faite? N'est-t-il pas logique que la Justice soit rendue
gratuitement, permettant ainsi … chacun le droit d'ˆtre, d'attaquer ou d'ˆtre
d‚fendu contre les injustices.

2. Dans le mˆme ordre d'id‚es, pouvez-vous me faire parvenir gratuitement le
CODE CIVIL dans son int‚gralit‚ afin que je puisse connaŒtre mes droits et
devoirs, car une des seules choses que l'on m'a apprise … l'‚cole, c'est les
droits de l'Hommes; hors ceux-ci pr‚cisent que nul ne peut ignorer la loi, si
la loi me force … la connaŒtre, en toute logique, un exemplaire du CODE CIVIL
devrait ˆtre donn‚ … la naissance de chaque enfant.

D‚sirant combler cette lacune de connaissance, qui me mettrait hors-la-loi,
je vous demande par la pr‚sente lettre de me l'envoyer. Tenez compte, je vous
prie, du fait que si vous ne me l'envoyez pas, vous serez dans l'ill‚galit‚,
puisce que vous m'empˆchez de connaŒtre mes droits et devoirs. Dans ce cas,
vous me verrez dans l'obligation de vous attaquer en justice pour non-respect
des droits de l'Homme et de la loi (je prendrai comme ‚ch‚ance: pas de
r‚ponse en 1 an).

3. Dans un tout autres genre d'id‚e, je voudrais savoir quand vous prendrez
les mesures d'obliger d'imposer une mˆme calculatrice … ceux qui passent leur
bac, de maniŠre … ce qu'ils soient tous sur le mˆme pied d'‚galit‚; en effet,
vous remarquerez que tout le monde n'est pas issu de la mˆme classe sociale,
et que personne n'a la mˆme somme … mettre dans une calculatrice, certaines
permettant des calculs plus performants que d'autres, l'in‚galit‚ devant les
problŠmes … r‚soudre s'amenuise.

Est-il pr‚vu, donc, d'imposer une calculatrice commune … tous les bacheliers
, si non, vous remarquerez qu'il y a ici une in‚galit‚, et que tant qu'elle ne
sera pas r‚solue, je ferai parvenir une lettre du mˆme type.

Evidemment, il est logique de choisir pour une calculatrice commune la moins
chŠre des plus performantes, o— d'avoir des prix pour que chacun puisse se la
procurer.

Conscient que vous ne pourrez peut-ˆtre pas r‚pondre … toutes ces questions
(surtout la nø3), je vous demande de les faire parvenir aux services
comp‚tents (ce qui ne vous co–tera rien).

Ou de me faire parvenir leurs adresse Internet (de pr‚f‚rence), ou ‚crite si
il n'y en a pas.

Cela ne fera que ralentir les proc‚dures, de toutes fa‡ons, de la part de
votre Hi‚rarchie et de l'Administration, ‡a ne serai pas ‚tonnant, je me
contenterai de mettre la mˆme chose dans que dans la pr‚sente lettre en
pr‚cisant bien s–r que vous n'avez pas pu (ou voulu) les faire parvenir vous-
mˆme, me rendant la tƒche plus difficile.

Je tiens … pr‚ciser que la copie de cette lettre sera expos‚e sur Internet,
au public, et que vos r‚ponses … mes propos aussi.

Dans l'attente d'une r‚ponse, veuillez recevoir mes salutations les plus
respectueuses."

buginutopia@multimania.com
http://wwww.multimania.com/buginutopia

Cette lettre a donc ‚t‚ envoy‚e par Bug-in, et il attend toujours une
r‚ponse, sans grand espoir...

******************************************************************************
***************************Cours d'assembleur (suite)*************************
****************************(ADAM - traduit par NONO)*************************
******************************************************************************


ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
º Cours d'Assembleur par Adam éÄ¿
º º ³
º PARTIE V º ³
ÈÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ


ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ ³
³ RESUME DU JEU D'INSTRUCTIONS ³
³ ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ



þ ADC <DEST>, <SOURCE> - Nom : Ajout + D‚placement
Type: 8086+

Description: Cette instruction ajoute la
valeur de <SOURCE> dans <DEST>, de mˆme que
celle du carry flag, qui sera un 1 ou un 0.

Logiquement, DEST = DEST + SOURCE + CF

Ex: ADC AX, BX


þ ADD <DEST>, <SOURCE> - Nom : Ajout
Type: 8086+

Description: Cette instruction ajoute les
valeur de <SOURCE> et <DEST>, et stocke le
r‚sultat en <DEST>.

Ex: ADD AX, BX


þ AND <DEST>, <SOURCE> - Nom : ET Bool‚en
Type: 8086+

Description: Cette instruction r‚alise une
comparaison bit … bit de <DEST> et <SOURCE>
, et ‚crit le r‚sultat dans <DEST>.

Ex: AND 0, 0 = 0
AND 0, 1 = 0
AND 1, 0 = 0
AND 1, 1 = 1


þ BT <DEST>, <NUMERO DE BIT> - Nom : Test de Bit
Type: 80386+

Description: Cette instruction teste le bit
<NUMERO DE BIT> de <DEST>, qui peut ˆtre
aussi bien un registre 16 ou 32 bit, ou
mˆme une adresse m‚moire. Si <DEST> est un
nombre 16 bit, alors le bit <NUMERO DE BIT>
est compris entre 0 et 15, et si <DEST> est
un nombre 32 bit, le bit <NUMERO DE BIT>
est compris entre 0 et 31.

La valeur contenue dans le bit <NUMERO DE
BIT> de <DEST> est ensuite copi‚e dans le
carry flag.

Ex: BT AX, 3
JC EgalA1


þ CALL <DEST> - Nom : Appel de Proc‚dure
Type: 8086+

Description: Cette instruction appelle
simplement une sous-routine. En des termes
plus techniques, elle met l'adresse de la
prochaine instruction, IP, en haut de la
pile, et ensuite, met le Pointeur d'
Instruction, IP, … la valeur sp‚cifi‚e par
<DEST>.

Ex: CALL MaProc‚dure


þ CBW - Nom : Convertir un octet en word
Type: 8086+

Description: Cette instruction ‚tent
l'octet de AL … AX.

Ex: MOV AL, 01h
CBW
ADD BX, AX ; N'importe quoi avec
AX


þ CLC - Nom : Efface le Carry Flag
Type: 8086+

Description: Cette instruction efface le
carry flag dans le registre des flags en
le mettant … 0.

Ex: CLC


þ CLD - Nom : Efface le Direction Flag
Type: 8086+

Description: Cette instruction efface le
direction flag dans le registre des flags
en le mettant … 0. Quand le direction
flag est … 0, n'importe quelle chaŒne
d'instructions augmente les registres
d'index SI et DI.

Ex: CLD


þ CLI - Nom : Efface l'Interrupt Flag
Type: 8086+

Description: Cette instruction efface l'
interrupt flag dans le registre des flags
en le mettant … , puis en d‚sactivant les
interruptions hardware.

Ex: CLI


þ CMC - Nom : ComplŠte le Carry Flag
Type: 8086+

Description: Cette instruction v‚rifie la
valeur dans le carry flag. Si c'est 0 - ‡a
passe … 1, et si c'est 1 - ‡a passe … 0.

Ex: BT AX, 1 ; Teste le premier bit
de AX
JC EgalA1
JMP Done

EgalA1:
CMC ; Met le CF … 0

Done:


þ CMP <VALEUR1>, <VALEUR2> - Nom : Compare deux entiers
Type: 8086+

Description: Cette instruction compare
<VALEUR1> et <VALEUR2> et reflŠte la
comparaison dans les flags.

Ex: CMP AX, BX

Voir aussi l'instruction Jcc.


þ CWD - Nom : Convertir un Word en Doubleword
Type: 8086+

Description: Cette instruction ‚tend le
word dans AX … une paire en DX:AX.

Ex: CWD


þ DEC <VALEUR> - Nom : Diminue
Type: 8086+

Description: Cette instruction soustrait
1 du nombre dans <VALEUR> et y stocke
le r‚sultat.

Ex: DEC AX


þ DIV <VALEUR> - Nom : Division Relative
Type: 8086+

Description: Cette instruction divise
<VALEUR> par soit AX pour un octet, soit
DX:AX pour un word ou EDX:EAX pour un
doubleword.

Pour un octet, le quotient est inscrit en
AL et le reste (de la division) en AH;
pour un word, le quotient est inscrit en
AX et le reste en DX; et pour un DWORD
(doubleword), le quotient est inscrit en
EAX et le reste en EDX.

Ex: MOV AX, 12
MOV BH, 5
DIV BH
MOV Quotient, AL
MOV Reste, AH


þ IN <ACCUMULATEUR>, <PORT> - Nom : Entr‚e du port I/O (Input/Output:
Entr‚e/Sortie)
Type: 8086+

Description: Cette instruction lit une
valeur d'un des 65536 ports mat‚riels dans
l'accumulateur sp‚cifi‚.

AX et AL sont g‚n‚ralement utilis‚s pour
les ports d'entr‚e, et DX pour identifier
le port.

Ex: IN AX, 72h

MOV DX, 3C7h
IN AL, DX


þ INC <VALEUR> - Nom : Augmente
Type: 8086+

Description: Cette instruction ajoute 1 au
nombre contenu dans <VALEUR>, et y ‚crit
le r‚sultat.

Ex: MOV AX, 13h ; AX = 13h
INC AX ; AX = 14h


þ INT <INTERRUPTION> - Nom : G‚nŠre une Interruption
Type: 8086+

Description: Cette instruction sauvegarde
les flags courants et le pointeur d'
instruction sur la pile, et ensuite
appelle l'<INTERRUPTION> bas‚e sur la
valeur en AH.

Ex: MOV AH, 00h ; Passe en mode
vid‚o
MOV AL, 13h ; Mode vid‚o 13h
INT 10h ; G‚nŠre une
interruption


þ Jcc - Nom : Saut si Condition
Type: 8086+

Je ne vais pas me r‚p‚ter pour les 32, vous n'avez qu'… regarder dans le
Tutorial 3 pour avoir la liste complŠte. Gardez … l'esprit que ce serait
une bonne id‚e d'utiliser CMP, OR, DEC ou quelque chose de semblable avant
d'utiliser une de ces instructions :) .

Ex: DEC AX
JZ AX_A_Atteint_0


þ JMP <DEST> - Nom : Saut
Type: 8086+

Description: Cette instruction charge
simplement une nouvelle valeur, <DEST>,
dans l'IP, puis transfŠre le programme
… une autre partie du code.

Ex: JMP MyLabel


þ LAHF - Nom : Remplit AH avec des flags
Type: 8086+

Description: Cette instruction copie les
bas octets des registres de flags dans AH.
Le contenu d'AH ressemblera … ‡a aprŠs
que l'instruction ait ‚t‚ ex‚cut‚e:


ÚÄÄÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄ¿
³ Flag ³ SF ³ ZF ³ -- ³ AF ³ -- ³ PF ³ -- ³ CF ³
ÃÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´
³ Bit ³ 07 ³ 06 ³ 05 ³ 04 ³ 03 ³ 02 ³ 01 ³ 00 ³
ÀÄÄÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÙ

Vous pouvez maintenant tester les bits individuellements, ou
r‚aliser une instruction similaire … la suivante pour obtenir un
flag individuel:

Ex: LAHF
SHR AH, 6
AND AH, 1 ; AH contaient maintenant le flag ZF


þ LEA <DEST>, <SOURCE> - Nom : Charge une Adresse Effective
Type: 8086+

Description: Cette instructrion charge
l'adresse m‚moire dans laquelle est
<SOURCE>, dans <DEST>.

Ex: J'utilise LEA SI, Str dans une de
mes proc‚dure qui affiche trŠs
rapidement une chaŒne … l'‚cran.


þ LOOP <LABEL> - Nom : Diminue CX et effectue un
Branchement
Type: 8086+

Description: Cette instruction est une
forme de la boucle "For... Do" qui existe
dans de nombreux langages haut-niveau.
En fait; cela renvoie a un label (nom
donn‚ … une s‚rie d'instructions), ou
une adresse m‚moire, jusqu'… ce que
CX = 0.

Ex: MOV CX, 12

PeuImporte:
;...
;...
;... Ca va ˆtre r‚p‚t‚ 12 fois

LOOP PeuImporte


þ Lseg <DEST>, <SOURCE> - Nom : Charge le registre de segment
Type: 8086+

Description: Cette instruction existe
sous plusieurs formes. Toutes acceptent la
mˆme syntaxe, dans laquelle <SOURCE> est
un pointeur 48 bit, constitu‚ d'un offset
32 bit et d'un s‚lecteur 16 bit. L'offset
32 bit est charg‚ dans <DEST>, et le
s‚lecteur est charg‚ dans le registre de
segment sp‚cifi‚ par seg.

Les formes suivantes existent:

LDS
LES
LFS * 32-bit
LGS * 32-bit
LSS

Ex: LES SI, Un_Pointeur


þ MOV <DEST>, <SOURCE> - Nom : D‚placement de donn‚es
Type: 8086+

Description: Cette instruction copie
<SOURCE> dans <DEST>.

Ex: MOV AX, 3Eh
MOV SI, 12h


þ MUL <SOURCE> - Nom : Multiplication Relative
Type: 8086+

Description: Cette instruction multiplie
<SOURCE> par l'accumulateur, qui d‚pend de
la taille de <SOURCE>.

Si <SOURCE> est un octet:

* AL est le multiplicateur;
* AX est le produit.

Si <SOURCE> est un word:

* AX est le multiplicateur;
* DX:AX est le produit.

Si <SOURCE> est un doubleword:

* EAX est le multiplicateur;
* EDX:EAX est le produit.

Note: Les flags sont laiss‚s tels quels
sauf pour OF et CD, qui sont remis … 0
si le haut octet, le word ou le dword du
produit est 0.

Ex: MOV AL, 3
MUL 10
MOV R‚sultat, AX


þ NEG <VALEUR> - Nom : N‚gation
Type: 8086+

Description: Cette instruction soustrait
<VALEUR> … 0, donnant une n‚gation … 2
compl‚ments de <VALEUR>.

Ex: MOV AX, 03h
NEG AX ; AX = -3


þ NOT <VALEUR> - Nom : Compl‚ment Bool‚en
Type: 8086+

Description: Cette instruction inverse
l'‚tat de chaque bit de <VALEUR>.

Ex: NOT CX


þ OR <DEST>, <SOURCE> - Nom : OU Bool‚en
Type: 8086+

Description: Cette instruction r‚alise une
op‚ration de OU Bool‚en entre chaque bit
de <DEST> et de <SOURCE>, et ‚crit le
r‚sultat dans <DEST>.

Ex: OR 0, 0 = 0
OR 0, 1 = 1
OR 1, 0 = 1
OR 1, 1 = 1


þ OUT <PORT>, <ACCUMULATEUR> - Nom : Sortie vers un Port
Type: 8086+

Description: Cette instruction envoye la
valeur … l'accumulateur dans <PORT>. En
utilisant le registre DX pour passer le
port avec OUT, vous pouvez acc‚der …
65536 ports.

Ex: MOV DX, 378h
OUT DX, AX


þ POP <REGISTRE> - Nom : Remplir Registre
Type: 8086+

Description: Cette instruction enlŠve la
valeur courante de la pile et la place
dans <REGISTRE>.

Ex: POP AX


þ POPA - Nom : Remplir tous les Registres G‚n‚raux
Type: 80186+

Description: Cette instruction remplit
tous les registres 16 bit g‚n‚raux …
l'aide de la pile, sauf SP.

C'est la mˆme chose que:

POP AX
POP BX
POP CX
...

Ex: POPA


þ POPF - Nom : S‚parer la Pile en Flags
Type: 8086+

Description: Cette instruction ‚clate les
bas octets de la pile en flags.

Ex: POPF


þ PUSH <REGISTRE> - Nom : Mettre un Registre en haut
Type: 8086+

Description: Cette instruction pousse
<REGISTRE> en haut de la pile.

Ex: PUSH AX


þ PUSHA - Nom : Mettre tous les Registres G‚n‚raux
sur la Pile
Type: 80186+

Description: Cette instruction pousse tous
les registres 16 bit g‚n‚raux en haut de
la pile.

C'est la mˆme chose que:

PUSH AX
PUSH BX
PUSH CX
...

Ex: PUSHA


þ PUSHF - Nom : Mettre les Flags dans la pile
Type: 8086+

Description: Cette instruction met les
bas octets des flags dans la pile.

Ex: PUSHF


þ REP - Nom : R‚p‚ter l'instruction suivante
Type: 8086+

Description: Cette instruction r‚pŠte
la suivante le nombre de fois sp‚cifi‚
dans le registre CX.

Ex: MOV CX, 6
REP STOSB ; Stocke 6 octets


þ RET - Nom : Renvoi au plus proche
Type: 8086+

Description: Cette instruction met dans IP
la valeur qu'il contenait avant le dernier
CALL. RET, ou RETF pour un saut, doit
ˆtre utilis‚ lorsqu'on programme
uniquement en assembleur.

Ex: RET


þ ROL <DEST>, <VALEUR> - Nom :

  
Effectue une rotation vers la gauche
Type: 8086+

Description: Cette instruction effectue
une rotation de <DEST> <VALEUR> fois. Une
rotation consiste … d‚placer <DEST> une
fois, ensuite transf‚rer le bit d‚plac‚
de la plus haute … la plus basse position
de <DEST>.

Ex: ROL AX, 3


þ ROR <DEST>, <VALEUR> - Nom : Effectue une rotation vers la droite
Type: 8086+

Description: Cette instruction effectue
une rotation de <DEST> <VALEUR> fois. Une
rotation consiste … d‚placer <DEST> une
fois, ensuite transf‚rer le bit d‚plac‚
de la plus basse … la plus haute position
de <DEST>.

Ex: ROR BX, 5


þ SAHF - Nom : Stocke Ah dans les flags
Type: 8086+

Description: Cette instruction charge le
contenu du registre AH dans les bits
7, 6, 4, 2 et 0 du registre des flags.

Ex: SAHF


þ SBB <DEST>, <SOURCE> - Nom : Soustraction avec Emprunt
Type: 8086+

Description: Cette instruction soustrait
<SOURCE> … <DEST>, et diminue <DEST> de 1
si le carry flag est … 1, stockant le
r‚sultat dans <DEST>.

Donc, <DEST> = <DEST> - <SOURCE> - CF

Ex: SBB AX, BX


þ SHL <DEST>, <VALEUR> - Nom : D‚placement vers la gauche
Type: 8086+

Description: Cette instruction d‚place
<DEST> vers la gauche de <VALEUR>. Je vais
pas recommencer … expliquer la th‚orie des
d‚placements. Si vous n'ˆtes pas s–r de
comprendre, cette instruction, r‚f‚rez-vous
au tutorial 4.

Ex: SHL AX, 5


þ SHR <DEST>, <VALEUR> - Nom : D‚placement vers la droite
Type: 8086+

Description: Cette instruction d‚place
<DEST> vers la droite de <VALEUR>. R‚f‚rez-
vous au tutorial 4 pour la th‚orie des
d‚placements.

Ex: SHR DX, 1


þ STC - Nom : Active le Carry Flag
Type: 8086+

Description: Cette instruction donne au
Carry flag la valeur de 1.

Ex: STC


þ STD - Nom : Active le Direction Flag
Type: 8086+

Description: Cette instrucion donne au
carry flag la valeur de 1 [NONO: ne serait-
ce pas plut“t au direction flag?]. Cela
ordonne de diminuer les registres d'index.

Ex: STD
REP STOSB ; DI est diminu‚


þ STI - Nom : Active l'Interrupt Flag
Type: 8086+

Description: Cette instruction donne … l'
interrupt flag la valeur de 1, ce qui
permet des interruptions mat‚rielles.

Ex: CLI ; Stoppe les interruptions
... ; R‚alise une fonction
importante
STI ; Permet les interruptions


þ STOS - Nom : Stocke une chaŒne
Type: 8086+

Description: Cette instruction existe sous
les formes suivantes:

STOSB - Stocke un octet - AL
STOSW - Stocke un word - AX
STOSD - Stocke un doubleword - EAX

Cette instruction ‚crit le contenu de
l'accumulateur … l'adresse m‚moire
indiqu‚e par ES:DI. Ensuite, elle augmente
ou diminue DI suivant les instructions,
et suivant la valeur dans le direction
flag.

Ex: MOV AX, 0A000h
MOV ES, AX
MOV AL, 03h
MOV DI, 0
STOSB ; Stocke 03 en ES:DI,
; ce qui est en fait
; le haut de l'‚cran en mode 13h


þ SUB <DEST>, <SOURCE> - Nom : Soustraire
Type: 8086+

Description: Cette instruction soustrait
<SOURCE> de <DEST>, stockant le r‚sultat
dans <DEST>.

Ex: SUB ECX, 12


þ TEST <DEST>, <SOURCE> - Nom : Test des Bits
Type: 8086+

Description: Cette instruction r‚alise une
op‚ration ET bit-…-bit sur <SOURCE> et
<DEST>. Le r‚sultat est reflet‚ dans les
flags, et ils sont activ‚s comme aprŠs
une op‚ration ET.

Ex: TEST AL, 0Fh ; V‚rifie si il y a
; des bits dans le bas
; nibble d'AL


þ XCHG <VALEUR1>, <VALEUR2> - Nom : Echange
Type: 8086+

Description: Cette instruction ‚change les
valeurs dans <VALEUR1> et <VALEUR2>.

Ex: XCHG AX, BX


þ XOR <DEST>, <SOURCE> - Nom : OU Bool‚en Exclusif
Type: 8086+

Description: Cette instruction r‚alise une
op‚ration de OU exclusif bit-…-bit entre
<SOURCE> et <DESt>. L'op‚ration est la
suivante:

XOR 0, 0 = 0
XOR 0, 1 = 1
XOR 1, 0 = 1
XOR 1, 1 = 0

Ew: XOR AX, BX


ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

Ouf! Il y en a beaucoup, et on a seulement vu les basiques! Vous n'ˆtes pas
cens‚ tous les comprendre. Vous avez probablement vu des choses comme
"n‚gation … 2 compl‚ments" et pens‚: "Qu'est ce que ‡a veut bien dire?".

Mais ne vous en inqui‚tiez pas pour le moment. On va continuer … notre rythme
habituel, and introduire les nouvelles instructions une … une, en les
expliquant. Si vous avez d‚j… tout compris, eh bien consid‚rez ceci comme un
bonus. Vous remarquerez aussi qu'il y avait de nombreuses instructions 8086.
Il y a pour le moment peu de situations n‚cessitant l'emploi d'instructions
386 ou 486, sans parler des pour les Pentium [NONO: ‚videmment, cela n'est
plus trŠs vrai aujourd'hui. Tout au plus on peut dire que les instructions
KNI pour le Pentium III ne sont sans doute pas trop utilis‚es pour le moment].

De toute fa‡on, avant de passer au VGA, je vais juste lister la vitesse …
laquelle chacune des instructions ci-dessus s'ex‚cute, pour que vous
ayez une id‚e de la vitesse de vos routines en Assembleur.


ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

Instruction Battements d'horloge Battements d'horloge
386 486

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

ADC 2 1
ADD 2 1
AND 2 1
BT 3 3
CALL 7+m 3
CBW 3 3
CLC 2 2
CLD 2 2
CLI 5 3
CMC 2 2
CMP 2 1
CWD 2 3
DEC 2 1
DIV - -
- Octet 9-14 13-18
- Word 9-22 13-26
- DWord 9-38 13-42
IN 12/13 14
INC 2 1
INT d‚pend d‚pends
Jcc - -
- Branchement 7+m 3
- Pas de Branch. 3 1
JMP 7+m 3
LAHF 2 3
LEA 2 1
LOOP 11 6
Lseg 7 6
MOV 2 1
MUL - -
- Octet 9-14 13-18
- Word 9-22 13-26
- DWord 9-38 13-42
NEG 2 1
NOT 2 1
OR 2 1
OUT 10/11 16
POP 4 1
POPA 24 9
POPF 5 9
PUSH 2 1
PUSHA 18 11
PUSHF 4 4
REP d‚pend d‚pend
RET 10+m 5
ROL 3 3
ROR 3 3
SAHF 3 2
SBB 2 1
SHL 3 3
SHR 3 3
STC 2 2
STD 2 2
STI 3 5
STOS 4 5
SUB 2 1
TEST 2 1
XCHG 3 3
XOR 2 1

Note: m = Nombre de composants dans la prochaine instruction ex‚cut‚e.

Oh, je ne veux plus jamais voir un tableau comme celui-ci! Maintenant, passons
… la partie "amusante" - le VGA!


ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

Vous avez probablement remarqu‚ que votre carte vid‚o a plus de 256K de RAM.
Mˆme si vous avez seulement 256K de RAM, comme c'est le cas sur mon vieux 386,
vous pouvez acc‚der au mode 13h - 320x200x256. Cependant, cela soulŠve
quelques problŠmes.

Multipliez 320 par 200 et vous remarquerez que vous avez seulement besoin de
64000 octets pour stocker un simple ‚cran.

Eh bien, le VGA est dispos‚ en plans, comme ceci:


ÚÄÄÄÄÄÄÄÄ3ÄÄÄÄÄÄÄ¿
ÚÄÁÄÄÄÄÄÄ2ÄÄÄÄÄÄÄ¿ ³
ÚÄÁÄÄÄÄÄÄ1ÄÄÄÄÄÄÄ¿ ³ ³
ÚÄÁÄÄÄÄÄÄ0ÄÄÄÄÄÄÄ¿ ³ ³ ³
³ ³ ³ ³ ³
³ ³ ³ ³ ³
³ 64,000 ³ ³ ÃÄÙ
³ ³ ÃÄÙ
³ ÃÄÙ
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

Chaque plan fait 64000 octets. Voici comment ‡a marche:

Un pixel en 0, 0 est d‚fini dans le plan 0 … l'offset 0;
Un pixel en 1, 0 est d‚fini dans le plan 1 … l'offset 0;
Un pixel en 2, 0 est d‚fini dans le plan 2 … l'offset 0;
Un pixel en 3, 0 est d‚fini dans le plan 3 … l'offset 0;
Un pixel en 4, 0 est d‚fini dans le plan 0 … l'offset 1...et ainsi de suite..

Parce que les pixels sont enchaŒn‚s sur les quatre okans, il est impossible
d'utiliser plusieurs pages en mode 13h sans recourir … un ‚cran virtuel ou
quelque chose dans le genre.

La r‚partition (mapping) automatique des pixels est compl‚tement effectu‚e par
la carte vid‚o, aussi vous pouvez tranquillement travailler dans rien
connaŒtre … ce sujet, si ‡a vous chante.

On verra ‡a plus tard, en utilisant un mode sp‚cial, connu sous le nom de
Mode X, mais pour le moment, voyons voir ce que l'on peut d‚j… faire avec ce
bon vieux mode 13h.


ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ ³
³ DESSINER DES LIGNES ³
³ ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ


Bon, on a un peu d‚pass‚ la taille pr‚vue pour ce tutorial, et j'avais pr‚vu
de voir l'Algorithme de Bresenham pour des Lignes, mais ‡a devra attendre la
semaine prochaine. Cependant, on va d‚j… voir comment dessiner une ligne en
Assembleur.


Un Routine pour afficher une Ligne Horizontale en Assembleur:
---------------------------------------------------------------

D‚j…, on va envoyer ES en VGA.

Ceci devrait faire l'affaire:

MOV AX, 0A000h
MOV ES, AX

Maintenant, on doit lire X1, X2 et les valeurs de Y dans les registres, avec
quelque chose comme ‡a:

MOV AX, X1 ; AX vaut maintenant X1
MOV BX, Y ; BX vaut maintenant Y
MOV CX, X2 ; CX vaut maintenant X2

Il est n‚cessaire de pr‚ciser la longueur de la ligne, aussi on va utiliser
CX pour la stocker: i) CX contient d‚j… X2, et ii) on va utiliser une
instruction REP, pour faire de CX un compteur.

SUB CX, AX ; CX = X2 - X1

Maintenant on va utiliser DI pour le premier pixel … afficher, donc on va se
servir de la routine PutPixel vue pr‚c‚demment:

MOV DI, AX ; DI = X1
MOV DX, BX ; DX = Y
SHL BX, 8 ; D‚placer Y de 8 vers la gauche
SHL DX, 6 ; D‚placer Y de 6 vers la gauche
ADD DX, BX ; DX = Y SHL 8 + Y SHL 6
ADD DI, DX ; DI = Y x 320 + X

On a maintenant l'offset du premier pixel, donc il ne nous reste plus qu'…
pr‚ciser la couleur, dans AL, et utiliser STOSB pour afficher le reste de la
ligne.

MOV AL, Couleur ; D‚placer la couleur dans AL
REP STOSB ; Afficher les pixels de CX

Remarquez qu'on a utilis‚ STOSB car il va incr‚menter DI pour nous, pour
‚conomiser des instructions MOV et INC. Maintenant, suivant le langage que
vous utilisez, vous aurez quelque chose comme ‡a:


void Draw_Horizontal_Line(int x1, int x2, int y, char color);
{
asm {
mov ax, 0xa000
mov es, ax ; Mettre ES en VGA

mov ax, x1 ; AX = X1
mov bx, y ; BX = Y
mov cx, x2 ; CX = X2

sub cx, ax ; CX = Diff‚rence entre X2 et X1

mov di, ax ; DI = X1
mov dx, bx ; DX = Y
shl bx, 8 ; Y SHL 8
shl dx, 6 ; Y SHL 6
add dx, bx ; DX = Y SHL 8 + Y SHL 6
add di, dx ; DI = Offset du premier pixel

mov al, color ; Stocke la couleur en AL
rep stosb ; Dessine la ligne
}
}

Adam Hyde, blackcat@faroc.com.au

******************************************************************************
***********************Le nihilisme (King Fisher)*****************************
******************************************************************************

Dans P.G.K. nø1, j'ai pass‚ le fameux texte "la conscience d'un hacker".
Bug-in m'a dit qu'il avait ‚t‚ inspir‚ par le texte suivant (pourtant dat‚
de 1995!), ‚crit par King Fisher, et que je n'avais jamais lu (mais je dois
reconnaŒtre que je n'ai plus le temps de lire tout ce que je trouve sur le
net...).

NONO, nono_18_02@hotmail.com

"Ils disent qu'un nihiliste est une personne qui renie les valeurs. Ce n'est
pas tout … fait vrai. Un nihiliste est quelqu'un qui renie certaines valeurs,
et en construit de nouvelles. Quelqu'un qui ne fait que renier les valeurs,
et ne veut que d‚truire la soci‚t‚, est plut“t un anarchiste, ou un pur et
simple vandale, un prophŠte de l'absence de valeurs.
Pour moi, je pr‚fŠre me dire un adh‚rent de la philosophie Zen, le
Faillibilisme, ou simplement: une personne qui croit qu'il n'y a pas d'entit‚s
fixes telles que "
Le Bien", "Le Mal" ou "La Propri‚t‚ Priv‚e", tous concepts
qui ne sont que des constructions momentan‚es de l'esprit humain. Je suis du
c“t‚ de Nietzsche, en un sens, mais je veux aller au-del… de Nietzsche, car le
Nihilisme est toujours cr‚atif.

Ils disent que les crackers sont des cafards mal‚fiques qui veulent ruiner
les compagnies de logiciels et voler les sous qui reviennent aux malheureux
programmeurs. Moi, ce que je dis, c'est que l'information est … tout le monde,
comme l'air qui nous entoure, et que personne n'a le droit de la mettre
derriŠre des murs. Si vous pensez que les hackers ne sont qu'une bande
d'anarchistes prˆts … tout mettre … feu et … sang parce que ‡a les amuse, vous
vous trompez du tout au tout.
Nous sommes bien pires que ‡a.

Nous mettons … bas, oui, mais nous en sommes fiers, et nous le faisons parce
que nous devons le faire. Quelqu'un doit lib‚rer l'information. Je ne hacke
pas parce que je hais la soci‚t‚, mais parce que je l'aime et que je souhaite
qu'elle ‚volue. Je considŠre le hack comme une action hautement politique, et
je suis fermement convaincu qu'il est JUSTE de hacker!

Maintenant vous ˆtes troubl‚s. Laissez-moi encore vous expliquer.

Cette ann‚e, en 1995, je peux entrer dans n'importe quelle bibliothŠque,
prendre N'IMPORTE QUEL livre, aller … la photocopieuse et copier toutes les
pages si je le souhaite. Tout ceci est parfaitement l‚gal, du moins ici en
SuŠde. L'‚tat su‚dois (comme beaucoup d'autres) a d‚cid‚ que ses citoyens
avaient le droit de copier des livres.

Maintenant, je rentre … la maison. Je regarde mon lecteur de CD. Je n'ai pas
le droit de me faire une cassette de mes morceaux favoris. C'est ill‚gal. Je
regarde mes cassettes vid‚o. Je n'ai pas le droit de les copier. C'est ill‚gal
. Je regarde mes boŒtes de disquettes qui contiennent des logiciels Microsoft
que j'ai achet‚s. Eh bien, j'ai le droit de me faire des copies de sauvegarde,
mais pas de les donner … mes amis. C'est ill‚gal.

Ca me rend malade! Quelle diff‚rence entre des logiciels, des CD, des
cassettes vid‚o et les livres que j'emprunte … la bibliothŠque du quartier?
Tout cela est de l'information, grands dieux! Le problŠme dans ce cas n'est
pas l'information en elle-mˆme. Le problŠme est que cette soci‚t‚ m'a
conditionn‚ … croire qu'on avait le droit de poss‚der l'information, comme la
terre ou l'argent, ou comme les Grecs ou les ‚leveurs de coton sudistes purent
croire qu'on avait le droit de poss‚der DES GENS. Ils appelaient ‡a
l'esclavage. Je r‚alise que je suis un esclave de la soci‚t‚ qui contr“le
l'information. Parce que c'est de cela qu'il est question. De contr“le.
Complet, absolu, et indiscutable contr“le.

Je ne suis pas en train de vous dire que je veux que les lois sur les droits
d'auteur soient remplac‚es par le chaos. Si je souhaitais le chaos, je serais
une bˆte destructrice et pas un citoyen constructif. J'aime notre soci‚t‚, et
je pense qu'elle est une des meilleures au monde. J'aime encore plus les
communaut‚s du cyberespace comme la ScŠne ou Use Net, parce qu'elles sont
internationales et multiculturelles. C'est pourquoi je veux dire … la soci‚t‚
qu'il y a quelque chose qui ne va pas. Je veux souffler dans mon sifflet
pendant qu'il est encore temps.

Je n'ai rien contre les compagnies de logiciels et je ne les hais pas. En
fait, je veux qu'il existe des compagnies de logiciels. Ce que je n'aime pas,
c'est la structure sociale et le cadre ‚conomique qui gouvernent les gens
comme les entreprises, et auxquelles ils doivent ob‚ir. Je crois les
entreprises et les gens ‚galement prisonniers de ce systŠme.
Vous dites que quelqu'un doit payer. Pourquoi? En quoi consiste ce paiement,
de toute fa‡on? Qu'est ce que le "
savoir sous licence" et le "savoir dans le
domaine public"? Ou, pour utiliser le langage lui-mˆme de l'autorit‚: en quoi
consiste cette arnaque de la "
propri‚t‚ intellectuelle" autour de laquelle
vous faites tant de bruit? Quelle information ai-je le droit de poss‚der ?
Quelle information ai-je le droit de transporter dans ma tˆte ?

Pour les partisans de l'‚conomie post-moderne, la propri‚t‚ et le droit sur
l'information sont une religion. Ils suivent les dieux de l'‚conomie et
pensent qu'ils seront au paradis le jour o— ils deviendront des yuppies avec
la cravate et le costume. Pour eux, le gars qui mourra en laissant le plus de
voitures et de gadgets ‚lectroniques derriŠre lui aura ‚t‚ le plus malin de la
bande. Mon dieu, je d‚teste ces demi-dieux. Il n'y a rien qui ne soit de
l'information, yuppies … la tˆte carr‚e. William Gibson a peut-ˆtre ‚t‚ le
premier … le r‚aliser en 1982. Pourtant, bien peu de gens ont compris ce qu'il
voulait vraiment dire. Peut-ˆtre n'en ‚tait-il pas tout … fait conscient
lui-mˆme ?

Le changement n‚cessaire dans cette soci‚t‚, c'est d'arracher le savoir du
contr“le des grandes compagnies et de l'‚tat pour le rendre aux gens … qui il
appartient, faute de quoi le monde a toutes les chances de ressembler … celui
que d‚crivait Gibson dans "
Neuromancien".

C'est pourquoi nous prenons le nom de cyberpunks. Nous sommes des
hors-la-loi, branch‚s et connect‚s. Nous ferons naŒtre une Šre nouvelle. A nos
yeux, l'information ‚lectronique n'est pas un symbole ou un statut, ou une
fa‡on de gagner de l'argent et la consid‚ration g‚n‚rale, mais une extension
de l'esprit humain.
C'est pourquoi Timothy Leary a appel‚ le micro-ordinateur le LSD des ann‚es
90 - les ordinateurs semblent ‚largir le champ de vision des gens.

Nous ne voulons pas voler les entreprises. Diable non. Nous voulons juste
qu'on nous rende nos droits de citoyens. Si je possŠde un bout d'information,
je veux avoir le droit de le copier. Et si vous essayez de m'en empˆcher,
c'est s–r que je vais mordre. Ne touchez pas ma vie priv‚e ! Foutez le camp de
ma vie!

Mon id‚ologie br–le pour moi comme une lanterne dans la nuit. Ce n'est pas
une id‚ologie de lib‚ralisme, ni le socialisme, le conservatisme, le
communisme ou toutes ces id‚ologies qu'on vous apprend … l'‚cole. Mon
id‚ologie s'appelle Cyberpunk.

Les mafias qui s'accaparent la terre, les pirates qui gagnent des fortunes
en vendant des jeux … des pauvres dingues de l'ordinateur, ceux qui gagnent
leur vie en parasites de la soci‚t‚, tous ceux-l…, vous pouvez les pourchasser
et les tuer si ‡a vous plait. Personne ne les regrettera. MAIS NE TOUCHEZ PAS
LES HACKERS ET LES SWAPPERS, car ceux-ci ne sont pas vos ennemis. Un vrai
cyberpunk ne ferait jamais payer une information. Il ‚change seulement, et je
pense qu'il en a le droit. D'autres ne le pensent pas.

Je ne veux pas d‚truire.
Je veux cr‚er."


King Fisher

******************************************************************************
******************************Cryptage (Bug-in)*******************************
******************************************************************************

Bon, dans ce texte, je ne vais pas vous dire comment d‚crypter un code en x
bits, ni comment ‡a marche, non rien de tout ‡a. Juste vous dire quel est le
type de cryptage le plus s–r pour l'envoi de mail, et comment bien s'en servir
et le cr‚er.

Donc, voil…. Ce n'est pas nouveau, le courrier ‚lectronique est filtr‚ grƒce
… de petits programmes recherchant des mots-cl‚s...mais il ne font pas que ‡a.
Tout courrier apparemment ‚trange, ne contenant que des chiffres, aucun espace
entre les lettres, un fichier attach‚ sous forme exe... sera rep‚r‚.

La technique est donc simple: pour que votre mail soit crypt‚, il ne faut
utiliser que des phrases courantes, mais ayant un sens totalement diff‚rent.
En plus, je vous rappelle que si on trouve un courrier crypt‚, l'Etat a le
droit de vous demander la cl‚ de cryptage si il vous soup‡onne de quoi que ce
soit (surtout de terrorisme).
Il faut donc employer des mots normaux, ou envoyer un .jpg, o— l… tu peux
t'amuser … crypter un truc avec des dessins, parce que l…, c'est plus dur …
d‚crypter qu'un message cod‚ avec des chiffres, le hacking en est la preuve
mˆme... N'employez PAS DE NOMBRE de plus de 10 chiffres.

Donc vous cr‚ez votre dico de mots ‚quivalents et l'envoyez par la poste ou
autre … votre correspondant.

Le message peut-ˆtre re‡u ainsi:
"Bonjour Vitali, c'est Fox. Vous savez le Mozart Institure... Je vous appelle
pour une modification d'ordinateur. Pour un client … D”sseldorf.
Il faudrait se voir, disons, demain … 16 heures? Au 38?... Ah aussi pendant
que j'y pense, vous pourriez penser … me ramener le livre de Voltaire que je
vous ai prˆt‚?"


Toujours ˆtre poli dans les messages, comme si vous connaissiez juste la
personne. Pour les plus litt‚raires, vous aurez reconnu ici le code de Ari,
utilis‚ dans le livre "La sirŠne rouge" ,de "Maurice G. Dantec" (le code ari
n'existe pas en fait, ce n'est que pour le livre qu'il est cit‚).
Dans cet extrait, "le livre de Voltaire" signifie qu'il faut se servir du
d‚codage de Voltaire pour le comprendre. Le 16h peut signifier 19h, 38
aprŠs-demain, et demain signifie et-demi, donc: aprŠs demain … 19h30 sera le
d‚codage de cette unique ligne.

C'est tout bˆte mais c'est le seul moyen r‚el de d‚fense.

Bon, je vous rappelle aussi qu'il y des mots … ne pas employer, … savoir:

"FBI CIA NSA IRS ATF BATF DOD WACO RUBY RIDGE OKC OKLAHOMA CITY MILITIA
GUN HANDGUN MILGOV ASSAULT RIFLE TERRORISM BOMB DRUG HORIUCHI KORESH
DAVIDIAN KAHL POSSE COMITATUS RANDY WEAVER VICKIE WEAVER SPECIAL FORCES
LINDA THOMPSON SPECIAL OPERATIONS GROUP SOG SOF DELTA FORCE CONSTITUTION
BILL OF RIGHTS WHITEWATER POM PARK ON METER ARKANSIDE IRAN CONTRAS OLIVER
NORTH VINCE FOSTER PROMIS MOSSAD NASA MI5 ONI CID AK47 M16 C4 MALCOLM X
REVOLUTION CHEROKEE HILLARY BILL CLINTON GORE GEORGE BUSH WACKENHUT
TERRORIST TASK FORCE 160 SPECIAL OPS 12TH GROUP 5TH GROUP SF"


Puisque ce sont les mots clef de recherche de la machine Echelon, une
protection gouvernementale am‚ricaine qui traque les e-mails.

Voil…, … vous de jouer.

En attendant, voici un codage d'exemple, qui ‚videment ne sera plus du tout
s–r dŠs que P.G.K. sera sorti, donc j'en donne un facile pour la base, aprŠs
vous pouvez le d‚river comme bon vous semble.

A|B|C \J/ Pour le reste, rajouter un point dans le symbole, en faisant tourner
----- L|M les lettres dans le mˆme sens. Ainsi on peut obtenir ceci (ce code
D|E|F /K\ est trŠs dur … repr‚senter sur un fichier .TXT, mais … l'‚crit
----- c'est beaucoup mieux).
G|H|I

S A L U T
__ \ __ __
|. | | |. | . |
-- -- /


Voil…, bonne chance … tous; je crois que NONO le dit souvent, mais ‡a a pas
l'air de vous bouger: les gars, si vous nous aidez pas, on n'ira pas loin,
n'attendez pas, r‚agissez, envoyez vos articles. Ne passer pas votre temps
comme ‡a se voit en ce momment … cr‚er des tonnes d'e-zines diff‚rents un peu
partout, essayez plut“t de rejoindre un d‚j… existant, je crois que NONO sera
d'accord avec ‡a [NONO: tout … fait... Par exemple, j'ai entendu parler d'un
e-zine assez sympa, qui cherchait des volontaires.. Je crois qu'il s'appelle
P.G.K., quelque chose comme ‡a... :-) Non, plus s‚rieusement, je ne vous
conseille guŠre de cr‚er votre propre e-zine, … moins d'ˆtre s‚rieusement
motiv‚ et d'avoir beaucoup d'id‚es. Je crois qu'aucun e-zine ne refusera de
l'aide.]. Il faut s'unir pour y parvenir. Avec une tonne de petits e-zines
par-ci par-l…, vous voyez bien que ce n'est pas trŠs enrichissant.

Enfin, allez ciao tout le monde.

Bug-in, buginutopia@multimania.com

******************************************************************************
***************************Cours d'assembleur (suite)*************************
****************************(ADAM - traduit par NONO)*************************
******************************************************************************


ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
º Cours d'Assembleur par Adam éÄ¿
º º ³
º PARTIE VI º ³
ÈÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ


ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

La derniŠre fois, on a vu la routine pour dessiner une ligne -

mov ax, 0xa000
mov es, ax ; Mettre ES en VGA

mov ax, x1 ; AX = X1
mov bx, y ; BX = Y
mov cx, x2 ; CX = X2

sub cx, ax ; CX = Diff‚rence entre X2 et X1

mov di, ax ; DI = X1
mov dx, bx ; DX = Y
shl bx, 8 ; Y SHL 8
shl dx, 6 ; Y SHL 6
add dx, bx ; DX = Y SHL 8 + Y SHL 6
add di, dx ; DI = Offset du premier pixel

mov al, color ; Stocke la couleur en AL
rep stosb ; Dessine la ligne


Bien que cette routine ‚tait plus rapide que celles en langage "classique",
elle peut ˆtre largement am‚lior‚e. Si on utilise cette routine et la liste
des cycles d'horloges fournie pr‚c‚demment, vous verrez que l'on perd pas
mal de cycles.

Je vous laisse le soin de l'optimisation pour le moment (on verra cela plus
tard), mais d‚j… remplacer STOSB par un MOV ES:[DI], AL ou STOSW augmentera
d‚j… la cadence. N'oubliez pas que si vous d‚cidez d'utiliser une boucle,
vous devrez diminuer CX de 1.

Maintenant, attaquons-nous … une ligne verticale. On doit calculer l'offset
du premier pixel comme pour la ligne horizontale, avec quelque chose comme:


mov ax, 0A000h ; Met le segment VGA dans AX
mov es, ax ; Met ES en VGA

mov ax, Y1 ; D‚place la premiŠre valeur Y en AX
shl ax, 6 ; Y x 2 puissance 6
mov di, ax ; Met la nouvelle valeur d'Y dans DI
shl ax, 2 ; On a donc: Y = Y x 320
add di, ax ; Ajoute cette valeur dans DI
add di, X ; Ajoute X … DI


Un peu de bricolage par-dessus...


mov cx, Y2 ; Stocke Y2 dans CX
mov al, Color ; Stocke la couleur … afficher en AL
sub cx, Y1 ; CX = hauteur de la ligne


Et maintenant la boucle finale...


Plot:
mov es:[di], al ; Affiche un pixel … l'offset courant
add di, 320 ; Descend … la colonne suivante
dec cx ; Diminue CX de un
jnz Plot ; Si CX <> 0, alors continuer d'afficher


Ce n'est pas une super routine, mais c'est d‚j… pas mal. Remarquez qu'il est
possible de faire une comparaison aprŠs DEC CX. C'est trŠs utile, aussi ne
l'oubliez pas.

Amusez-vous un peu avec ce code, et essayez de l'acc‚lerer. Essayez d'autres
m‚thodes...


ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

Ca, c'‚tait la partie facile. Maintenant, on va cherche … afficher des lignes
en diagonales.

La routine suivante est tir‚e de "SWAG", auteur inconnu, et elle est id‚ale
pour d‚monter l'algorithme. Mais elle a besoin d'ˆtre optimis‚e, ce qui ne
tient qu'… vous. Les points … regarder sont:

1) Celui qui l'a ‚crite n'a jamais entendu parler de XCHG - ‡a ‚conomisera
quelques cycles d'horloge;

2) Il comporte un des grands p‚ch‚s du code non-optimis‚ - il lit, puis
d‚place une valeur en AX, et ensuite r‚alise une op‚ration impliquant
AX dans l'instruction suivante, ce qui provoque un cycle suppl‚mentaire
(on verra ‡a plus en d‚tail la prochaine fois).

3) Elle utilise des octets et non des word, ce qui doublerait la vitesse
d'‚criture en VGA.

4) Et le pire de tout, c'est qu'il utilise un MUL pour calculer l'offset.
Utiliser des d‚placement ou un ‚change acc‚l‚rerait les choses.

De toute fa‡on, j'ai comment‚ le code, et je pense qu'il est assez clair,
aussi je n'entrerai pas dans les d‚tails. Vous devriez ˆtre capable de
tout comprendre par vous-mˆme. Essayez-la, et voyez comment elle fonctionne.


Procedure Line(X1, Y1, X2, Y2 : Word; Color : Byte); Assembler;

Var
DeX : Integer;
DeY : Integer;
IncF : Integer;

Asm { Line }
mov ax, [X2] { Met X2 en AX }
sub ax, [X1] { Calcule la longueur de la ligne: X2 - X1 }
jnc @Dont1 { Est-ce que le r‚sultat ‚tait n‚gatif? }
neg ax { Oui, alors mettons-la positive (* -1) }

@Dont1:
mov [DeX], ax { Mettons la longueur dans DeX }
mov ax, [Y2] { Met Y2 dans AX }
sub ax, [Y1] { Y2 - Y1, pour avoir la hauteur de la ligne }
jnc @Dont2 { R‚sultat n‚gatif? }
neg ax { Oui, alors mettons-le positif (* -1) }

@Dont2:
mov [DeY], ax { Met la hauteur en DeY }
cmp ax, [DeX] { Compare la hauteur … la longueur }
jbe @OtherLine { Si la hauteur est <= … la longueur alors saute }

mov ax, [Y1] { Met Y1 dans AX }
cmp ax, [Y2] { Compare Y1 et Y2 }
jbe @DontSwap1 { Si Y1 <= Y2 alors saute, sinon... }
mov bx, [Y2] { Met Y2 en BX }
mov [Y1], bx { Met Y2 en Y1 }
mov [Y2], ax { Met Y1 dans Y2 }
{ Donc au final... }
{ Y1 = Y2 et Y2 = Y1 }

mov ax, [X1] { Met X1 dans AX }
mov bx, [X2] { Met X2 dans BX }
mov [X1], bx { Met X2 dans X1 }
mov [X2], ax { Met X1 dans X2 }

@DontSwap1:
mov [IncF], 1 { Met 1 en IncF, et dessine un autre pixel }
mov ax, [X1] { Met X1 dans AX }
cmp ax, [X2] { Compare X1 avec X2 }
jbe @SkipNegate1 { Si X1 <= X2 alors saute, sinon... }
neg [IncF] { Multiplie IncF par -1 }

@SkipNegate1:
mov ax, [Y1] { Met Y1 dans AX }
mov bx, 320 { Met 320 dans BX }
mul bx { Multiplie 320 par Y1 }
mov di, ax { Stocke le r‚sultat dans DI }
add di, [X1] { Ajoute X1 … DI, et donc, l'offset est dans DI }
mov bx, [DeY] { Met DeY en BX }
mov cx, bx { Met DeY en CX }
mov ax, 0A000h { Met le segment … afficher en AX }
mov es, ax { ES pointe vers le VGA }
mov dl, [Color] { Met la couleur utilis‚e en DL }
mov si, [DeX] { Pointe SI vers DeX }

@DrawLoop1:
mov es:[di], dl { Mel la couleur avec DL en ES:DI }
add di, 320 { Ajoute 320 … DI, c'est-…-dire la ligne suivante }
sub bx, si { Soustrait DeX … BX, DeY }
jnc @GoOn1 { R‚sultat n‚gatif? }
add bx, [DeY] { Si oui, ajoter DeY … BX }
add di, [IncF] { Ajouter IncF … DI }

@GoOn1:
loop @DrawLoop1 { R‚sultat positif, alors afficher le prochain pixel }
jmp @ExitLine { Fini! }

@OtherLine:
mov ax, [X1] { Met X1 dans AX }
cmp ax, [X2] { Compare X1 … X2 }
jbe @DontSwap2 { X1 <= X2 ? }
mov bx, [X2] { Sinon, mettre X2 dans BX }
mov [X1], bx { Met X2 dans X1 }
mov [X2], ax { Met X1 dans X2 }
mov ax, [Y1] { Met Y1 dans AX }
mov bx, [Y2] { Met Y2 dans BX }
mov [Y1], bx { Met Y2 dans Y1 }
mov [Y2], ax { Met Y1 dans Y2 }

@DontSwap2:
mov [IncF], 320 { Met 320 dans IncF, pour la prochaine colonne }
mov ax, [Y1] { Met Y1 dans AX }
cmp ax, [Y2] { Compare Y1 et Y2 }
jbe @SkipNegate2 { Y1 <= Y2? }
neg [IncF] { Sinon, multiplier IncF par -1 }

@SkipNegate2:
mov ax, [Y1] { Met Y1 dans AX }
mov bx, 320 { Met 320 dans BX }
mul bx { Multiplier AX par 320 }
mov di, ax { Stocke le r‚sultat dans DI }
add di, [X1] { Ajoute X1 … DI, donnant l'offset }
mov bx, [DeX] { Met DeX dans BX }
mov cx, bx { Met BX dans CX }
mov ax, 0A000h { D‚place l'adresse du VGA dans AX }
mov es, ax { Pointe ES vers VGA }
mov dl, [Color] { Stocke la couleur … afficher en DL }
mov si, [DeY] { Met DeY dans SI }

@DrawLoop2:
mov es:[di], dl { Met l'octet en DL … ES:DI }
inc di { Incr‚mente DI de un, le prochain pixel }
sub bx, si { Soustrait SI … BX }
jnc @GoOn2 { R‚sultat n‚gatif? }
add bx, [DeX] { Si oui, ajouter DeX … BX }
add di, [IncF] { Ajouter IncF … DI }

@GoOn2:
loop @DrawLoop2 { Continuer de dessiner }

@ExitLine:
{ Termin‚! }
End;



ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ ³
³ LES ENTREES(IN) ET SORTIES(OUT) ³
³ ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ


IN et OUT sont trŠs importants en Assembleur. Ils vous permettent d'envoyer ou
de recevoir des donn‚es directement de l'un des 65 536 ports mat‚riels d'un
PC, ou registres. La syntaxe de base est la suivante:


þ IN <ACCUMULATEUR>, <PORT> - Nom : Entr‚e du port I/O (Input/Output:
Entr‚e/Sortie)
Type: 8086+

Description: Cette instruction lit une
valeur d'un des 65536 ports mat‚riels dans
l'accumulateur sp‚cifi‚.

AX et AL sont g‚n‚ralement utilis‚s pour
les ports d'entr‚e, et DX pour identifier
le port.

Ex: IN AX, 72h

MOV DX, 3C7h
IN AL, DX


þ OUT <PORT>, <ACCUMULATEUR> - Nom : Sortie vers un Port
Type: 8086+

Description: Cette instruction envoye la
valeur … l'accumulateur dans <PORT>. En
utilisant le registre DX pour passer le
port avec OUT, vous pouvez acc‚der …
65536 ports.

Ex: MOV DX, 378h
OUT DX, AX


O.K., ‡a ne vous a pas vraiment aid‚, car cela n'indique pas comment s'en
servir - mais laissons ‡a de c“t‚ pour le moment. Bon, si vous voulez
approfondir votre usage du VGA, vous devez ˆtre … mˆme de programmer ses
registres internes. C'est un peu pareil aux registres classiques, mais vous
pouvez les consid‚rer comme des interruptions, sauf que: 1) Vous envoyez la
valeur au port, et c'est tout; et 2) C'est presque instantan‚.

Par exemple, on va voir comment utiliser la palette directement en se servant
du mat‚riel VGA.


Le VGA a plein de registres, mais les trois prochains sont les plus
importants:

þ 03C7h - PEL Registre d'Adresse (Lecture)
Met la palette en mode lecture

þ 03C8h - PEL Registre d'Adresse (Ecriture)
Met la palette en mode ‚criture

þ 03C9h - PEL Registre de Donn‚es (Lecture/Ecriture)
Lit ou ‚crit 3 valeurs RGB (les 3 couleurs de base: Rouge,
Vert, Bleu; en fran‡ais: RVB), et toutes les trois valeurs
‚crites, l'index est incr‚ment‚ de 1.

Voici la signification de tout cela:

Si on voulait inscrire une valeur RGB, on enverrait la valeur de la couleur …
changer en 03C8h, puis on lirait les 3 valeurs de 03C9h. En Assembleur, on
ferait donc cela:

mov dx, 03C8h ; Met le valeur de DAC(lecture) en DX
mov al, [Color] ; Met la valeur de la couleur en AL
out dx, al ; Envoie AL au port DX
inc dx ; On passe au port 03C9h
mov al, [R] ; Met la nouvelle valeur ROUGE en AL
out dx, al ; Envoie AL au port DX
mov al, [G] ; Met la nouvelle valeur VERTE en AL
out dx, al ; Envoie AL au port DX
mov al, [B] ; Met la nouvelle valeur BLEUE en AL
out dx, al ; Envoie AL au port DX

Cela devrait faire l'affaire. Pour lire la palette, on utilise:

mov dx, 03C7h ; Mel valeur de DAC(‚criture) en DX
mov al, [Color] ; Met la valeur de la couleur en AL
out dx, al ; Envoye AL au port DX
add dx, 2 ; On passe au port 03C9h

in al, dx ; Met la valeur lue au port DX en AL
les di, [R] ; Pointe DI vers la variable R
stosb ; Stocke AL en R

in al, dx ; Met la valeur lue au port DX en AL
les di, [G] ; Pointe DI vers la variable G
stosb ; Stocke AL en G

in al, dx ; Met la valeur lue au port DX en AL
les di, [B] ; Pointe DI vers la variable B
stosb ; Stocke AL en B

Remarquez que cette routine est diff‚rente. Elle vient du langage Pascal.

Si vous travaillez en Assembleur seul, vous pouvez coder cela de maniŠre plus
efficace, comme le premier exemple. J'ai laiss‚ le code tel quel pour que ceux
travaillant avec un langage de haut niveau n'ai pas de difficult‚s.

Maitenant vous avez vu combien IN et OUT peuvent ˆtre utiles. Contr“ler
directement le mat‚riel est … la fois rapide et efficace. Dans les prochaines
semaines, je rajouterai peut ˆtre une liste des ports les plus communs.


ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

Rajouts sur les registres de FLAGS:


Maintenant, bien que nous avons utilis‚ les registres de flags dans nos codes,
je n'ai pas vraiment expliqu‚ leur fonctionnement. Vous pouvez travailler
dans ces conditions, comparer avec ce que vous savez, et essayer de
comprendre comma ‡a, mais si vous voulez aller plus loin en Assembleur, vous
devez savoir quelques choses en plus.

Dans le tutorial 3, j'ai donn‚ une vue extrˆmement simplifi‚e des registres
de FLAGS. En r‚alit‚, le registre de FLAGS, ou EFLAGS, est un registre 32
bits, mais seul les bits 0 … 18 sont utilis‚s. De toute fa‡on, on n'a pas
vraiment besoin de plus que le bit 11, mais il est bon de savoir qu'ils
existent.


Le registre EFLAGS ressemble en fait … ‡a:

18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
AC VM RF -- NT IO/PL OF DF IF TF SF ZF -- AF -- PF -- CF


Les flags sont les suivants:

þ AC - V‚rifie l'Alignement (80486)
þ VM - Mode Virtuel 8086
þ RF - Flag de r‚sume
þ NT - Flag pour les tƒches imbriqu‚es
þ IOPL - Level privil‚gi‚ d'Entr‚e/Sorite (I/O)

þ OF - Flag de D‚passement (overflow)
Ce bit est … UN si une op‚ration arithm‚tique donne un r‚sultat
trop grand ou trop petit pour tenir dans le registre de
destination.

þ DF - Flag de Direction
Quand il est … ZERO, les instruction sur les chaŒnes, telles MOVS,
LODS et STOS incr‚menteront les adresses m‚moires qu'elles
utilisent de un. Cela signifie que, par exemple, DI sera augment‚
quand vous utilisez STOSB pour afficher un pixel en ES:DI. Mettre
ce bit … ZERO diminuera l'adresse m‚moire aprŠs chaque appel de
fonction.

þ IF - Flag pour Permettre les Interruptions
Quand ce bit est activ‚, le processuer r‚pondra aux interruptions
mat‚rielles ext‚rieures. Quand il est … 0, les interrupetions
mat‚rielles sont ignor‚es.

þ TF - Flag de "piŠge"(trap)
Quand ce bit est activ‚, une interruption est g‚n‚r‚e aprŠs chaque
instruction. C'est g‚n‚ralement utilis‚e pour d‚bugger.

þ SF - Flag de Signe
Ce bit est modifi‚ aprŠs une op‚ration math‚matique. Le bit
recoit le bit de haut niveau(on parle aussi de bit de poids fort)
du r‚sultat, et si c'est UN, il indique le r‚sultat de l'op‚ration
‚tait n‚gatif.

þ ZF - Flag Z‚ro
Ce bit est activ‚ quand une op‚ration math‚matique donne un
r‚sultat de z‚ro.

þ AF - Flag de Carry Auxiliaire
Ce bit indique qu'un d‚passement de bas niveau d'un demi-octet de
AL est survenu pendant une op‚ration arithm‚tique.

þ PF - Flag de Parit‚
Ce bit est activ‚ quand le r‚sultat d'une op‚ration est un nombre
sur un bit.

þ CF - Flag de Carry
Ce bit est activ‚ quand le r‚sultat d'une op‚ration est trop
grand ou trop petit pour le registre de destination ou pour l'
adresse m‚moire.


Maintenant, vous n'avez pas vraiment besoin de vous occuper de tout ceux-l….
Pour le moment, connaŒtre Cf, PF, ZF, SF, IF, DF et OF suffira.

Vous pouvez, si vous le voulez, d‚placer une copie des flags dans AH avec
LAHF ("Load AH with Flags", mettre les flags dans AH), et modifier ou lire
des bits individuels, ou modifier l'‚tat des bits plus facilement qu'avec
CLx et STx. Cependant, si vous d‚cidez de modifier les flags, rappelez-vous
qu'ils peuvent ˆtre extrˆmement utiles dans beaucoup de situations.

(Ils peuvent ˆtre aussi utiles quand, tard ans la nuit, des lignes se
dessinent … l'envers, et qu'au bout d'une heure, vous vous rendez compte que
vous avez oubli‚ de vider le flag de direction!)


Adam Hyde, blackcat@faroc.com.au

******************************************************************************
*****************************La gravure (Pyton51)*****************************
******************************************************************************

Introduction:

Alors, tu as de s‚rieux trous dans ton budget??? Manque de fric??? Et tu as
2500 francs au maximum … investir [NONO: personnellement, ce n'est pas ce que
j'appelle manquer de fric, mais bon...]? Une solution:
Le graveur, une des r‚ponses … tous ces problŠmes. C'est donc de quoi cet
article va parler...

Sommaire:

1ø Bien choisir son graveur et ses CD vierges
2ø Quel logiciel choisir?
3ø Qu'est-ce qui rapporte le plus?
4ø Divers


1ø Bien choisir son graveur et ses CD vierges:


Cela d‚pend de votre disque dur et de votre budget:

PremiŠrement: vous avez un assez gros DD (disque dur) avec au moins 700MO de
place: pas de problŠme, il y a juste a acheter un graveur IDE (1200
FF a 2000FF), cette solution est celle qui est la mieux adapt‚e pour un petit
budget mais avec un gros DD.

DeuxiŠmement: Il y a pas trop de place sur le DD. Bon la solution s'impose:
un graveur SCSI: l… c'est tranquille, on fait du lecteur CD au graveur sans
passer par le DD.
Un prix se situant entre 1500FF (sans carte SCSI) … 2500FF (avec carte SCSI).

Les CD vierges:

Pour les CD Playtation, pr‚ferez des CD … face bleue ou verte, mais pas
jaune (‡a ‚blouit la lentille). Les meilleures marques: Memorex (c'est ce que
j'utilise personnelement), Sony et Phillips, mais je dois en oublier.

Pour les CD d'ordi, il vaut mieux pr‚ferer les Kodak, je crois que c'est une
bonne marque pour les CD d'ordi.


2ø Quel logiciel choisir?

Nero burning rom (pour les IDE) s'impose, il en loupe presque pas mais
CDRwin est bien aussi (plus pour les SCSI) (c'est les deux seuls que je
connaissent qui sont fiables)...


3ø Qu'est-ce qui rapporte le plus?

Play ou ordi???
Ben en fait ‡a d‚pend de vous:
si vous avez le cƒble, vous pouvez faire du warez (voir article dans P.G.K. 8)
et donc faire des compil de plusieurs nouveaux jeux se vendant facilement …
200FF piŠce. Sinon je crois que les CD Play sont mieux si vous avez pas le
cƒble, ils se vendent facilement … 40FF piŠce (mais on en vend plus que les
compils … 200FF).
Sinon un ou deux jeux d'ordi grav‚s de temps … autre peuvent faire tenir le
bizness.


4ø Divers:

Question: Comment, … partir d'un crack (recup‚r‚ sur crakstore ou un autre
site), on peut cracker le jeu?
R‚ponse: la question du d‚butant: il faut un gros DD (651Mo de place libre
suffisent: 650 pour le jeu, et au max 1 mo pour le crack). Il faut mettre tout
le CD sur le DD (dans un r‚pertoire sp‚cial de pr‚f‚rence) et ex‚cuter le
crack l… ou le .exe se trouve … cracker (on peut faire le crack soi-mˆme, il
faut suivre les cours de NONO pour ‡a).


La suite, (… votre avis???) au prochain num‚ro...

Pyton51, Pyton51@altern.org
http://altern.org/pyton51

******************************************************************************
**********************************Conclusion**********************************
******************************************************************************

Franchement, si je dois arrˆter P.G.K., je pense trŠs sinc‚rement que ‡a me
manquera. D'ailleurs, je pense que, pendant encore au moins quelques num‚ros,
je continuerai … ‚crire une intro et une conclusion, et … parsemer le num‚ro
de quelques commentaires, comme j'aime le faire. Peut-ˆtre mˆme que je
r‚pondrai … quelques lecteurs, car, je vous l'avoue, pendant toute cette
ann‚e, mon plus grand plaisir ‚tait quand j'allais voir ma mailbox et que je
voyais des mails (de noms qui m'‚taient inconnus) intitul‚s P.G.K..
C'est donc en fait la reconnaissance que j'ai tant appr‚ci‚e, non pas la
reconnaissance d'un quelconque talent, mais la reconnaissance de mon
existence et de mon oeuvre. En effet, je peux maintenant dire que pas mal
de gens me connaissent sur le net et savent ce que j'ai fait.

Et j'en suis trŠs fier...

NONO, nono_18_02@hotmail.com

******************************************************************************
***********************************GREETINGS**********************************
******************************************************************************

PLUGIN, Nunus, Manue, Johann__3, Laurence et David, |hiha|, Tom, CYBZ,
Fulla, Sandrine, Fanny, Vinc, BounBoun, et bien s–r tous ceux qui ont traŒn‚
sur #houseofwarez et #warezfrancais (en undernet)...

******************************************************************************
*****************************SPECIAL GREETINGS TO:****************************
*************************************Sarah************************************
******************************************************************************

← previous
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT