Probleme de simulation de 8086 sur ISIS PROTEUS [Résolu]

AZERGUI2 5 Messages postés mercredi 2 mars 2011Date d'inscription 22 mars 2011 Dernière intervention - 4 mars 2011 à 14:18 - Dernière réponse : AZERGUI2 5 Messages postés mercredi 2 mars 2011Date d'inscription 22 mars 2011 Dernière intervention
- 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
Afficher la suite 

7 réponses

Répondre au sujet
cs_patatalo 1466 Messages postés vendredi 2 janvier 2004Date d'inscription 14 février 2014 Dernière intervention - 11 mars 2011 à 10:48
+3
Utile
[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.

@++
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_patatalo
cs_patatalo 1466 Messages postés vendredi 2 janvier 2004Date d'inscription 14 février 2014 Dernière intervention - 9 mars 2011 à 08:37
0
Utile
salut,

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

@++
Commenter la réponse de cs_patatalo
Guilou34 142 Messages postés mercredi 5 avril 2006Date d'inscription 29 janvier 2016 Dernière intervention - 9 mars 2011 à 23:38
0
Utile
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.
Commenter la réponse de Guilou34
AZERGUI2 5 Messages postés mercredi 2 mars 2011Date d'inscription 22 mars 2011 Dernière intervention - 10 mars 2011 à 00:12
0
Utile
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 .
Commenter la réponse de AZERGUI2
Guilou34 142 Messages postés mercredi 5 avril 2006Date d'inscription 29 janvier 2016 Dernière intervention - 11 mars 2011 à 10:46
0
Utile
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
Commenter la réponse de Guilou34
AZERGUI2 5 Messages postés mercredi 2 mars 2011Date d'inscription 22 mars 2011 Dernière intervention - 11 mars 2011 à 20:03
0
Utile
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
Commenter la réponse de AZERGUI2
AZERGUI2 5 Messages postés mercredi 2 mars 2011Date d'inscription 22 mars 2011 Dernière intervention - 11 mars 2011 à 20:37
0
Utile
Merci le probleme est résolu :-)))))))))))))))))
Commenter la réponse de AZERGUI2

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.