begin process at 2010 02 09 19:49:58
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

Newbii

 > 

Peut on comparer deux binaire avec cmp ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Peut on comparer deux binaire avec cmp ?

mardi 12 août 2003 à 14:30:00 | Peut on comparer deux binaire avec cmp ?

MrNice

Lo le forum me revoila ave cun new prob...

donc en fait g une table de variable, je prends al=0 je fait un xlat et je compare ce resultat avec une entrée qui est aussi en binaire (provenant d'un ppi) donc je boucle jusqu à ce que l entrée soit egale a un nombre de mon tableau alors pour comparer je fait un cmp al,dl en sachant que al,dl sont en binaires.. alors est possible ?

voici une partie d emon code source...



.386
.DATA

;Zone de définition des variables
ZERO db 00000000b
UN db 00000001b
DEUX db 00000010b
TROIS db 00000011b
QUATRE db 00000100b
CINQ db 00000101b
SIX db 00000110b
SEPT db 00000111b
MESS1 db 'CODE SWITCH :$'

.CODE
;ouverture du segment de code

DEBUT: mov ax,DGROUP
mov ds,ax
ECRIO CTRL,CONFIG

bo1:
ECRIO PA,ZERO ;eteint tout les leds
LECPPI PB ;le resultat se trouve dans al
mov bl,al ;le resultat se trouve maintenant dans bl
mov cx,8 ;cx=8 = nbr de nbr contenu dans la table
xor eax,eax ;al=0 pour demarer au debut de la table avec xlat

bo2:
xlat ZERO ;al=table+al
/!\ cmp bl,al ;compare al à bl /!\ EST CE POSSIBLE
je ok ;si1 al=bl -> jump ok
inc al ;sinon on incremente al
loop bo2 ;et on boucle jusqu à ce que al=bl

ok: ;cas ou al=bl
ECRIO PA,al ;allume les leds correspondantes
AFFICH MESS1 ;affiche "CODE SWITCH :"
AFFICHNUM al ;affich le nombre a l'ecran
AFFICH CRLF ;on passe a la ligne
mov ah,06h ;lecture de caractère sans marquer d arret
mov dl,ffh ;lecture car dl=ffh sinon sortie du caractère dont le code ascii est dans dl
int 21h
cmp al,'s' ;verifie si le caratère = 's'
jne bo1 ;si caractère != 's' -> jmp bo1
ECRIO PA,ZERO ;sinon etient les leds
mov ax,4c00h ;et on quit le programme
int 21h
end Debut
mercredi 13 août 2003 à 12:32:05 | Re : Peut on comparer deux binaire avec cmp ?

Kaid

En fait ca ne pose aucun problème car le compilateur travaille dans une seule base. Les représentations binaire, décimal, octal, héxadécimal sont justes là pour aider le développeur.

Kaid - kaid.fr.st

-------------------------------
Réponse au message :
-------------------------------

> Lo le forum me revoila ave cun new prob...
>
> donc en fait g une table de variable, je prends al=0 je fait un xlat et je compare ce resultat avec une entrée qui est aussi en binaire (provenant d'un ppi) donc je boucle jusqu à ce que l entrée soit egale a un nombre de mon tableau alors pour comparer je fait un cmp al,dl en sachant que al,dl sont en binaires.. alors est possible ?
>
> voici une partie d emon code source...
>
>
>

> .386
> .DATA
>
> ;Zone de définition des variables
> ZERO db 00000000b
> UN db 00000001b
> DEUX db 00000010b
> TROIS db 00000011b
> QUATRE db 00000100b
> CINQ db 00000101b
> SIX db 00000110b
> SEPT db 00000111b
> MESS1 db 'CODE SWITCH :$'
>
> .CODE
> ;ouverture du segment de code
>
> DEBUT: mov ax,DGROUP
> mov ds,ax
> ECRIO CTRL,CONFIG
>
> bo1:
> ECRIO PA,ZERO ;eteint tout les leds
> LECPPI PB ;le resultat se trouve dans al
> mov bl,al ;le resultat se trouve maintenant dans bl
> mov cx,8 ;cx=8 = nbr de nbr contenu dans la table
> xor eax,eax ;al=0 pour demarer au debut de la table avec xlat
>
> bo2:
> xlat ZERO ;al=table+al
> /!\ cmp bl,al ;compare al à bl /!\ EST CE POSSIBLE
> je ok ;si1 al=bl -> jump ok
> inc al ;sinon on incremente al
> loop bo2 ;et on boucle jusqu à ce que al=bl
>
> ok: ;cas ou al=bl
> ECRIO PA,al ;allume les leds correspondantes
> AFFICH MESS1 ;affiche "CODE SWITCH :"
> AFFICHNUM al ;affich le nombre a l'ecran
> AFFICH CRLF ;on passe a la ligne
> mov ah,06h ;lecture de caractère sans marquer d arret
> mov dl,ffh ;lecture car dl=ffh sinon sortie du caractère dont le code ascii est dans dl
> int 21h
> cmp al,'s' ;verifie si le caratère = 's'
> jne bo1 ;si caractère != 's' -> jmp bo1
> ECRIO PA,ZERO ;sinon etient les leds
> mov ax,4c00h ;et on quit le programme
> int 21h
> end Debut
>

jeudi 14 août 2003 à 20:19:53 | Re : Peut on comparer deux binaire avec cmp ?

CoreBreaker

Si tu parler du format dans ton source:
12h equivaut à 18d qui équivaut aussi à 00010010b.

bref que tu fasses
cmp al, 41h
ou
cmp al, 00100001b
ou
cmp al, 65
ou encode
cmp al, 'A'

ça revient au même exactement au même car ce sont les même nombres.

Core Breaker

jeudi 6 janvier 2005 à 10:50:56 | Re : Peut on comparer deux binaire avec cmp ?

misterzinzin

bo2:
> xlat ZERO ;al=table+al
> /!\ cmp bl,al ;compare al à bl /!\ EST CE POSSIBLE
> je ok ;si1 al=bl -> jump ok
> inc al ;sinon on incremente al
> loop bo2 ;et on boucle jusqu à ce que al=bl
...c'est pas un peu con d'utiliser des xlat dans un tableau avec des valeur qui se suivent ?
si al=0 et xlat zero... al=0
si al=1 et xlat zero... al=1
.... je vois pas trop l'utilité de xlat dans ce cas lol
moi j'aurais plutot fait:
mov al,-1
bo2:
inc al
cmp bl,al
jne bo2

... le meme code sans Xlat avec plein de valeur dans le .data...
maintenant ca se peut que je me soit planté et que j'aie pas compris le but de ton code
moi, le seul, l'unique, ZinZin


Cette discussion est classée dans : code, db, mov, bl, al


Répondre à ce message

Sujets en rapport avec ce message

Multiplication de deux nombres compris entre 0 et 99 en assembleur [ par petitspirou ] salut, j'ai un programme a faire mais je suis nul en assembleur, voici ce que j'ai fais mais ca ne fonctionne pas.Quelqun peut'il me le corriger et me Recuperer le mode Video [ par FearBlue ] Slt a tous !!!!!!!Je souhaite recupérer le mode video g lus dans une doc ca :Cette fonction retourne le numéro de code du mode vidéo en cours et tient Affichage de l'heure a partir du BIOS [ par FearBlue ] Slt a tous !!!!Je debute en ASM et je desirerais afficher l'heure a partir de la lecture de l'heure du biosje vous montre mon code !!!! pb int 21h ah=0ah [ par mat74 ] salut a ts ,voila j'ai fais un programme qui est censé lire une chaine entré par l'utilisateur et ensuite la reafficher . Il me demande bien d'entré u inversion de l'ordre d'uns string [ par VBFRANCE ] Je suis un jeune debutant dans l'assembleur.J'ai un petit prog pour afficher les valeur sous format binaire, mais je suis bloquer par un petit soucis. couleur en TASM ? [ par redwings ] j'aimerai savoir les instructions qui permettent d'affiche un caractere en couleurAL contient le caractere ...MOV DL,AL MOV AH,02hINT 21h...merci secteur boot : afficher un message [ par sajaris ] bonjourje suis ADABLA et je debute en OS, il y a 1 semaine. je voudrai SVP, votre avis sur mon petit code de boot.En fait je voudrai afficher un messa Modifer le vecteur d'interruptions [ par vecchio56 ] Bonjour J'essaie de refaire la source http://www.cppfrance.com/code.aspx?ID=33558 en assembleur (ca consiste à modifier la routine de l'interruption 0 probleme avec un bootloader [ par anonyme_man_in_this_world ] salut !! je voudrais coder un bootloader , tous ce compile bien ,je copie / colle le fichier .BIN dans une disquette ,mais lors le redemmarrage d Peut on mieux faire ? [ par spiky31 ] Bonjour Voila j'ai commencé ce matin a programmer en assembleur intel et j'aurais voulu avoir votre avis (Je me considére pas vraiment comme un noob


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,936 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales