Date et switch

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 360 fois - Téléchargée 27 fois

Contenu du snippet

un petit code, mon premier en asm, qui montre comment récupérer la date et comment utiliser la méthode switch case...
Voila c pourris mais j'en suis fier...

Source / Exemple :


MODEL SMALL		
STACK 100h	
.DATA			

Dimanche DB "Nous sommes dimanche$"
Lundi	 DB "Nous sommes lundi$"
Mardi	 DB "Nous sommes mardi$"
Mercredi DB "Nous sommes mercredi$"
Jeudi	 DB "Nous sommes jeudi$"
Vendredi DB "Nous sommes vendredi$"
Samedi 	 DB "Nous sommes samedi$"

.CODE			
START:		
MOV AX, @DATA	
MOV DS, AX	
MOV AH,2Ah		; Fonction DOS 2Ah (retourne des infos sur la date)
INT 21h			; Interruption DOS (le jour est dans AL)

switch:		
Case1:
	CMP AL,0		; CMPare AL avec 0
	JNZ Case2		
	MOV DX, OFFSET Dimanche ; 
	JMP Endswitch
Case2:
	CMP AL,1		
	JNZ Case3
	MOV DX, OFFSET Lundi
	JMP Endswitch
Case3:	
	CMP AL,2
	JNZ Case4
	MOV DX, OFFSET Mardi
	JMP Endswitch
Case4:
	CMP AL,3
	JNZ Case5
	MOV DX, OFFSET Mercredi
	JMP Endswitch
Case5:
	CMP AL,4
	JNZ Case6
	MOV DX, OFFSET Jeudi
	JMP Endswitch
Case6:
	CMP AL,5
	JNZ Case7
	MOV DX, OFFSET Vendredi
	JMP Endswitch
Case7:
	MOV DX, OFFSET Samedi		
Endswitch:

MOV AH,9		; Fonction d'affichage d'une chaine de caractère
INT 21h		

MOV AX, 4C00h		; Retour 
INT 21H			

END START

Conclusion :


http://mydev.free.fr <<<< allez y faire un tour...

A voir également

Ajouter un commentaire

Commentaires

Messages postés
7
Date d'inscription
mercredi 23 janvier 2002
Statut
Membre
Dernière intervention
12 novembre 2002

Pour le switch ya plus simple et bcp plus rapide
ca consiste a faire un call tableau[BX]
avec dans le tableau les adresses des fonctions qui traiterons chaque cas
! prevoire un default si bx > a une valeur
Messages postés
85
Date d'inscription
dimanche 10 mars 2002
Statut
Membre
Dernière intervention
17 novembre 2002

je l'ai compilé avec tasm mais sa doit marché avec masm mais pas avec la version 32 car ya du 16 bits...
voila
Messages postés
1277
Date d'inscription
mercredi 21 mars 2001
Statut
Modérateur
Dernière intervention
21 juin 2009
2
avec koi ça se compile ton truc?
G masm32 et ça fonctionne pas...:(

*** merci d'indiquer le compilateur dans le titre de la source! ***
Messages postés
58
Date d'inscription
jeudi 25 avril 2002
Statut
Membre
Dernière intervention
19 juillet 2003

Olleh

Ca m'a rappeler une fonction que j'avais faite je sais plus pourkoi.

Dans ce genre de k, on peut aussi utiliser une table de 'variable'. Ca evite la serie de teste... C'est peu etre pas plus court (une fois compiler), mais c'est plus souple. On peut aussi l'adapter pour plein d'autre fonction (math par exemple, sin, cos, ...) :

Jmp start

; Chaine a afficher
Dimanche DB "Nous sommes dimanche$"
Lundi DB "Nous sommes lundi$"
Mardi DB "Nous sommes mardi$"
Mercredi DB "Nous sommes mercredi$"
Jeudi DB "Nous sommes jeudi$"
Vendredi DB "Nous sommes vendredi$"
Samedi DB "Nous sommes samedi$"

; Table des offsets des textes
Pos dw Offset Dimanche
dw Offset Lundi
dw Offset Mardi
dw Offset Mercredi
dw Offset Jeudi
dw Offset Vendredi
dw Offset Samedi

start:
mov ah, 2ah ; Fnt lecture Date courant
int 21h

xor ah, ah ; Efface ah (on en a rien a faire ;-)
shl al,1 ; al = al * 2
add ax, Offset pos ; ax = ax + Offset Pos
push ax ; Place ax dans la pile
pop bp ; place la pile dans bp

mov dx, [bp] ; on place l'offset dans DX (chaine a ecrire)
mov ah, 09h ; Fonction affichage Dos
int 21h ; ...

; Fin du programme
mov ax, 4c00h
int 21h

Compiler avec a86...

Question : int19h@caramail.com

int19h

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.