|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Peut on comparer deux binaire avec cmp ? [ Archives / Newbii ] (MrNice)
Informations & options pour cette discussion
|
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é 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
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|