Crunchez vos adresses URL
|
Rejoignez notre discord
|
Hébergez vos photos
Affichage des résultats 1 à 10 sur 10
  1. #1
    Salut,

    je voudrai savoir quelles sont les instructions spécifiques utlisées en assembleur x86 pour écrire sur le bus de données. L'écriture sur le bus d'I/O se fait via les in/out, sur le bus d'adresse avec des mov je pense mais en utilisant quels registres ? Si quelqu'un peux m'expliquer comment cela fonctionne.

    merci d'avance

  2. #2
    Si tu sais lire le russes, tu peux jeter un oeil au paragraphe 4 intitulé "Устройства PCI" :
    http://wasm.ru/article.php?article=hardzen
    Tu peux aussi traduire avec google ou babelfish aussi :D

    Code:
    ;BL - bus, BH - device, CL - function, CH - register
    RD_PCI PROC NEAR
     mov dx,0CF8h
     xor eax,eax
     mov al,bl
     or ah,80h ;Бит достоверности в 1
     shl eax,16
     mov ah,bh
     shl ah,3
     or ah,cl
     mov al,ch
     and al,0FCh ;Сбросить 2 младших бита
     out dx,eax
     mov dx,0CFCh
     in eax,dx
     ret
    RD_PCI ENDP
    edit: tu fais ça sous quel OS ?

  3. #3
    Salut,

    merci pour ta réponse, en fait j'ai pas été super clair dans ma question, l'utilisation du bus d'I/O avec les in/out c'est ok(bus 16 bits). En fait mon problème est plus au niveau des mov pour le bus de données. On peux effectuer différentes opérations avec le mov : mov segment->segment, segment->registre, registre->segment, mémoire->segment, segment->mémoire .... Quels registres sont utilisés pour l'écriture sur le bus d'adresse ? comment cela fonctionne ?

    P.S : je n'utilise pas d'os c'est direct du hard.

  4. #4
    Salut,

    Si tu fais un truc du genre : mov [0x0100],eax tu vas mettre 0x100 sur le bus d'adresse.

    En fait j'ai un peu de mal à comprendre ta question. Si c'est pas indiscret c'est pour quoi faire ?
    "si tout le monde s'etait dit "pour quoi faire ?" je pense qu'on tournerait encore sur 8086. Si tant est qu'on ait l'electricite ... " Franck@X86
    If all goes well will Dell sell Cells?
    <°)))><

  5. #5
    En fait ma question était la suivante :
    Y a t-il un (ou plusieurs) registres particuliers dans les CPU X86 utilisé pour l'écriture sur le bus d'adresse ?
    par exemple pour l'écriture sur le bus d'I/O (avec l'opcode out) l'adresse sur le port doit être dans le registre DX. Y a-t-il ce genre de contraintes avec les mov pour l'écriture sur le bus d'adresse ou alors peut on faire directement "mov adresse_sur_bus, src" ?
    d'après ce que tu me dis jihef il n'y a pas l'air d'avoir ce genre de contraintes

    merci à tous pour l'aide aportée !

  6. #6
    Sur les 2 espaces d'adressage (i/o et memory) un s'utilise avec les in/out et l'autre avec les mov (+ certains modes d'adressage).
    Y'a rien de spécial sur l'espace mémoire qui soit similaire au in/out des i/o.
    "si tout le monde s'etait dit "pour quoi faire ?" je pense qu'on tournerait encore sur 8086. Si tant est qu'on ait l'electricite ... " Franck@X86
    If all goes well will Dell sell Cells?
    <°)))><

  7. #7
    Ok merci pour les infos. En fait après c'est le binaire qui change. En asm on écrit toujour un mov mais le binaire derrière diffère suivant l'opération que l'on effectue (seg->seg seg->memoire seg->registre....)
    merci pour l'aide ! j'ai les infos que je voulais :D

  8. #8
    Citation Envoyé par jihef
    Sur les 2 espaces d'adressage (i/o et memory) un s'utilise avec les in/out et l'autre avec les mov (+ certains modes d'adressage).
    Y'a rien de spécial sur l'espace mémoire qui soit similaire au in/out des i/o.
    C'est tout à fait ça.
    Les PMIO sont spécifiques au x86 me semble-t-il. Leur existence est historiquement liée aux petites quantités de ram des premiers PC.
    Les PMIO sont maintenant délaissés. Le PCI-Express par exemple garde un mode d'adressage PMIO pour la compatibilté PCI, mais propose en parallèle un espace MMIO étendu à 4K (au lieu de 256 octets) pour chaque device.
    Idem pour le smbus, Intel propose déjà un MMIO pour y accéder en plus du classique PMIO.

  9. #9
    Sinon question subsidiaire c'est en 16 ou 32 bits ?

    Car c'est un peu plus complexe pour le calcul des adresse en 16 bit du fait de la segmentation fixe.
    "si tout le monde s'etait dit "pour quoi faire ?" je pense qu'on tournerait encore sur 8086. Si tant est qu'on ait l'electricite ... " Franck@X86
    If all goes well will Dell sell Cells?
    <°)))><

  10. #10

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •