Professional Documents
Culture Documents
Rapport du Mini-projet
Programmation Systme Assembleur
Communication RS232 entre 2 PCs
Ralis par :
BOUAZZAOUI Hamza
Sommaire :
I. Introduction .. 03
1. Cahier des charges. 04 2. Dfinitions. 05 a. Programmation Assembleur ... 05 b. RS232.. 06 c. IRQ4..07 3. Reprsentation visuel. 07 II. Ralisation du mini-projet 08 1. Rpartition des tches. 08 2. Code commenter......08 3. Ralisation concrte et test...17 III. Conclusion 19
Remerciements :
Nous adressons tous nos remerciements et toute notre reconnaissance a notre Professeur Mr. QBADOU qui nous a encadr et dirig tout au long de la ralisation de ce projet. Nous le remercions pour avoir suivi avec autant de rigueur que de sympathie ce travail et pour son norme aide et contributions que a soit par ses ides pertinentes ou par ses conseil tout au long de ce projet, Nous tenons aussi le remercier lui et tout le corps professoral pour leurs soutiens et leurs aides pdagogique et tous ceux qui ont contribues au bon droulement et ralisation de ce travail.
I. Introduction :
Ce mini-projet nous a t propos par notre professeur de Programmation Systme Assembleur Mr. QBADOU en fin de notre formation en cette matire, pour finalement appliquer et progresser dans l'apprentissage dans le but de consolider les connaissances que lon a acquises grce a lui pendant les sances de cours et de TP (compilation des programmes avec TASM ). Dans un premier temps, nous aborderons le cahier des charges qui dcrit prcisment notre projet, nous donnerons aussi quelques dfinitions par rapport aux lments du projet, nous verrons par la suite la partie du code commenter avec le plus de dtails possible pour chacune des interruptions. Et enfin avec quelques mots nous conclurons ce rapport.
b. RS-232 :
BRS-232 (parfois appele EIA RS-232, EIA 232 ou TIA 232) est une norme standardisant un bus de communication de type srie sur trois fils minimum (lectrique, mcanique et protocole). Disponible sur presque tous les PC jusqu'au milieu des annes 2000, il est communment appel le port srie . Sur les systmes d'exploitation MS-DOS et Windows, les ports RS232 sont dsigns par les noms COM1, COM2, etc. Cela leur a valu le surnom de ports COM , encore utilis de nos jours. Cependant, il est de plus en plus remplac par le port USB. Le standard RS-232 recouvre plusieurs autres standards : les recommandations UIT-T V.24 (dfinition des circuits) et V.28 (caractristiques lectriques), ainsi que la norme ISO 2110 pour la connectique. Les liaisons RS-232 sont frquemment utilises dans l'industrie pour connecter diffrents appareils lectroniques (automate, appareil de mesure, etc.). La connectique de cette liaison se prsente frquemment sous la forme du connecteur DE-9 ou DB-25, mais peut aussi tre d'un autre type (RJ25). Seule la version DB-25 est vraiment standardise, la DE-9 (trs souvent appel DB-9 dans le commerce) est une adaptation d'IBM lors de la cration du PC AT. La transmission des lments d'information (ou bit) s'effectue bit par bit, de manire squentielle. Cette transmission est dcrite sur la page communication srie.
c. IRQ4 :
Avant les appareils plug-and-play, les utilisateurs devaient mettre lIRQ valeurs de priphriques manuellement lors de l'ajout de l'appareil, comme un modem ou une imprimante, un systme. Il y a 16 IRQ nous avons utilis lIRQ4. LIRQ4 Cette interruption est normalement utilis pour le premier port srie (COM1) cest donc se port que nous avons utilis pour la ralisation de notre projet. C'est aussi l'interruption par dfaut pour le troisime port srie (COM3).
3. Reprsentation visuel :
Pour mieux comprendre le but de notre projet voici une petite reprsentation graphique.
Pour tablire une connexion entre 2 ordinateurs distants, on a recours une transmission par modems (modulateur/dmodulateur) au travers d'une ligne tlphonique, pour notre projet les 2PCs sont dans la mme pice et le cable que nous utilisons a une longuer de 4m.
2. Code comment :
title RS232 donnees segment
commprt equ THR DL_LSB DL_MSB IER IIR FCR LCR equ equ equ equ equ equ equ
; adresse de base du com1 ; THR ; divisor latch LSB ; divisor latch MSB ; IT enable ; IT identification ; Fifo ctrl register ; ctrl ligne
interr
equ
21h
donnees ends
pile
pile
ends
code
segment use16
ds es ax
push push
si dx
cli xor mov mov in and out mov shl ax,ax fs,ax dx,interr al,interr al,0EFh dx,al ax,cs eax,16
; fs = 0
; lecture du masque d'interruption ; dmasque l'IRQ4 ; criture du masque ; ; eax = cs00h ; eax contient segment et offset de la nvlle ; dtourne l'irq4
; DLAB=1
10
; 9600 bits/s
mov al,5 ; Active l'interruption donnee prete et l'interruption de changement du status de ligne mov out dx,IER dx,al
sti
start: xor lea mov int choix: mov ah,1 int 21h ; lire caractre si,si dx,Salut ah,09h 21h
11
cmp al,'e' jz envoi cmp al,'r' jz recep jmp choix ; si char=r "reception caractre" ; si char=e "envoi caractre"
envoi: mov ah,3dh lea dx,cheminfich mov al,0 int 21h mov x,ax ; ouvrire un fichier (deja existant) ; le chemin du fichier ; 0: en Lecture seul ; ax reoie le Handle du fichier
mov ah,3fh mov cx,512 mov bx,x lea dx,texte int 21h
; lire d'un fichier ; le nombre de caractres a lire ; le Handle du fichier ; ladresse du buffer qui enregistrera la chaine lu)
loop1:
si,texte al,[si] send_char al,'$' fin si loop1 ; envoi caractre ; teste si touche=$ ; sortir
12
recep: mov ah,3ch lea dx,cheminfich mov cx,0 int 21h mov x,ax ; Handle du fichier ; crer le fichier ; le chemin du fichier ; 0 : Lecture seul
mov ah,3dh lea dx,cheminfich mov al,0 int 21h mov x,ax
; ouvrire un fichier (deja existant) ; le chemin du fichier ; 0: en Lecture seul ; ax reoie le Handle du fichier
loop2:
si,texte receive_char [si],al al,'$' fin si loop2 ; teste si touche=$ ; sortir ; recevoir caractre
13
dx si ax es ds
endp
push
dx,IIR al,dx al,6 al,6 erreur_ligne ; erreur ligne ; conserver que bits 1 et 2
; sinon donne prte mov in dx,commprt al,dx ; lit un caractre du tampon de rception
14
jmp
fin_irq4
erreur_ligne: mov in test jz test jz jmp dx,LSR al,dx al,2 overrun al,8 cadrage fin_irq4 ; si bit 3 est = 1 => erreur cadrage (forme) ; si bit 1 est = 1 => erreur overrun ; lecture de l'tat de la ligne
overrun: lea mov mov mov int jmp dx,overrun_msg ax,cs ds,ax ah,9 21h fin_irq4
cadrage: lea mov mov mov int dx,cadrage_msg ax,cs ds,ax ah,9 21h
15
dx ax
overrun_msg cadrage_msg
send_char proc near push push mov attend: in test jz pop mov out pop ret send_char endp al,dx al,20h attend ax dx,commprt dx,al dx dx ax dx,LSR
16
attend: mov mov int test jnz ret receive_char endp dx,commprt ah,2 14h ah,80h attend ;Check for error ;Select COM1: ;Receive opcode
code end
ends prog
17
18
III. Conclusion :
Aprs lachvement de notre mini projet et aprs avoir mis en uvre toutes nos connaissances et nos comptences que lon a acquises au cours de notre formation en langage Assembleur , nous avons lhonneur de dire que nous avons eu beaucoup de plaisir raliser ce travail car on eu loccasion dutiliser dautres interruptions quon a du faire des recherches pour mtriser leur utilisation. Et bien sr tout cela grce notre professeur qui a eu lobligeance et la patience de nous apprendre mtriser le travail sur ce logiciel TASM . Nous tenons aussi dire que nous esprons avoir t a la hauteur de vos attentes.
FIN
19