Rechercher : dans
Par :

Pb assembleur cmp caractère

Dernière réponse le 17 déc 2008 à 17:37:15 Lulu_n10, le 17 déc 2008 à 16:25:37 
 Signaler ce message aux modérateurs

Bonjour, voici mon code, je comprend pas pourquoi le cmp ebx,'A' ne fonctionne pas.

global main

extern printf
extern scanf
extern malloc
extern free
extern fopen
extern fclose
extern fscanf
extern fgets

section .data
	SIZE EQU 256
	buffer times SIZE db 0
	c dd 0
	com db 'A'
	_in_ dd 0
	opening_mode db "r",0
	nom_fichier db "val.txt",0
	msg db "valeur:%s",10,0
	msg_testc db "car:%c",10,0
	msg_vect db "[%f, %f, %f, %f]",10,0
	msg_fscanf db "%c",10,0
	msg_com db "ceci est un commentaire",10,0
	msg_test db "bug",10,0
	struc Vector
		v_1: resd 1
		v_2: resd 1
		v_3: resd 1
		v_4: resd 1
		v_suivant: resd 1
	endstruc
section .text

;------------------------------------------------------------------------------------------------------------------------------
traite_fichier:
	push ebp
	mov ebp,esp
	push dword [_in_]
	push dword SIZE
	push dword buffer
	call fgets
	add esp,12

	push dword buffer
	push dword msg
	call printf
	mov ebx,[buffer]
	push dword ebx
	push dword msg_testc
	call printf

	cmp ebx,'A'
	jne .endcom
	push dword msg_com
	call printf
	jmp .endcom2
.endcom:
	push dword msg_test
	call printf
.endcom2:
	mov esp,ebp
	pop ebp
	ret
;------------------------------------------------------------------------------------------------------------------------------
main:
	push ebp
	mov ebp,esp
	pushad
	push dword opening_mode
	push dword nom_fichier
	call fopen
	add esp,8
	mov [_in_],eax
	cmp eax,0
	je .end
	call traite_fichier
	
.end:
	
	popad
	mov esp,ebp
	pop ebp
Configuration: Linux
Firefox 3.0.4

Meilleures réponses pour « pb assembleur cmp caractère » dans :
Liste des instructions en assembleur Voir Tableau des principales instructions en assembleur Voici une liste (non exhaustive) des principales instructions en assembleur des processeurs 80x86, ainsi que du code machine qui leur est associé et de leur taille en mémoire. Les valeurs val et...
Branchements en assembleur Voir On appelle saut (ou branchement) en assembleur le fait de passer à une instruction autre que celle qui suit celle en cours en mémoire. En effet, en temps normal (c'est-à-dire sans instruction contraire) le processeur exécute les instructions...
Exercice assembleur x86 inversion de chaîne Voir Introduction Notions abordées dans cet exercice Énoncé Rappel Indices Corrigé Explication Introduction Ce petit exercice d'assembleur vise les architectures x86 (Processeurs Intel et Amd 32 bits) et utilise la syntaxe de Nasm, un...
Exercice assembleur x86 occurence d'un caractère VoirIntroduction Notions abordées dans cet exercice Enoncé Corrigé Explication Introduction Ce petit exercice d'assembleur vise les architectures x86 (Processeurs Intel et Amd 32 bits) et utilise la syntaxe de Nasm, un assembleur libre,...
[Photofiltre]Réaliser un assemblage de 2 images VoirPhotofiltre est un logiciel de retouche d'image. Cette astuce fonctionne aussi bien avec Photofiltre qu'avec Photofiltre Studio Dans ce cas précis, Photofiltre va permettre d'assembler un collage c'est-à-dire de coller une deuxième image (en...
[CCM] Utiliser des caractères spéciaux VoirVous pouvez utiliser des caractères spéciaux dans vos messages sur les forums de CCM. Vous pouvez: Soit utiliser la table de caractères Windows (charmap.exe) et copier-coller les caractères dans le message. Soit utiliser les entités...
Caractères spéciaux HTML VoirCodage des caractères spéciaux Le standard HTML demande de respecter le codage des caractères ASCII 7 bits, c'est-à-dire que les caractères accentués ne sont pas autorisés. Il faut pour cela utiliser un codage particulier. Pour...
LaTeX - Table de caractères VoirSymboles mathématiques Symboles fléchés Lettres grecques Note : certains caractères n'apparaissent pas sous certains navigateurs (notamment certaines versions de Internet Explorer), ils sont remplacés par un carré, la...
Les chaînes de caractères en C++ VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une...

1

 Manu, le 17 déc 2008 à 17:37:15

Bonjour,

mov ebx,[buffer]
push dword ebx
push dword msg_testc
call printf
cmp ebx,'A'


Je ne sais pas comment votre buffer est rempli, par contre je vois que vous en prenez 4 octets pour les mettre en ebx et comparer au caractère 'A'.

Soit vous remplissez votre buffer de manière inhabituelle, soit vous vouliez n'en prendre qu'un seul octet. Dans ce pas il faut remplacer :
mov ebx,[buffer]
par
movzx ebx,[buffer]

Manu

Répondre à Manu