Qui sait programmer en Assembleur ?

Cette catégorie traite de développements récents destinés à nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

Fabrice Montupet

Re: Qui sait programmer en Assembleur ?

Message par Fabrice Montupet »

Inutile de faire les gros yeux :wink: :lol:
Car si tu lisais bien mon message, je parle d'un "286SX" que tu cites et qui, à ma connaissance, n'existe pas, et non du fort connu et commun 80286 ou (i286) que je cite d'ailleurs.
Pour dire autrement ce que j'ai écrit plus haut: le 286 n'existant pas en version avec FPU intégré, comme peuvent l'être les 386DX ou 486DX, un "286SX" n'a pas de sens.

Je reconnais bien sur la photographie, les boitiers PC Commodore que je vendais mais surtout peux tu me montrer une pix d un 286sx ? je serais curieux d en voir un...
gatesbillou
Messages : 128
Inscription : 31 juil. 2008 14:02
Localisation : la cadiere d'azur - var (83)

Re: Qui sait programmer en Assembleur ?

Message par gatesbillou »

Au temps pour moi, je pensais que SX signifiait 16 bits pour le bus de données et pas de co-processeur intégré , c'est pourquoi je disait "286 sx 16".
Il sagissait alors d'un 80286 16 mhz avec 16 bits de bus de données sans FPU et non un "80286 sx 16". Rectification faite , merci pour l'info.
jester
Messages : 2328
Inscription : 01 janv. 2009 23:16
Localisation : Grenoble

Re: Qui sait programmer en Assembleur ?

Message par jester »

Pas tout à fait Fabrice, 386SX signifie bus de 32 buts en interne et 16 bits en externe (pour les données), 386DX est la version commune ou i386 avec un bus interne et externe pour les données de 32bits. Ensuite le DX du i486 indiquait la présence d'une FPU intégré... c'était un peu le bordel dans les notations. Reste que la série 386 n'a jamais eu de FPU intégré.

Mais bon, le i286sx ne semble pas avoir existé et n'aurait pas beaucoup de sens puisque Full 16bits.
Peut être avais-tu un i386sx dans ton PC prévue à la base pour un 286, l'objectif du i386sxétait de pouvoir se placer directement à la place d'un 286 ?
Fabrice Montupet

Re: Qui sait programmer en Assembleur ?

Message par Fabrice Montupet »

En effet, Fabrice! j'ai fait une erreur concernant le 386! le FPU a été intégré à partir du 486. En me relisant après coup , je me suis aperçu de l'énormité que j'avais écrit concernant le 386 ! :o

Par "SX", je pense qu'Intel voulais surtout dire... "low cost". Oui, un des avantages du 386SX était son bus externe 16 bits permettant également son installation sur des carte mères à base de 286. Mais la chose n'était si simple: la carte mère du 286 devait disposer d'un socket compatible (+gestion adaptée), sinon il fallait passer par l'acquisition d'une mini carte sur laquelle était monté le 386SX et qu'il fallait insérer sur le support du 286.

GatesBilou, nous avons tous les deux écrit une boulette! Arf.. l'âge commence à nous jouer des tours ^_^
Avatar de l’utilisateur
gilles
Messages : 2782
Inscription : 07 août 2008 13:44
Localisation : Nantes
Contact :

Re: Qui sait programmer en Assembleur ?

Message par gilles »

Initialement, c'est à dire pour le 386, SX signifie bien 16bits, mais S pour Single par rapport à D double.

Par contre cela ne s'applique plus au 486 SX, le SX devenant ici une référence au côté low cost qu'avait le 386sx alors qu'en réalité, un 486SX est un 486DX raté (qui ne monte pas en fréquence et avec FPU désactivé ou fautif).
Fabrice Montupet

Re: Qui sait programmer en Assembleur ?

Message par Fabrice Montupet »

Intel aimait bien jouer avec les désignations, encore un exemple: le FPU 487SX était ni plus ni moins qu'un 486DX... Même coût de production évidement, mais pas vendus au même prix... l'arnaque...
Avatar de l’utilisateur
gilles
Messages : 2782
Inscription : 07 août 2008 13:44
Localisation : Nantes
Contact :

Re: Qui sait programmer en Assembleur ?

Message par gilles »

en vérifiant la dénomination SX / DX j'ai trouvé un quasi 386 intel avec FPU intégré, en fait un 486 dans un package de 386 : le rapidcad.
Visiblement c'est quand même un jeu de 2 chips mais le second (le faux 387) est un simple bouchon actif.
http://www.cpushack.com/RAPIDCAD.html
Je ne connaissais pas ce CPU avant aujourd'hui...
Avatar de l’utilisateur
clearscreen
Messages : 234
Inscription : 05 juin 2011 02:39
Localisation : PARIS

Re: Qui sait programmer en Assembleur ?

