Bonjour à tous.

Je débute en assembleur et je ne sais pas comment résoudre ce problème : j'ai écrit en même temps le code en C et l'ai traduit en Assembleur. En fait, le but c'est d'écrire en assembleur x86 un programme qui utilise une table d'encodage des caractères pour coder les caractères d'un message fournis par l'utilisateur. Le programme devra demander à l'utilisateur s'il faut coder le message ou bien le décoder.

Après, il demandera ensuite le message à coder sous forme d'une suite de caractères se terminant par un « passeg » à la ligne. Le tableau de codage sera placé dans le fichier en tant que suite d'octets dans le segment data. Un caractère étant codé par un octet (une valeur parmi 256) , la table de codage aura 256 entrées.

J'ai essayé de faire en C avant de comprendre le problème, mais je suis coincé même le sujet du problème, j'ai du mal à le comprendre

Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
#include<stdio.h>
#include<stdlib.h>
 
 
int main()
{
	char tab[20];
	int reponse;
	printf("entrer une chaine de caracetere\n");
	scanf("%s",tab);
	printf ("voulez-vous coder ou décoder(0/1) ?\n");
	scanf("%d",&reponse);
	if(reponse==0){
		printf("*****coder****\n");
 
		i-e je recherche le code Ascii de chaque caracetere
	}
	else if(reponse==1){
		printf("*****décoder****\n");
 
	}
	else{
		printf("erreur choix");
	}
 
 
	return 0;
 
}

Et en assembleur :

Code asm : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
;programme CCexercice4
extern printf
extern scanf
global main
 
segment .data
fmt: db'%d',0
fmt1: db'%s',0
mes1: db 'Entrer une chaine de caractere ?',10,0
mes2: db 'voulez-vous coder ou décoder(0/1) ?',10,0
 
segment .bss
reponse: resb 4
y: resb 4
z: resb 4
 
segment .text
main:
 
 
 
ret

Je sais qu'il faut utiliser un tableau dans ce genre de choses mais je ne sais comment m'y prendre.

Pouvez-vous m'aider, s.v.p. ?

Merci !