begin process at 2008 09 05 18:44:11
1 237 429 membres
369 nouveaux aujourd'hui
14 313 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UN RESOLVEUR SUDUKO AVEC ASSEMBLEUR NASM


Information sur la source

Catégorie :Applications ms-dos Classé sous : resolveur suduko, backtracking, suduko, emsi Niveau : Initié Date de création : 28/02/2008 Date de mise à jour : 29/02/2008 00:58:13 Vu / téléchargé: 2 849 / 69

Note :
Aucune note

Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

Description

Un resolveur suduko avec assembleur NASM

il y a dans la source une fonction iteratif  et  une autre recursif

aussi les tests de saisie en rempliant la grille

Source

  • bits 16
  • org 0x0100
  • section .data
  • ph db 'Taper ENTER ou ESC pour Voir solution $'
  • ph1 db 'Mountassir Youssef 2IIR3 EMSI','$'
  • ph3 db 'msavyo1@hotmail.com','$'
  • ph2 db 'Pas de solution$'
  • section .bss
  • yy resb 1
  • cd resb 81
  • x resb 81
  • xx resb 81
  • sol resb 1
  • nbr resw 1
  • good resb 1
  • [section .text]
  • mov ax,3
  • int 10h
  • mov ax,1112h
  • mov bl,30h
  • int 10h
  • mov ah,1
  • mov ch,8
  • mov cl,12
  • int 10h
  • ;****MOUNTASSIR ---YOUSSEF------2IIR3********
  • call cadre1
  • call cadre2
  • call cadre3
  • call col
  • call souris
  • ;**********affichage phrase**************************
  • mov dl,40
  • mov dh,10
  • call gotoxy
  • mov bx,ph
  • call puts
  • mov dl,40
  • mov dh,13
  • call gotoxy
  • mov bx,ph1
  • call puts
  • mov dl,40
  • mov dh,15
  • call gotoxy
  • mov bx,ph3
  • call puts
  • ;**********FIN affichage phrase*************************
  • mov cx,81
  • initial:
  • here:mov bx,cx
  • mov byte [(bx+cd)-1],'0'
  • loop here
  • mov dl,1
  • mov dh,1
  • call gotoxy2
  • click :
  • call getch
  • cmp al,13
  • jnz z1
  • mov al,27
  • z1 :cmp al,27
  • jnz z2
  • call backo
  • mov [nbr],bp
  • mov byte [xx+bp],255
  • call posa
  • call tri
  • mov bp,-1
  • ;call solurecursif
  • call soluiteratif
  • cmp byte [good],1
  • jz afi
  • mov al,7
  • call putchar
  • mov bx,ph2
  • call clrscr
  • call puts
  • call getch
  • jmp outaa
  • afi
  • call afff
  • outaa :
  • call outa
  • z2 :cmp al,0
  • jnz koko
  • call direc
  • jmp click
  • koko
  • cmp al,8
  • jnz too
  • mov al,0
  • call dakhal
  • mov al,0
  • call putchar
  • call gotoxy2
  • jmp click
  • too:
  • cmp al,'1'
  • jl click
  • cmp al,'9'
  • jg click
  • ;******************************test col reg lig*******************
  • call tst
  • cmp byte [sol],0
  • jz click
  • ;**************************************
  • call dakhal
  • call putchar
  • call gotoxy2
  • jmp click
  • ;************************VERIFICATION DU LIMITES DE CURSEUR****************
  • tet:
  • cmp dh,0
  • JG aca
  • mov dh,9
  • jmp ddd
  • aca:
  • cmp dh,10
  • jl bbb
  • mov dh,1
  • jmp ddd
  • bbb:
  • cmp dl,0
  • jg ccc
  • mov dl,9
  • jmp ddd
  • ccc:
  • cmp dl,10
  • jl ddd
  • mov dl,1
  • ddd:
  • call gotoxy2
  • ret
  • ;*****************FONCTION AFFICHAGE PHRASE************************************
  • puts:
  • mov al,[bx]
  • cmp al,'$'
  • jz barap
  • call putchar
  • inc bx
  • jmp puts
  • barap :
  • ret
  • ;********************************************************
  • call clrscr
  • mov dh,0
  • mov dl,0
  • call gotoxy
  • ;*************AFFICHAGE MATRICE FINAL******************
  • afff:
  • mov dh,-1
  • mov dl,0
  • call gotoxy
  • mov cx, 9
  • mov bp,0
  • matr:
  • add dh,4
  • mov dl,3
  • call nl
  • mov bx,0
  • la:
  • mov al,[cd+bp]
  • call gotoxy
  • add dl,4
  • call putchar
  • inc bp
  • inc bx
  • cmp bx,9
  • jnz la
  • loop matr
  • call getch
  • ret
  • ;***************************************
  • outa
  • mov ax, $4C00
  • int $21
  • ret
  • ;**********************************
  • direc
  • call getch
  • cmp al,77
  • jnz aa
  • add dl,1
  • jmp dir1e
  • aa:
  • cmp al,75
  • jnz bb
  • add dl,-1
  • jmp dir1e
  • bb:
  • cmp al,80
  • jnz cc
  • add dh,1
  • jmp dir1e
  • cc:
  • cmp al,72
  • jnz dir1e
  • add dh,-1
  • dir1e:
  • call tet
  • ret
  • ;**********************************
  • testligne:
  • push dx
  • mov dl,1
  • ligne :
  • call adrbx
  • cmp [cd+bx],al
  • jnz ti1
  • mov byte [sol],0
  • ti1
  • inc dl
  • cmp dl,10
  • jnz ligne
  • pop dx
  • ret
  • ;***********************************
  • testcol:
  • push dx
  • mov dh,1
  • colonnes :
  • call adrbx
  • cmp [cd+bx],al
  • jnz ti2
  • mov byte [sol],0
  • ti2
  • inc dh
  • cmp dh,10
  • jnz colonnes
  • pop dx
  • ret
  • ;**********************************
  • ;*******************************
  • testreg:
  • push dx
  • push ax
  • mov ah,0
  • mov bh,3
  • mov al,dl
  • sub al,1
  • div bh
  • mul bh
  • mov dl,al
  • add dl,1
  • mov al,dh
  • sub al,1
  • div bh
  • mul bh
  • mov dh,al
  • add dh,1
  • pop ax
  • mov [yy],dl
  • mov bp,3
  • reg:
  • mov dl,[yy]
  • mov cx,3
  • sreg
  • call adrbx
  • cmp [cd+bx],al
  • jnz ti3
  • mov byte [sol],0
  • ti3
  • inc dl
  • loop sreg
  • inc dh
  • dec bp
  • jnz reg
  • pop dx
  • ret
  • ;*********************************
  • backo:
  • mov bx,0
  • mov bp,0
  • lp
  • cmp byte [cd+bx],'0'
  • jnz lpi
  • mov byte[xx+bp],0
  • mov [x+bp],bl
  • inc bp
  • lpi:
  • inc bx
  • cmp bx,81
  • jnz lp
  • ret
  • ;*******************************
  • posa
  • mov cx,[nbr]
  • mov bh,0
  • .ici
  • mov ax,cx
  • mov bp,cx
  • sub bp,1
  • mov bl,[x+bp]
  • call calcino
  • call pos
  • mov cx,ax
  • loop .ici
  • ret
  • ;**************************************
  • pos
  • push ax
  • mov cx,9
  • .ici
  • mov al,cl
  • add al,48
  • call tst
  • cmp byte[ sol],0
  • jz .a
  • inc byte [xx+bp]
  • .a
  • loop .ici
  • pop ax
  • ret
  • ;********************************
  • tri
  • .deb
  • mov cx,[nbr]
  • sub cx,1
  • .ici
  • mov bp,cx
  • mov al,[xx+bp-1]
  • mov ah,[xx+bp]
  • cmp al,ah
  • jng .a
  • mov [xx+bp-1],ah
  • mov [xx+bp],al
  • mov al,[x+bp-1]
  • mov ah,[x+bp]
  • mov [x+bp-1],ah
  • mov [x+bp],al
  • mov cx,[nbr]
  • .a
  • loop .ici
  • ret
  • ;*****************************************
  • solurecursive :
  • inc bp
  • cmp bp,[nbr]
  • jnz .a
  • mov byte[good],1
  • ret
  • .a
  • mov bh,0
  • mov bl,[x+bp]
  • call calcino
  • mov al,'1'
  • .j
  • call tst
  • cmp byte [sol],0
  • jz .h
  • mov byte [cd+bx],al
  • push ax
  • push bx
  • push dx
  • push bp
  • mov byte[good],1
  • call solurecursive
  • pop bp
  • pop dx
  • pop bx
  • pop ax
  • cmp byte [good],1
  • jz .br
  • .h
  • inc al
  • cmp al,'9'+1
  • jnz .j
  • mov byte [cd+bx],'0'
  • mov byte [good],0
  • .br
  • ret
  • ;********************************
  • calcino
  • push ax
  • push bx
  • mov dx,0
  • mov ax,bx
  • mov bx,9
  • div bl
  • mov dl,ah
  • mov dh,al
  • inc dl
  • inc dh
  • pop bx
  • pop ax
  • ret
  • ;********************************************************
  • tst
  • pusha
  • mov byte [sol],1
  • call testligne
  • call testcol
  • call testreg
  • popa
  • ret
  • ;********************************************************
  • soluiteratif :
  • mov bp,0
  • .a
  • mov bh,0
  • mov bl,[x+bp]
  • call calcino
  • mov al,[cd+bx]
  • .b
  • inc al
  • cmp al,'9'+1
  • jz .br
  • call tst
  • cmp byte[sol],0
  • jz .b
  • mov [cd+bx],al
  • inc bp
  • cmp bp,[nbr]
  • jnz .r
  • mov byte [good],1
  • ret
  • .r
  • jmp .a
  • .br
  • mov byte[cd+bx],'0'
  • dec bp
  • cmp bp,-1
  • jnz .a
  • mov byte [good],0
  • ret
  • ;***********************************************************************
  • SEGMENT .text
  • t80x50: mov ax,03
  • int 10h
  • mov ax,1112h
  • mov bl,30h
  • int 10h
  • ret
  • clrscr: pusha
  • mov ax,0B800h
  • mov es,ax
  • cld
  • mov di,0
  • mov cx,4000
  • mov al,' '
  • mov ah,0fh ;jaune/bleu
  • rep stosw
  • popa
  • ret
  • ;**********************************************
  • putaxd: ;affiche AX en decimal (non sign‚)
  • pusha
  • mov cx,0 ; compteur
  • mov bx,10 ; base 10
  • divech: mov dx,0 ; pour la division
  • div bx ; division en echelle par 10
  • push dx ; empiler le reste
  • inc cx ; compter les chiffres
  • cmp ax,0 ; si pas fini, recommencer
  • jne divech
  • affich: pop ax ; le chiffre a afficher se trouve dans AL
  • add ah,0Eh ; AH=0E pour affichage, AL = code ascii de AL
  • add al,48
  • int 10h ; affichage
  • loop affich ; recommencer jusqu'a la fin
  • popa
  • ret
  • ;***********************************
  • ;***************************************************************
  • putchar: ; affiche le caractŠre contenu dans AL
  • push ax
  • mov ah,0eh
  • int 10h
  • pop ax
  • ret
  • ;*********************************************************
  • ;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  • getch:
  • mov ah,07
  • int 21h
  • ret
  • ;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  • gotoxy :
  • push ax
  • push bx
  • mov ah,02h
  • mov bh,00
  • int 10h
  • pop bx
  • pop ax
  • ret
  • ;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  • gotoxy2 :
  • push ax
  • push bx
  • push dx
  • mov al,4
  • mul dh
  • mov dh,al
  • sub dh,1
  • mov al,4
  • mul dl
  • mov dl,al
  • sub dl,1
  • mov ah,02h
  • mov bh,00
  • int 10h
  • pop dx
  • pop bx
  • pop ax
  • ret
  • ;************************************************************
  • ;******************************************************************
  • adrbx:
  • push ax
  • mov bl,dh
  • mov bh,0
  • mov al,9
  • mov ah,0
  • sub bl,1
  • mul bl
  • mov bl,al
  • mov al,dl
  • sub al,1
  • add bl,al
  • pop ax
  • ret
  • ;******************************************************************
  • souris:
  • mov ax,0
  • int 0x33
  • mov ax,1
  • int 0x33
  • ret
  • ;***********************************************************
  • cadre2:
  • mov al,179
  • mov dl,1
  • bi:
  • add dl,4
  • mov cx,35
  • mov dh,1
  • ba:
  • inc dh
  • call gotoxy
  • call putchar
  • loop ba
  • cmp dl,32
  • jb bi
  • ret
  • ;*****************************************************************
  • cadre3:
  • mov al,196
  • mov dh,1
  • bii:
  • add dh,4
  • mov cx,35
  • mov dl,1
  • baa:
  • inc dl
  • call gotoxy
  • call putchar
  • loop baa
  • cmp dh,32
  • jb bii
  • ret
  • ;********************************************************************
  • col:
  • mov dh,13
  • mov dl,2
  • call gotoxy
  • mov cx,35
  • mov bh,0
  • mov al,196
  • mov ah,09
  • mov bl,5
  • int 10h
  • add dh,12
  • call gotoxy
  • int 10h
  • mov dl,13
  • mov cx,1
  • mov al,179
  • g
  • mov dh,2
  • call gotoxy
  • g1:
  • int 10h
  • inc dh
  • call gotoxy
  • cmp dh,37
  • jnz g1
  • add dl,12
  • cmp dl,26
  • jl g
  • ret
  • ;********************************************************************
  • dakhal:
  • push ax
  • sub dh,1
  • sub dl,1
  • mov bl,dh
  • mov bh,0
  • mov al,9
  • mov ah,0
  • mul bl
  • mov bl,al
  • mov al,dl
  • add bl,al
  • add dh,1
  • add dl,1
  • pop ax
  • cmp al,0
  • jnz fino
  • mov al,'0'
  • fino: mov byte [cd+bx],al
  • ret
  • ;******************************************************************
  • cadre1 :
  • mov dh,1
  • mov dl,1
  • call gotoxy
  • mov al,201
  • call putchar
  • ;//////////////////////////////////////////////////////
  • mov cx,35
  • mov al,186
  • b:
  • inc dh
  • call gotoxy
  • call putchar
  • loop b
  • ;//////////////////////////////////////////////////////
  • inc dh
  • call gotoxy
  • mov al,200
  • call putchar
  • ;////////////////////////////////////////////
  • mov al,205
  • mov cx,35
  • d:
  • call putchar
  • loop d
  • ;////////////////////////////////////////////
  • mov cx,35
  • mov dh,1
  • mov dl,2
  • call gotoxy
  • a:
  • call putchar
  • loop a
  • mov al,187
  • call putchar
  • ;////////////////////////////////////////////
  • mov dh,1
  • mov dl,37
  • mov cx,35
  • mov al,186
  • c:inc dh
  • call gotoxy
  • call putchar
  • loop c
  • inc dh
  • mov al,188
  • call gotoxy
  • call putchar
  • ret
  • ;**************************************************************
  • nl: ; retour … la ligne
  • push ax
  • mov ax,0E0Ah ; retour a la ligne
  • int 10h
  • mov al,13
  • int 10h
  • pop ax
  • ret
bits 16
org 0x0100
section .data


ph db 'Taper ENTER ou ESC pour Voir solution $'
ph1 db 'Mountassir Youssef 2IIR3 EMSI','$'
ph3 db 'msavyo1@hotmail.com','$'
ph2 db 'Pas de solution$'
section .bss

yy resb  1
cd resb  81
x resb  81
xx resb 81
sol resb 1
nbr resw 1

good resb 1





[section .text]
mov ax,3
int 10h
mov ax,1112h
mov bl,30h
int 10h
mov ah,1
mov ch,8
mov cl,12
int 10h



;****MOUNTASSIR ---YOUSSEF------2IIR3********


call cadre1
call cadre2
call cadre3
call col
call souris

;**********affichage phrase**************************
mov dl,40
mov dh,10
call gotoxy
mov bx,ph
call puts

mov dl,40
mov dh,13
call gotoxy
mov bx,ph1
call puts

mov dl,40
mov dh,15
call gotoxy
mov bx,ph3
call puts
;**********FIN affichage phrase*************************

mov cx,81

initial:

here:mov bx,cx
mov byte [(bx+cd)-1],'0'
loop here



mov dl,1
mov dh,1
call gotoxy2


click :






                  call getch

                  cmp al,13
                  jnz z1

                  mov al,27


                  z1 :cmp al,27



                  jnz z2

                  call backo

                  mov [nbr],bp
                  mov byte [xx+bp],255

                  call posa
                  call tri


                  mov bp,-1





       


                 ;call solurecursif
                 call soluiteratif
                 cmp byte [good],1
                 jz  afi
                 mov al,7
                 call putchar
                 mov bx,ph2
                   call clrscr
                 call puts
                 call getch


                 jmp outaa


                 afi
                call afff







                 outaa :



                  call outa


                  z2 :cmp al,0

                  jnz koko
                  call direc
                 jmp click
                 koko



                  cmp al,8

                  jnz too
                  mov al,0
                  call dakhal
                  mov al,0

                    call putchar
                    call gotoxy2
                    jmp click


                 too:
                 cmp al,'1'

                  jl click

                  cmp al,'9'

                  jg click

                  ;******************************test col reg lig*******************
                  call tst

                 cmp  byte [sol],0
                 jz click

                 ;**************************************
                 call dakhal




                   call putchar
                  call gotoxy2



                  jmp click








;************************VERIFICATION DU LIMITES DE CURSEUR****************
tet:
cmp dh,0
JG aca
mov dh,9
jmp ddd
aca:
cmp dh,10
jl bbb
mov dh,1
jmp ddd

bbb:
cmp dl,0
jg ccc
mov dl,9
jmp ddd

ccc:
cmp dl,10
jl ddd
mov dl,1

ddd:
call gotoxy2
ret
;*****************FONCTION AFFICHAGE PHRASE************************************
puts:
mov al,[bx]
cmp al,'$'
jz barap
call putchar
inc bx
jmp puts
barap :
ret
;********************************************************
call clrscr
mov dh,0
mov dl,0
call gotoxy
;*************AFFICHAGE MATRICE FINAL******************
afff:
mov dh,-1
mov dl,0
call gotoxy
mov cx, 9
mov bp,0
matr:
add dh,4
mov dl,3
call nl
mov bx,0
la:
mov al,[cd+bp]
call gotoxy
add dl,4
call putchar
inc bp
inc bx
cmp bx,9
jnz la
loop matr
call getch
ret
;***************************************
outa
mov     ax, $4C00
int       $21
ret
;**********************************
direc
call getch
                 cmp al,77
                   jnz aa
                   add dl,1
                   jmp dir1e
aa:
         cmp al,75
         jnz bb
         add dl,-1
         jmp dir1e
bb:
         cmp al,80
         jnz cc
         add dh,1
         jmp dir1e
cc:
         cmp al,72
         jnz dir1e
            add dh,-1

dir1e:
call tet
ret
;**********************************
testligne:
push dx

                  mov dl,1
                  ligne :
                  call adrbx
                  cmp  [cd+bx],al
                  jnz ti1
                  mov byte [sol],0
                  ti1
                  inc dl
                  cmp dl,10
                  jnz ligne
                  pop dx
                  ret
;***********************************
testcol:
 push dx

                  mov dh,1
                  colonnes :
                  call adrbx
                  cmp  [cd+bx],al
                  jnz ti2
                  mov byte [sol],0
                  ti2
                  inc dh
                  cmp dh,10
                  jnz  colonnes
                  pop dx
                  ret
;**********************************

;*******************************
testreg:


                 push dx
                 push ax
                 mov ah,0
                 mov bh,3

                 mov al,dl
                 sub al,1
                 div  bh
                 mul bh
                 mov dl,al
                 add dl,1

                 mov al,dh
                 sub al,1
                 div bh
                 mul bh
                 mov dh,al
                 add dh,1
                 pop ax
                 mov [yy],dl



                 mov  bp,3
                 reg:

                 mov dl,[yy]
                 mov cx,3
                 sreg
                 call adrbx
                 cmp  [cd+bx],al
                 jnz ti3
                  mov byte [sol],0
                  ti3

                 inc dl

                 loop sreg

                 inc dh
                 dec bp
                  jnz reg

                   pop dx
ret
;*********************************

backo:
mov bx,0
mov bp,0
lp

cmp byte [cd+bx],'0'
jnz lpi

mov byte[xx+bp],0
mov [x+bp],bl


inc bp
lpi:
inc bx
cmp bx,81
jnz lp


ret

;*******************************
posa
mov cx,[nbr]

mov bh,0
.ici
mov ax,cx
mov bp,cx
sub bp,1
mov bl,[x+bp]
call calcino

call pos
mov cx,ax

loop .ici
ret
;**************************************
pos
push ax
mov cx,9
.ici
mov al,cl
add al,48
call tst
cmp byte[ sol],0
jz .a
inc byte [xx+bp]
.a
loop .ici
pop ax
ret

;********************************
tri
.deb
mov cx,[nbr]
sub cx,1
.ici
mov bp,cx

mov al,[xx+bp-1]
mov ah,[xx+bp]
cmp al,ah
jng .a

mov [xx+bp-1],ah
mov [xx+bp],al
mov al,[x+bp-1]
mov ah,[x+bp]
mov [x+bp-1],ah
mov [x+bp],al

mov cx,[nbr]
.a

loop .ici

ret
;*****************************************
solurecursive :
inc bp
cmp bp,[nbr]
jnz .a
mov byte[good],1
ret
.a
mov bh,0
mov bl,[x+bp]

