Probleme de simulation de 8086 sur ISIS PROTEUS

Résolu
AZERGUI2 Messages postés 5 Date d'inscription mercredi 2 mars 2011 Statut Membre Dernière intervention 22 mars 2011 - 4 mars 2011 à 14:18
AZERGUI2 Messages postés 5 Date d'inscription mercredi 2 mars 2011 Statut Membre Dernière intervention 22 mars 2011 - 11 mars 2011 à 20:37
Bonjour,

j'ai généré le .exe du programme suivant par le MAMSM32 ,mais la simulation ça marche pas au niveau de ISIS PROTEUS !!! il s'agit de trois boutons poussoires 'PORT A une entrée ' et une LED dans la sortie 'PORT B' de kit8055 normalement la LED ne s'allume qu'après la détection de la combinaison 010 de l'entrées. ce que j'ai dans la simulation la LED est allumée tout le temps !!! l'adresse de base j'ai pris 200h .

.386
.model flat, stdcall
option casemap:none

include \masm32\include\windows.inc

include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib

include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib

.data
porta equ 200h
portb equ 202h
portc equ 204h
controle equ 206h

.code
start:

mov dx,controle
mov al,90h
out dx,al
boucle:
mov dx,porta
in al,dx
and al, 00000111b
cmp al, 00000101b
jne faux
mov al,00000001b
jmp suite
faux:
mov al,00000000b
suite:
mov dx,portb
out dx,al
jmp boucle


end start

7 réponses

cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
11 mars 2011 à 10:48
[ORG 0x100]
[BITS 16]

%define porta 0x200
%define portb 0x202
%define portc 0x204
%define controle 0x206

start:

mov dx,controle
mov al,90h
out dx,al
boucle:
mov dx,porta
in al,dx
and al, 00000111b
cmp al, 00000101b
jne faux
mov al,00000001b
jmp suite
faux:
mov al,00000000b
suite:
mov dx,portb
out dx,al
jmp boucle


Assembler avec "nasm -f bin monfichier.asm -o monbin.com"

Dans ton cas les mov dx,controle seront remplacés par 0x66,mov dx,contrôle afin de convertir en 16 bits mais ton emulateur 16 bits remplacera par mov edx,controle.

@++
3
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
9 mars 2011 à 08:37
salut,

Ne pas mélanger la programmation 32 bits (mode protégé) et 16 bits (mode réel) et ça ira mieux.

@++
0
Guilou34 Messages postés 142 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 29 janvier 2016 1
9 mars 2011 à 23:38
Il est possible que le problème trouve son origine dans une trop grande différence de vitesse entre le PC et le PIC : alors que celui-ci est en train d'exécuter l'ordre de sortir une valeur sur un port donné, le PC a déjà exécuté son in al,dx.

Il suffit donc d'ajouter un petit délai entre les deux commandes ou même, plus simplement, de répéter plusieurs fois in al,dx.
Amicalement.
0
AZERGUI2 Messages postés 5 Date d'inscription mercredi 2 mars 2011 Statut Membre Dernière intervention 22 mars 2011
10 mars 2011 à 00:12
j'ai essayé votre réponse , mais tjrs le probleme est le meme je suis vraiment découragé :( j'aimerai bien de m'envoyer un exemple de programme simulé sur ISIS pour je puisse s'avoir ce que je fais ... car je me suis perdu .
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Guilou34 Messages postés 142 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 29 janvier 2016 1
11 mars 2011 à 10:46
Salut
Le port 200h est absent sur les PC actuels, il était destiné autrefois au contrôle des manettes de jeu.
Actuellement c'est un port USB qui est utilisé et le seul moyen d'exécuter des commandes IN et OUT, c'est d'utiliser le port parallèle de l'imprimante.
Maintenant j'avoue n'être pas familier avec ISIS PROTEUS, je m?étais surtout penché sur ton programme. Mais l'intitulé de ton message « simulation d'un 8086 » et le message lui-même me laissent un peu perplexe.
Tu devrais être un peu plus clair.
Amicalement
0
AZERGUI2 Messages postés 5 Date d'inscription mercredi 2 mars 2011 Statut Membre Dernière intervention 22 mars 2011
11 mars 2011 à 20:03
Merci pour votre temps , c'est quoi ce (nasm -f bin monfichier.asm -o monbin.com) ? je crois que c'est une commande tu peut m'expliquer plus (j'utilise emu8086 mais il me donne des erreurs au niveau de compilation
0
AZERGUI2 Messages postés 5 Date d'inscription mercredi 2 mars 2011 Statut Membre Dernière intervention 22 mars 2011
11 mars 2011 à 20:37
Merci le probleme est résolu :-)))))))))))))))))
0
Rejoignez-nous