You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
1.5 KiB
83 lines
1.5 KiB
page 60,95
|
|
title Solution Exercice 4
|
|
|
|
|
|
; ********************************************
|
|
; * SOLUTION DE L'EXERCICE NUMERO 4 *
|
|
; ********************************************
|
|
|
|
|
|
name ex4
|
|
|
|
extrn dos : far
|
|
extrn co : far
|
|
extrn read:far, write:far
|
|
|
|
CR equ 0dh ;Code ASCII de carriage return
|
|
LF equ 0ah ;Code ASCII de line feed
|
|
|
|
pile segment stack 'stack'
|
|
dw 20 dup (?)
|
|
pile ends
|
|
|
|
|
|
data segment
|
|
bidon db "ERREUR" ;Ne sert à rien dans le cadre de cet exercice.
|
|
buffer db 132 dup (?) ;pour stocker les caracteres entres au clavier.
|
|
data ends
|
|
|
|
|
|
code segment
|
|
assume cs:code , ds:data, es:data
|
|
|
|
messag db "Entrer une ligne:", CR, LF
|
|
|
|
start: mov ax,data
|
|
mov ds,ax ;Initialisation de ds.
|
|
mov es,ax ;Initialisation de es.
|
|
|
|
mov ax,seg messag
|
|
push ax
|
|
mov ax,offset messag
|
|
push ax ;passage de parametres avant l'appel de la
|
|
;procedure WRITE.
|
|
|
|
call write
|
|
|
|
mov ax,seg buffer
|
|
push ax
|
|
mov ax,offset buffer
|
|
push ax ;passage de parametres avant l'appel de READ
|
|
|
|
|
|
call read
|
|
|
|
|
|
|
|
; recherche de CR
|
|
cld ; Flag D = 0
|
|
mov cx, length buffer ; CX = nombre d'elements dans le buffer
|
|
mov di, offset buffer ; DI = offset buffer
|
|
mov al, CR
|
|
repnz scas buffer
|
|
|
|
|
|
mov si,di
|
|
dec si
|
|
mov ax,di
|
|
sub ax, offset buffer
|
|
mov cx, ax
|
|
|
|
std
|
|
boucle: lods buffer
|
|
call co
|
|
loop boucle
|
|
|
|
|
|
|
|
call dos
|
|
|
|
code ends
|
|
|
|
end start
|
|
|
|
|