call calcino
mov al,'1'


.j


call tst

cmp byte [sol],0
jz .h

mov byte [cd+bx],al
push ax
push bx
push dx
push bp

mov byte[good],1
call solurecursive

pop bp
pop dx
pop bx
pop ax



cmp byte [good],1
jz .br

.h
inc al
cmp al,'9'+1
jnz .j

mov byte [cd+bx],'0'
mov byte [good],0

.br
ret


;********************************



calcino
push ax
push bx
mov dx,0

mov ax,bx
mov bx,9

div bl

mov  dl,ah
mov dh,al
inc dl
inc dh





pop bx
pop ax
ret



;********************************************************
tst
pusha
mov byte [sol],1
call testligne
call testcol
call testreg
popa
ret
;********************************************************

soluiteratif :
mov bp,0
.a
mov bh,0
mov bl,[x+bp]
call calcino
mov al,[cd+bx]
.b
inc al
cmp al,'9'+1
jz .br
call tst
cmp byte[sol],0
jz .b
mov [cd+bx],al
inc bp
cmp bp,[nbr]
jnz .r
mov byte [good],1
ret
.r
 jmp .a
.br
mov byte[cd+bx],'0'
dec bp
cmp bp,-1
jnz .a
mov byte [good],0
ret



;***********************************************************************

SEGMENT .text

t80x50:  mov  ax,03
         int  10h
         mov  ax,1112h
         mov  bl,30h
         int  10h
         ret

clrscr:  pusha
         mov  ax,0B800h
         mov  es,ax
         cld
         mov  di,0
         mov  cx,4000
         mov al,' '
         mov ah,0fh     ;jaune/bleu
         rep  stosw
         popa
         ret
;**********************************************
putaxd: ;affiche AX en decimal (non sign‚)
         pusha
         mov  cx,0      ; compteur
         mov  bx,10     ; base 10
divech:  mov  dx,0      ; pour la division
         div  bx        ; division en echelle par 10
         push dx        ; empiler le reste
         inc  cx        ; compter les chiffres
         cmp  ax,0      ; si pas fini, recommencer
         jne  divech
affich:  pop  ax        ; le chiffre a afficher se trouve dans AL
         add  ah,0Eh    ; AH=0E pour affichage, AL = code ascii de AL
         add  al,48
         int  10h       ; affichage
         loop affich    ; recommencer jusqu'a la fin
         popa
         ret