Message par clearscreen »

Bonjour,
pour ma part c'était de l'assembleur Z80 sur amstrad, et dans le cadre de mes études du 68000 (super proc.)

je n'ai pas trop touché à l'assembleur x86 ( plutôt en turbo pascal, c , c++ de ce côté là)

Cls.
Avatar de l’utilisateur
Eric_80
Messages : 184
Inscription : 31 mars 2011 16:52

Re: Qui sait programmer en Assembleur ?

Message par Eric_80 »

jester a écrit :Maintenant, et pour faire plaisir à plusieurs personnes, :) j'aimerais que tu nous donnes une version en assembleur, de la conversion d'un nombre octal en décimal. C'est d'ailleurs plus sportif de réaliser des divisions en langage machine sur des vieux proc 8bits :wink:
On considérera un nombre 16 bits.
Voici donc la version en assembleur : (6803 ici)

Prenons encore l'exemple du nombre octal : 3326
Il suffit donc d'en extraire 3, 3, 2 et 6 par une succession de divisions en langage machine en base 10,
de multiplier chacun à la puissance de 8 correspondante par un simple décalage de bits à gauche,
et d'additionner les sommes obtenues sur 2 octets. Une simple boucle LOOP parcourant le nombre jusqu'à ce que le reste = zéro.


Le programme Basic se contente de demander à l'utilisateur un nombre en Octal sur 16 bits et le POKE,
puis éxécute le programme en langage machine qui fait tous les calculs.
Et lit avec un PEEK le résultat Décimal calculé et stocké en mémoire par le programme en langage machine.

Vous pouvez tester le programme avec l'émulateur de Daniel : DCAlice.
Si vous avez des questions, demandes d'explications sur le code source,
ou si vous souhaitez faire une version pour un autre processeur, ou faire une version plus courte, n'hésitez pas. :)

Code : Tout sélectionner

      ORG  $4A00
      EXC  START
START LDD  #$0
      STD  $5B0A
LOOP  LDX  $5B00
      CPX  #$2710
      BCC  DMIL
      CPX  #$3E8
      BCC  MIL
      CPX  #$64
      BHS  CENT
      CPX  #$A
      BHS  DIZ
      LDD  $5B00
      ADDD $5B0A
      STD  $5B0A
      RTS
DMIL  LDAA #$C
      STAA $5B07
      LDD  #$2710
      BRA  DIVIZ
MIL   LDAA #$9
      STAA $5B07
      LDD  #$3E8
      BRA  DIVIZ
CENT  LDAA #$6
      STAA $5B07
      LDD  #$64
      BRA  DIVIZ
DIZ   LDAA #$3
      STAA $5B07
      LDD  #$A
DIVIZ STD  $5B02
      LDD  $5B00
      LDX  #$0
BOUCL SUBD $5B02
      INX
      PSHX
      PSHB
      PSHA
      PULX
      CPX  $5B02
      BCS  SUITE
      PULX
      BRA  BOUCL
SUITE PULX
      STX  $5B04
CNVR  LDX  #$0
      LDD  $5B04
BCL2  LSLD
      INX
      CPX  $5B06
      BLO  BCL2
      STD  $5B08
      ADDD $5B0A
      STD  $5B0A
MULTI LDX  $5B04
      LDD  $5B00
BCL3  SUBD $5B02
      DEX
      BNE  BCL3
      STD  $5B00
      LDX  $5B00
      CPX  #$0
      BEQ  FIN
      JMP  LOOP
FIN   RTS
Et voici la partie en Basic:

Code : Tout sélectionner

10 INPUT "NOMBRE OCTAL: ";N
20 N1=INT(N/256):POKE 23296,N1
30 N2=N-N1*256:POKE 23297,N2
40 EXEC 18944
50 PRINT "DECIMAL: ";256*PEEK(23306)+PEEK(23307)
60 PRINT:GOTO 10 
Avatar de l’utilisateur
clearscreen
Messages : 234
Inscription : 05 juin 2011 02:39
Localisation : PARIS

Re: Qui sait programmer en Assembleur ?

Message par clearscreen »

Bonjour,
je rebondis sur le message qui parle de la directive pour introduire du code assembleur dans du turbo pascal 6.

Je n'ai pas trop connu la directive asm en turbo pascal, car avant de faire tu C/C++ j'ai principalement fait du TP 3 et 5.5 -mais de manière "classique"

En revanche, sur turbo 3 , j'ai beaucoup utilisé inline (à ne pas confondre avec l'inline du C++ qui est le successeur des macro #define du C pour définir des macros) qui permettait de mettre directement du code machine dans une procédure pascal.

Sur Epson, ça m'a bien servi pour accéder au bdos et appeler des fonctions pour les fdd et sur CPC pour faire des petites librairies graphiques...

Bien à vous.
Répondre