;***********************************

         



;***************************************************************
putchar:  ; affiche le caractŠre contenu dans AL
         push ax
     
   
         mov  ah,0eh
         int  10h

         pop  ax
         ret




;*********************************************************

;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
getch:

mov  ah,07 

int  21h

ret
;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
gotoxy :
	push ax
	push bx
	mov ah,02h
	mov bh,00
	int 10h
	pop bx
	pop ax
	ret
;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
gotoxy2 :
	push ax
	push bx
        push dx
        mov al,4
        mul dh
        mov dh,al
        sub dh,1

        mov al,4
        mul dl
        mov dl,al
        sub dl,1

	mov ah,02h
	mov bh,00
	int 10h
        pop dx 
	pop bx
	pop ax
	ret
;************************************************************

;******************************************************************
adrbx:
push ax
                  mov bl,dh
                  mov bh,0
                  mov al,9
                  mov ah,0
                  sub bl,1
                  
                  mul bl
                  mov bl,al
                  
                  
                  
                  mov al,dl
                  sub al,1
                  
                 
                  add bl,al
                  
                  
                  pop ax

                  

               
ret

;******************************************************************
souris:
mov ax,0
int 0x33
mov ax,1
int 0x33
ret
;*********************************************************** 
cadre2:
mov al,179
mov dl,1
bi:
add dl,4
mov cx,35
mov dh,1
ba:
inc dh
call gotoxy
call putchar
loop ba
cmp dl,32
jb bi
ret
;*****************************************************************
cadre3:
mov al,196
mov dh,1
bii:
add dh,4
mov cx,35
mov dl,1
baa:
inc dl
call gotoxy
call putchar
loop baa
cmp dh,32
jb bii
ret
;********************************************************************
col:
mov dh,13
mov dl,2
call gotoxy
mov cx,35
mov bh,0
mov al,196
mov ah,09
mov bl,5
int 10h
add dh,12
call gotoxy
int 10h

mov dl,13

mov cx,1
mov al,179
g
mov dh,2
call gotoxy
g1:
int 10h
inc dh
call gotoxy
cmp dh,37
jnz g1
add dl,12
cmp dl,26
jl g




ret
;********************************************************************
dakhal:
  push ax
  
  sub dh,1
  sub dl,1
                  mov bl,dh
                  mov bh,0

                  mov al,9
                  mov ah,0
                  
                  
                  mul bl
                  mov bl,al
                  
                  
                  
                  mov al,dl
                  
                  
                 
                  add bl,al
                  add dh,1
                  add dl,1
                  
                  pop ax

                  cmp al,0
                  jnz fino
                  mov al,'0'

                fino: mov byte [cd+bx],al
ret

;******************************************************************
cadre1 :
mov dh,1
mov dl,1
call gotoxy
mov al,201
call putchar
;//////////////////////////////////////////////////////
mov cx,35
mov al,186
b:
inc dh
call gotoxy
call putchar
loop b
;//////////////////////////////////////////////////////
inc dh
call gotoxy
mov al,200
call putchar
;////////////////////////////////////////////
mov al,205
mov cx,35
d:
call putchar
loop d


;////////////////////////////////////////////

mov cx,35
mov dh,1
mov dl,2
call gotoxy
a:
call putchar
loop a

mov al,187
call putchar
;////////////////////////////////////////////
mov dh,1
mov dl,37
mov cx,35
mov al,186
c:inc dh
call gotoxy
call putchar
loop c
inc dh
mov al,188
call gotoxy
call putchar

ret

;**************************************************************
nl:       ; retour … la ligne
         push ax
	 mov ax,0E0Ah  ; retour a la ligne
         int 10h
         mov al,13
         int 10h
	 pop ax
         ret




Conclusion

juste une autre resolveur mais cette fois avec langage machine
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

29 février 2008 00:58:13 :
juste une clé
    Aucun commentaire pour le moment.

Ajouter un commentaire

Pub



Appels d'offres

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Boutique

Boutique de goodies CodeS-SourceS