TRIS IN ASSEMBLER

Quello più vicino al linguaggio macchina vero e proprio.

TRIS IN ASSEMBLER

Postby mikeleasm on Tue Jul 04, 2006 5:26 pm

SALVE GENTE..

Ho intenzione di condividere con voi una mia piccola creazione con cui mi sono davvero innamorato dell'assembler...Comunque un programma pieno di cose da migliorare..(me ne rendo conto solo molto tempo dopo la realizzazione perch? ho acquisito altre conoscenze)...Credetemi, davvero..quando vi mettete davanti un listato di oltre 500 righe che non toccate da tempo c'? solo da mettersi le mani nei capelli!! :cry: .....IL CLASSICO GIOCO DEL TRIS realizzato in grafica 320x200..Purtroppo per motivi di tempo non sono riuscito a realizzare un principio di intelligenza artificiale per cui il gioco va fatto in due!!..Per motivi di tempo adesso non posso inserire il gioco..Devo scappare..Ma o pi? tardi o domani mattina troverete il listato con le relative librerie!!.. :D ..Per qualsiasi domanda non esitate a scrivere nella relativa sezione mi raccomando!!..Salve gente!!..
User avatar
mikeleasm
Help Programmer
 
Posts: 356
Joined: Mon Jul 03, 2006 8:02 pm
Location: Bellissima Catania..

TRIS IN ASSEMBLER

Sponsor

Sponsor


Postby TurboMinkiaTurbo on Tue Jul 04, 2006 6:13 pm

lo far? apposta per tenerci sulle spine?
TurboMinkiaTurbo
Algoritmo
 
Posts: 123
Joined: Thu Jun 15, 2006 11:10 am

Postby k8 on Tue Jul 04, 2006 7:23 pm

TurboMinkiaTurbo wrote:lo far? apposta per tenerci sulle spine?

:roll: :mrgreen:
User avatar
k8
Admin
 
Posts: 2115
Joined: Tue Jun 06, 2006 4:00 pm

Re: TRIS IN ASSEMBLER

Postby Dersew on Wed Jul 05, 2006 12:17 am

grande mikeleasm...mitico ragazzi, ho gi? visto sia il suo listato ke il gioco...bh? riguardo il listato..c'? davvero da perdersi...500 righe di assembly..bh?...c vuole coraggio solo a dirlo...il gioco ? parekkio simpatico... :lol:
Image
User avatar
Dersew
Algoritmo
 
Posts: 180
Joined: Thu Jun 08, 2006 8:17 pm
Location: Catania

Postby mikeleasm on Wed Jul 05, 2006 8:14 am

Ragazzi ecco il listato........
Un insieme impressionante di variabili e condizioni utili ad alternare i simboli X e O e per controllare le varie possibilit? di vittoria..Una volta completato il gioco o premuto il tasto ESC compare un men? in cui ? possibile effettuare una scelta con i tasti 1 e 2....
Code: Select all
.186
model tiny
local
.code
include tris.mik
org 100h


start:  @tograph
        @clrscr 0
        @tris 63,80,15

        @attesatasto
okay:   mov var1,0
        mov var2,0
        mov var3,0
        mov var4,0
        mov var5,0
        mov var6,0
        mov var7,0
        mov var8,0
        mov var9,0
        mov vari1,0
        mov vari2,0
        mov vari3,0
        mov vari4,0
        mov vari5,0
        mov vari6,0
        mov vari7,0
        mov vari8,0
        mov vari9,0
        mov posi1,0
        mov posi2,0
        mov posi3,0
        mov posi4,0
        mov posi5,0
        mov posi6,0
        mov posi7,0
        mov posi8,0
        mov posi9,0
        mov xoro,0
        mov fin,0
        @clrscr sfondo
        @lineav 107,0,200,linee
        @lineav 213,0,200,linee
        @lineao 0,66,320,linee
        @lineao 0,132,320,linee
        jmp inizio

sfondo db 0
linee  db 16
coloreO db 1001b
coloreX db 4
vittoria db 16

                                                                                                   
xoro db 0

linea  db  0

choose1 db "NUOVO GIOCO",0
choose2 db "     EXIT",0

mikele  db "Mikele crew",0

xwin    db "HA VINTO LA X",0
owin    db "HA VINTO LA O",0

niente   db "NESSUN VINCITORE",0

var1   db  0
var2   db  0
var3   db  0
var4   db  0
var5   db  0
var6   db  0
var7   db  0
var8   db  0
var9   db  0

vari1  db  0
vari2  db  0
vari3  db  0
vari4  db  0
vari5  db  0
vari6  db  0
vari7  db  0
vari8  db  0
vari9  db  0

posi1   db  0
posi2   db  0
posi3   db  0
posi4   db  0
posi5   db  0
posi6   db  0
posi7   db  0
posi8   db  0
posi9   db  0

fin    db  0

inizi: @attesatasto
        cmp al,"7"
        jne dopo
        jmp pos1
dopo:   cmp al,"8"
        jne dopo1
        jmp pos2
dopo1:  cmp al,"9"
        jne dopo2
        jmp pos3
dopo2:  cmp al,"4"
        jne dopo3
        jmp pos4
dopo3:  cmp al,"5"
        jne dopo4
        jmp pos5
dopo4:  cmp al,"6"
        jne dopo5
        jmp pos6
dopo5:  cmp al,"1"
        jne dopo6
        jmp pos7
dopo6:  cmp al,"2"
        jne dopo7
        jmp pos8
dopo7:  cmp al,"3"
        jne dopo8
        jmp pos9
dopo8:  cmp al,27
        jne tris1
        jmp scelta

tris1:  jmp inizio

pos1:   mov vari1,1
        cmp var1,1
        jne rito0
        jmp inizio
rito0:  mov var1,1
        cmp xoro,0
        je  varx1
        jmp varx3
varx1:  mov posi1,2
        @diseo  30,12,1001b
        mov xoro,1
        jmp inizio
varx3:  mov posi1,1
        @x  30,12,coloreX
        mov xoro,0
        jmp inizio

pos2:   mov vari2,1
        cmp var2,1
        jne rito
        jmp inizio
rito:   mov var2,1
        cmp xoro,0
        je varx4
        jmp varx2
varx4:  mov posi2,2
        @diseo  140,12,1001b
        mov xoro,1
        jmp inizio
varx2:  mov posi2,1
        @x  140,12,coloreX
        mov xoro,0
        jmp inizio

pos3:   mov vari3,1
        cmp var3,1
        jne rito3
        jmp inizio
rito3:  mov var3,1
        cmp xoro,0
        je varx5
        jmp varx6
varx5:  mov posi3,2
        @diseo  250,12,1001b
        mov xoro,1
        jmp inizio
varx6:  mov posi3,1
        @x  250,12,coloreX
        mov xoro,0
        jmp inizio

pos4:   mov vari4,1
        cmp var4,1
        jne rito33
        jmp inizio
rito33: mov var4,1
        cmp xoro,0
        je varx7
        jmp varx8
varx7:  mov posi4,2
        @diseo  30,80,1001b
        mov xoro,1
        jmp inizio
varx8:  mov posi4,1
        @x  30,80,coloreX
        mov xoro,0
        jmp inizio

pos5:   mov vari5,1
        cmp var5,1
        jne rito4
        jmp inizio
rito4:  mov var5,1
        cmp xoro,0
        je varx9
        jmp varx10
varx9:  mov posi5,2
        @diseo  140,80,1001b
        mov xoro,1
        jmp inizio
varx10: mov posi5,1
        @x  140,80,coloreX
        mov xoro,0
        jmp inizio

pos6:   mov vari6,1
        cmp var6,1
        jne rito5
        jmp inizio
rito5:  mov var6,1
        cmp xoro,0
        je varx11
        jmp varx12
varx11: mov posi6,2
        @diseo  250,80,1001b
        mov xoro,1
        jmp inizio
varx12: mov posi6,1
        @x  250,80,coloreX
        mov xoro,0
        jmp inizio

pos7:   mov vari7,1
        cmp var7,1
        jne rito6
        jmp inizio
rito6:  mov var7,1
        cmp xoro,0
        je varx13
        jmp varx14
varx13: mov posi7,2
        @diseo  30,148,1001b
        mov xoro,1
        jmp inizio
varx14: mov posi7,1
        @x  30,148,coloreX
        mov xoro,0
        jmp inizio

pos8:   mov vari8,1
        cmp var8,1
        jne rito7
        jmp inizio
rito7:  mov var8,1
        cmp xoro,0
        je varx15
        jmp varx16
varx15: mov posi8,2
        @diseo  140,148,1001b
        mov xoro,1
        jmp inizio
varx16: mov posi8,1
        @x  140,148,coloreX
        mov xoro,0
        jmp inizio

pos9:   mov vari9,1
        cmp var9,1
        jne rito8
        jmp inizio
rito8:  mov var9,1
        cmp xoro,0
        je varx17
        jmp varx18
varx17: mov posi9,2
        @diseo  250,148,1001b
        mov xoro,1
        jmp inizio
varx18: mov posi9,1
        @x  250,148,coloreX
        mov xoro,0
        jmp inizio


inizio: mov al,vari1
        add fin,al
        mov al,vari2
        add fin,al
        mov al,vari3
        add fin,al
        mov al,vari4
        add fin,al
        mov al,vari5
        add fin,al
        mov al,vari6
        add fin,al
        mov al,vari7
        add fin,al
        mov al,vari8
        add fin,al
        mov al,vari9
        add fin,al
        cmp fin,9
        je  risultato
        mov fin,0
        jmp risultato

risultato:cmp posi1,1
          jne work3
          cmp posi2,1
          jne work
          cmp posi3,1
          jne work3
          mov linea,1
          jmp vinceX

work:     cmp posi5,1
          jne work2
          cmp posi9,1
          jne work3
          mov linea,2
          jmp vinceX

work2:    cmp posi4,1
          jne work3
          cmp posi7,1
          jne work3
          mov linea,3
          jmp vinceX

work3:    cmp posi2,1
          jne work4
          cmp posi5,1
          jne work4
          cmp posi8,1
          jne work4
          mov linea,4
          jmp vinceX

work4:    cmp posi3,1
          jne work5
          cmp posi6,1
          jne work5
          cmp posi9,1
          jne work5
          mov linea,5
          jmp vinceX

work5:    cmp posi3,1
          jne work6
          cmp posi5,1
          jne work6
          cmp posi7,1
          jne work6
          mov linea,6
          jmp vinceX

work6:    cmp posi4,1
          jne work7
          cmp posi5,1
          jne work7
          cmp posi6,1
          jne work7
          mov linea,7
          jmp vinceX

work7:    cmp posi7,1
          jne work8
          cmp posi8,1
          jne work8
          cmp posi9,1
          jne work8
          mov linea,8
          jmp vinceX

work8:    cmp posi1,2
          jne work11
          cmp posi2,2
          jne work9
          cmp posi3,2
          jne work9
          mov linea,1
          jmp vinceO

work9:    cmp posi5,2
          jne work10
          cmp posi9,2
          jne work10
          mov linea,2
          jmp vinceO

work10:   cmp posi4,2
          jne work11
          cmp posi7,2
          jne work11
          mov linea,3
          jmp vinceO

work11:   cmp posi2,2
          jne work12
          cmp posi5,2
          jne work12
          cmp posi8,2
          jne work12
          mov linea,4
          jmp vinceO

work12:   cmp posi3,2
          jne work13
          cmp posi6,2
          jne work13
          cmp posi9,2
          jne work13
          mov linea,5
          jmp vinceO

work13:   cmp posi3,2
          jne work14
          cmp posi5,2
          jne work14
          cmp posi7,2
          jne work14
          mov linea,6
          jmp vinceO

work14:   cmp posi4,2
          jne work15
          cmp posi5,2
          jne work15
          cmp posi6,2
          jne work15
          mov linea,7
          jmp vinceO

work15:   cmp posi7,2
          jne cosa
          cmp posi8,2
          jne cosa
          cmp posi9,2
          jne cosa
          mov linea,8
          jmp vinceO

cosa:     cmp fin,9
          jne ancorad
          jmp finela
ancorad:  jmp inizi
vinceX:   @alfanumst 125,2,xwin,4
          jmp fine
vinceO:   @alfanumst 125,2,owin,1001b
          jmp fine
scelta: @rettanpieno 123,80,198,112,15
        @lineao 123,80,76,240
        @lineao 123,112,76,240
        @lineav 123,80,33,240
        @lineav 198,80,33,240
        @alfanumst 127,86,choose1,0
        @alfanumst 127,100,choose2,0
scelta2:@attesatasto
        cmp al,"2"
        jne mik
        jmp final
mik:    cmp al,"1"
        jne scelta2
        jmp okay

fine:   cmp linea,1
        jne tris01
        jmp linea1

tris01: cmp linea,2
        jne tris02
        jmp linea2

tris02: cmp linea,3
        jne tris03
        jmp linea3

tris03: cmp linea,4
        jne tris04
        jmp linea4

tris04: cmp linea,5
        jne tris05
        jmp linea5

tris05: cmp linea,6
        jne tris06
        jmp linea6

tris06: cmp linea,7
        jne tris07
        jmp linea7

tris07: cmp linea,8
        jne tris8
        jmp linea8

tris8:  jmp scelta

linea1: @lineao 21,31,278,vittoria
        @lineao 20,32,280,vittoria
        @lineao 21,33,278,vittoria
        jmp scelta

linea2: @lineaq 25,15,300,186,vittoria
        @lineaq 25,16,300,187,vittoria
        jmp scelta

linea3: @lineav 49,9,188,vittoria
        @lineav 50,8,190,vittoria
        @lineav 51,9,188,vittoria
        jmp scelta

linea4: @lineav 159,9,188,vittoria
        @lineav 160,8,190,vittoria
        @lineav 161,9,188,vittoria
        jmp scelta

linea5: @lineav 269,9,188,vittoria
        @lineav 270,8,190,vittoria
        @lineav 271,9,188,vittoria
        jmp scelta

linea6: @lineaq 295,14,25,183,vittoria
        @lineaq 295,15,25,184,vittoria
        jmp scelta

linea7: @lineao 21, 99,278,vittoria
        @lineao 20,100,280,vittoria
        @lineao 21,101,278,vittoria
        jmp scelta

linea8: @lineao 21,167,278,vittoria
        @lineao 20,168,280,vittoria
        @lineao 21,169,278,vittoria
        jmp scelta

finela: @alfanumst 115,2,niente,15
        jmp scelta
final:  @totext
           ret
E    dw  0
S    dw  0


           end start
User avatar
mikeleasm
Help Programmer
 
Posts: 356
Joined: Mon Jul 03, 2006 8:02 pm
Location: Bellissima Catania..

Postby mikeleasm on Wed Jul 05, 2006 8:34 am

E LA LIBRERIA...
Ovviamente tutte le funzioni o macro sono state realizzate da me ;)
Spero sia di vostro gradimento.. :D ...
..Ah..Ho fatto la selezione della macro che ho utilizzato nel programma..Se ne dovesse mancare qualcuna non esitate a farmelo sapere..In fine volete compilare il programma e non volete modificare una virgola basta mettere tutte le librerie in un file di nome TRIS.MIK ..Per quanto riguarda la compilazione io ho utilizzato TASM e TLINK che gi? Dersew ha spiegato dove trovare..Il programma ? realizzato in Assembly-16..Fatemi sapere..ok??...
Code: Select all
@tograph macro
        mov ax,13h
        int 10h
        endm

@totext macro
        mov ax,03h
        int 10h
        endm

@attesatasto macro
        mov ah,10h
        int 16h
        endm


@clrscr macro C
        local wrk
        push ax
        mov cx,32000
        mov ax,0a000h
        mov es,ax
        mov di,0
        mov al,C
        mov ah,C
wrk:    mov es:[di],ax
        add di,2
        loop wrk
        pop ax
        endm

@lineao macro x,y,l,c
        local wrk
        push ax
        push cx
        mov ax,0a000h
        mov es,ax
        mov di,y
        mov ax,320
        mul di
        add ax,x
        mov di,ax
        mov cx,l
wrk:    mov ah,c
        mov es:[di],ah
        inc di
        loop wrk
        pop cx
        pop ax
        endm


@lineav macro x,y,l,c
        local wrk
        push ax
        push cx
        mov ax,0a000h
        mov es,ax
        mov di,y
        mov ax,320
        mul di
        add ax,x
        mov di,ax
        mov cx,l
wrk:    mov ah,c
        mov es:[di],ah
        add di,320
        loop wrk
        pop cx
        pop ax
        endm

@diseO macro o,v,c
        local inizio,oriz,vert,colore
        mov oriz,o
        mov vert,v
        mov colore,c
        jmp inizio

colore db 0
oriz dw 10
vert dw 10

inizio: add oriz,15
        @lineao oriz,vert,10,colore
        inc vert
        sub oriz,3
        @lineao oriz,vert,4,colore
        inc vert
        sub oriz,2
        @lineao oriz,vert,3,colore
        inc vert
        sub oriz,2
        @lineao oriz,vert,2,colore
        inc vert
        dec oriz
        @lineao oriz,vert,2,colore
        inc vert
        dec oriz
        @lineao oriz,vert,2,colore
        inc vert
        dec oriz
        @lineav oriz,vert,2,colore
        inc vert
        dec oriz
        @lineav oriz,vert,2,colore
        inc vert
        dec oriz
        @lineav oriz,vert,2,colore
        add vert,2
        dec oriz
        @lineav oriz,vert,3,colore
        add vert,2
        dec oriz
        @lineav oriz,vert,4,colore
        add vert,3
        dec oriz
        @lineav oriz,vert,10,colore
        add vert,9
        inc oriz
        @lineav oriz,vert,4,colore
        inc oriz
        add vert,3
        @lineav oriz,vert,3,colore
        add vert,3
        inc oriz
        @lineav oriz,vert,2,colore
        inc oriz
        inc vert
        @lineav oriz,vert,2,colore
        inc oriz
        inc vert
        @lineav oriz,vert,2,colore
        inc oriz
        add vert,2
        @lineao oriz,vert,2,colore
        inc oriz
        inc vert
        @lineao oriz,vert,2,colore
        inc oriz
        inc vert
        @lineao oriz,vert,2,colore
        inc vert
        add oriz,2
        @lineao oriz,vert,3,colore
        inc vert
        add oriz,2
        @lineao oriz,vert,4,colore
        inc vert
        add oriz,3
        @lineao oriz,vert,10,colore
        dec vert
        add oriz,9
        @lineao oriz,vert,4,colore
        dec vert
        add oriz,3
        @lineao oriz,vert,3,colore
        dec vert
        add oriz,3
        @lineao oriz,vert,2,colore
        dec vert
        inc oriz
        @lineao oriz,vert,2,colore
        dec vert
        inc oriz
        @lineao oriz,vert,2,colore
        sub vert,2
        add oriz,2
        @lineav oriz,vert,2,colore
        dec vert
        inc oriz
        @lineav oriz,vert,2,colore
        dec vert
        inc oriz
        @lineav oriz,vert,2,colore
        inc oriz
        sub vert,3
        @lineav oriz,vert,3,colore
        inc oriz
        sub vert,3
        @lineav oriz,vert,4,colore
        inc oriz
        sub vert,9
        @lineav oriz,vert,10,colore
        dec oriz
        sub vert,3
        @lineav oriz,vert,4,colore
        dec oriz
        sub vert,2
        @lineav oriz,vert,3,colore
        dec oriz
        sub vert,2
        @lineav oriz,vert,2,colore
        dec oriz
        dec vert
        @lineav oriz,vert,2,colore
        dec oriz
        dec vert
        @lineav oriz,vert,2,colore
        sub oriz,2
        dec vert
        @lineao oriz,vert,2,colore
        dec vert
        dec oriz
        @lineao oriz,vert,2,colore
        dec oriz
        dec vert
        @lineao oriz,vert,2,colore
        dec vert
        sub oriz,3
        @lineao oriz,vert,4,colore
        dec vert
        sub oriz,3
        @lineao oriz,vert,4,colore
        endm

@x      macro x,y,c
        local inizio,oriz,vert
        jmp inizio

oriz dw 0
vert dw 0

inizio: mov oriz,x
        mov vert,y
        @linead1 oriz,vert,40,c
        inc oriz
        @linead1 oriz,vert,40,c
        inc oriz
        @linead1 oriz,vert,40,c
        add oriz,39
        @linead2 oriz,vert,40,c
        dec oriz
        @linead2 oriz,vert,40,c
        dec oriz
        @linead2 oriz,vert,40,c
        endm

@linead1 macro x,y,l,c
        local wrk
        push ax
        push cx
        mov ax,0a000h
        mov es,ax
        mov di,y
        mov ax,320
        mul di
        add ax,x
        mov di,ax
        mov cx,l
wrk:    mov ah,c
        mov es:[di],ah
        add di,321
        loop wrk
        pop cx
        pop ax
        endm

@linead2 macro x,y,l,c
        local wrk
        push ax
        push cx
        mov ax,0a000h
        mov es,ax
        mov di,y
        mov ax,320
        mul di
        add ax,x
        mov di,ax
        mov cx,l
wrk:    mov ah,c
        mov es:[di],ah
        add di,319
        loop wrk
        pop cx
        pop ax
        endm

@alfanumst macro orizz,verti,st,a
;Per motivi di spazio nel forum ho messo tutti sti LOCAL ma non ce ne sarebbe bisogno
        LOCAL  oriz,vert,colore,inizio,fine,wrk,wrk2,wrk3,wrk4,wrk5,wrk6,wrk7,wrk8,wrk9
        LOCAL wrk10,wrk11,wrk12,wrk13,wrk14,wrk15,wrk16,wrk17,wrk18,wrk19,wrk20
        LOCAL wrk21,wrk22,wrk23,wrk24,wrk25,wrk26,wrk27,wrk28,wrk29,wrk30
        LOCAL wrk31,wrk32,wrk33,wrk34,wrk35,wrk36,wrk37,wrk38,wrk39,wrk40,wrk41
        LOCAL wrk42,wrk43,wrk44,wrk45,wrk46,wrk47,wrk48,wrk49,wrk50,wrk51,wrk52
        LOCAL wrk53,wrk54,disa,disb,disc,disd,dise,disf,disg,dish,disi,disj,disk,disl,dism,disn
        LOCAL diso,disp,disq,disr,diss,dist,disu,disv,disw,disx,disy,disz,space,inizi,dopo,theend
        mov colore,a
        mov oriz,orizz
        mov vert,verti
        jmp inizio

oriz dw 0
vert dw 0
colore db 0

inizio: mov bx,offset st
inizi:  mov al,[bx]
        cmp al,0
        jne dopo
        jmp theend
dopo:   cmp al,"a"
        jne wrk
        jmp disa
wrk:    cmp al,"A"
        jne wrk2
        jmp disa
wrk2:   cmp al,"b"
        jne wrk3
        jmp disb
wrk3:   cmp al,"B"
        jne wrk4
        jmp disb
wrk4:   cmp al,"c"
        jne wrk5
        jmp disc
wrk5:   cmp al,"C"
        jne wrk6
        jmp disc
wrk6:   cmp al,27
        jne wrk7
        jmp fine
wrk7:   cmp al,"d"
        jne wrk8
        jmp disd
wrk8:   cmp al,"D"
        jne wrk9
        jmp disd
wrk9:   cmp al,"e"
        jne wrk10
        jmp dise
wrk10:  cmp al,"E"
        jne wrk11
        jmp dise
wrk11:  cmp al,"f"
        jne wrk12
        jmp disf
wrk12:  cmp al,"F"
        jne wrk13
        jmp disf
wrk13:  cmp al,"g"
        jne wrk14
        jmp disg
wrk14:  cmp al,"G"
        jne wrk15
        jmp disg
wrk15:  cmp al,"h"
        jne wrk16
        jmp dish
wrk16:  cmp al,"H"
        jne wrk17
        jmp dish
wrk17:  cmp al,"i"
        jne wrk18
        jmp disi
wrk18:  cmp al,"I"
        jne wrk19
        jmp disi
wrk19:  cmp al,"j"
        jne wrk20
        jmp disj
wrk20:  cmp al,"J"
        jne wrk21
        jmp disj
wrk21:  cmp al,"k"
        jne wrk22
        jmp disk
wrk22:  cmp al,"K"
        jne wrk23
        jmp disk
wrk23:  cmp al,"l"
        jne wrk24
        jmp disl
wrk24:  cmp al,"L"
        jne wrk25
        jmp disl
wrk25:  cmp al,"m"
        jne wrk26
        jmp dism
wrk26:  cmp al,"M"
        jne wrk27
        jmp dism
wrk27:  cmp al,"n"
        jne wrk28
        jmp disn
wrk28:  cmp al,"N"
        jne wrk29
        jmp disn
wrk29:  cmp al,"o"
        jne wrk30
        jmp diso
wrk30:  cmp al,"O"
        jne wrk31
        jmp diso
wrk31:  cmp al,"p"
        jne wrk32
        jmp disp
wrk32:  cmp al,"P"
        jne wrk33
        jmp disp
wrk33:  cmp al,"q"
        jne wrk34
        jmp disq
wrk34:  cmp al,"Q"
        jne wrk35
        jmp disq
wrk35:  cmp al,"r"
        jne wrk36
        jmp disr
wrk36:  cmp al,"R"
        jne wrk37
        jmp disr
wrk37:  cmp al,"s"
        jne wrk38
        jmp diss
wrk38:  cmp al,"S"
        jne wrk39
        jmp diss
wrk39:  cmp al,"t"
        jne wrk40
        jmp dist
wrk40:  cmp al,"T"
        jne wrk41
        jmp dist
wrk41:  cmp al,"u"
        jne wrk42
        jmp disu
wrk42:  cmp al,"U"
        jne wrk43
        jmp disu
wrk43:  cmp al,"v"
        jne wrk44
        jmp disv
wrk44:  cmp al,"V"
        jne wrk45
        jmp disv
wrk45:  cmp al,"w"
        jne wrk46
        jmp disw
wrk46:  cmp al,"W"
        jne wrk47
        jmp disw
wrk47:  cmp al,"x"
        jne wrk48
        jmp disx
wrk48:  cmp al,"X"
        jne wrk49
        jmp disx
wrk49:  cmp al,"y"
        jne wrk50
        jmp disy
wrk50:  cmp al,"Y"
        jne wrk51
        jmp disy
wrk51:  cmp al,"z"
        jne wrk52
        jmp disz
wrk52:  cmp al,"Z"
        jne wrk53
        jmp disz
wrk53:  cmp al,32
        jne wrk54
        jmp space
wrk54:  jmp fine

disa:   add oriz,2
        @lineao oriz,vert,2,colore
        inc vert
        @lineao oriz,vert,2,colore
        dec oriz
        inc vert
        @lineav oriz,vert,2,colore
        add vert,2
        @lineao oriz,vert,4,colore
        inc vert
        dec oriz
        @lineav oriz,vert,2,colore
        add oriz,4
        sub vert,3
        @lineav oriz,vert,2,colore
        inc oriz
        add vert,3
        @lineav oriz,vert,2,colore
        add oriz,2
        sub vert,5
        jmp fine

disb:   @lineao oriz,vert,5,colore
        inc vert
        @lineav oriz,vert,6,colore
        add oriz,5
        @lineav oriz,vert,2,colore
        sub oriz,4
        add vert,2
        @lineao oriz,vert,4,colore
        add vert,3
        @lineao oriz,vert,4,colore
        sub vert,2
        add oriz,4
        @lineav oriz,vert,2,colore
        add oriz,2
        sub vert,4
        jmp fine

disc:   inc oriz
        @lineao oriz,vert,4,colore
        inc vert
        dec oriz
        @lineav oriz,vert,5,colore
        add oriz,5
        @pixel oriz,vert,colore
        sub oriz,4
        add vert,5
        @lineao oriz,vert,4,colore
        dec vert
        add oriz,4
        @pixel oriz,vert,colore
        add oriz,2
        sub vert,5
        jmp fine

disd:   @lineav oriz,vert,7,colore
        @lineao oriz,vert,5,colore
        inc vert
        add oriz,5
        @lineav oriz,vert,5,colore
        sub oriz,4
        add vert,5
        @lineao oriz,vert,4,colore
        add oriz,6
        sub vert,6
        jmp fine

dise:   @lineao oriz,vert,5,colore
        @lineav oriz,vert,7,colore
        inc oriz
        add vert,3
        @lineao oriz,vert,3,colore
        add vert,3
        @lineao oriz,vert,4,colore
        add oriz,5
        sub vert,6
        jmp fine

disf:   @lineao oriz,vert,5,colore
        @lineav oriz,vert,7,colore
        add vert,3
        @lineao oriz,vert,4,colore
        add oriz,6
        sub vert,3
        jmp fine

disg:   inc oriz
        @lineao oriz,vert,4,colore
        dec oriz
        inc vert
        @lineav oriz,vert,5,colore
        add oriz,5
        @pixel oriz,vert,colore
        sub oriz,2
        add vert,2
        @lineao oriz,vert,2,colore
        add oriz,2
        @lineav oriz,vert,4,colore
        dec oriz
        add vert,2
        @pixel oriz,vert,colore
        sub oriz,3
        inc vert
        @lineao oriz,vert,3,colore
        add oriz,6
        sub vert,6
        jmp fine

dish:   @lineav oriz,vert,7,colore
        add oriz,5
        @lineav oriz,vert,7,colore
        add vert,3
        sub oriz,4
        @lineao oriz,vert,4,colore
        add oriz,6
        sub vert,3
        jmp fine

disi:   @lineav oriz,vert,7,colore
        add oriz,2
        jmp fine

disj:   add oriz,3
        @lineav oriz,vert,6,colore
        sub oriz,3
        add vert,4
        @lineav oriz,vert,2,colore
        inc oriz
        add vert,2
        @lineao oriz,vert,2,colore
        add oriz,4
        sub vert,6
        jmp fine

disk:   @lineav oriz,vert,7,colore
        add oriz,4
        @linead2 oriz,vert,4,colore
        add vert,4
        sub oriz,2
        @linead1 oriz,vert,3,colore
        add oriz,4
        sub vert,4
        jmp fine

disl:   @lineav oriz,vert,7,colore
        add vert,6
        @lineao oriz,vert,4,colore
        add oriz,5
        sub vert,6
        jmp fine

dism:   @lineav oriz,vert,7,colore
        inc oriz
        @lineav oriz,vert,2,colore
        inc oriz
        add vert,2
        @lineav oriz,vert,2,colore
        inc oriz
        add vert,2
        @lineav oriz,vert,2,colore
        inc oriz
        @lineav oriz,vert,2,colore
        inc oriz
        sub vert,2
        @lineav oriz,vert,2,colore
        inc oriz
        sub vert,2
        @lineav oriz,vert,2,colore
        inc oriz
        @lineav oriz,vert,7,colore
        add oriz,2
        jmp fine

disn:   @lineav oriz,vert,7,colore
        inc oriz
        @lineav oriz,vert,2,colore
        inc oriz
        add vert,2
        @lineav oriz,vert,2,colore
        inc oriz
        add vert,2
        @lineav oriz,vert,2,colore
        inc oriz
        add vert,2
        @pixel oriz,vert,colore
        inc oriz
        sub vert,6
        @lineav oriz,vert,7,colore
        add oriz,2
        jmp fine

diso:   inc oriz
        @lineao oriz,vert,4,colore
        add vert,6
        @lineao oriz,vert,4,colore
        dec oriz
        sub vert,5
        @lineav oriz,vert,5,colore
        add oriz,5
        @lineav oriz,vert,5,colore
        add oriz,2
        dec vert
        jmp fine

disp:   @lineav oriz,vert,7,colore
        @lineao oriz,vert,5,colore
        inc vert
        add oriz,5
        @lineav oriz,vert,2,colore
        add vert,2
        sub oriz,4
        @lineao oriz,vert,4,colore
        add oriz,6
        sub vert,3
        jmp fine

disq:   inc oriz
        @lineao oriz,vert,4,colore
        add vert,6
        @lineao oriz,vert,4,colore
        dec oriz
        sub vert,5
        @lineav oriz,vert,5,colore
        add oriz,5
        @lineav oriz,vert,5,colore
        sub oriz,2
        add vert,3
        @linead1 oriz,vert,2,colore
        add oriz,2
        add vert,3
        @pixel oriz,vert,colore
        add oriz,2
        sub vert,7
        jmp fine

disr:   @lineao oriz,vert,5,colore
        @lineav oriz,vert,7,colore
        inc oriz
        add vert,3
        @lineao oriz,vert,4,colore
        add oriz,4
        inc vert
        @lineav oriz,vert,3,colore
        sub vert,3
        @lineav oriz,vert,2,colore
        add oriz,2
        dec vert
        jmp fine

diss:   inc oriz
        @lineao oriz,vert,3,colore
        inc vert
        dec oriz
        @lineav oriz,vert,2,colore
        add oriz,4
        @pixel oriz,vert,colore
        sub oriz,3
        add vert,2
        @lineao oriz,vert,3,colore
        inc vert
        add oriz,3
        @lineav oriz,vert,2,colore
        inc vert
        sub oriz,4
        @pixel oriz,vert,colore
        inc oriz
        inc vert
        @lineao oriz,vert,3,colore
        add oriz,5
        sub vert,6
        jmp fine

dist:   @lineao oriz,vert,5,colore
        add oriz,2
        @lineav oriz,vert,7,colore
        add oriz,4
        jmp fine

disu:   @lineav oriz,vert,6,colore
        inc oriz
        add vert,6
        @lineao oriz,vert,3,colore
        add oriz,3
        sub vert,6
        @lineav oriz,vert,6,colore
        add oriz,2
        jmp fine

disv:   @lineav oriz,vert,2,colore
        inc oriz
        add vert,2
        @lineav oriz,vert,3,colore
        inc oriz
        add vert,3
        @lineav oriz,vert,2,colore
        inc oriz
        sub vert,3
        @lineav oriz,vert,3,colore
        inc oriz
        sub vert,2
        @lineav oriz,vert,2,colore
        add oriz,2
        jmp fine

disw:   @lineav oriz,vert,2,colore
        inc oriz
        add vert,2
        @lineav oriz,vert,3,colore
        inc oriz
        add vert,3
        @lineav oriz,vert,2,colore
        inc oriz
        sub vert,2
        @lineav oriz,vert,2,colore
        inc oriz
        add vert,2
        @lineav oriz,vert,2,colore
        inc oriz
        sub vert,3
        @lineav oriz,vert,3,colore
        inc oriz
        sub vert,2
        @lineav oriz,vert,2,colore
        add oriz,2
        jmp fine

disx:   @pixel oriz,vert,colore
        inc vert
        @linead1 oriz,vert,5,colore
        add oriz,4
        @linead2 oriz,vert,5,colore
        dec vert
        @pixel oriz,vert,colore
        add vert,6
        @pixel oriz,vert,colore
        sub oriz,4
        @pixel oriz,vert,colore
        add oriz,6
        sub vert,6
        jmp fine
       
disy:   @lineav oriz,vert,2,colore
        inc oriz
        add vert,2
        @pixel oriz,vert,colore
        inc oriz
        inc vert
        @lineav oriz,vert,4,colore
        dec vert
        inc oriz
        @pixel oriz,vert,colore
        inc oriz
        sub vert,2
        @lineav oriz,vert,2,colore
        add oriz,2
        jmp fine

disz:   @lineao oriz,vert,5,colore
        inc vert
        add oriz,4
        @linead2 oriz,vert,5,colore
        sub oriz,4
        add vert,5
        @lineao oriz,vert,5,colore
        add oriz,6
        sub vert,6
        jmp fine

space:  add oriz,5
        jmp fine

fine:   inc bx
        jmp inizi
theend:
        endm

@lineaq  macro X1,Y1,X2,Y2,C 
         LOCAL NO_SWAP,H_ABS,NOT_H,NOT_V,LH,SH,LV,SV,VL_LOOP,H_IND,DIAG_V,XX,EXIT
         pusha
         
         mov   bx,X1
         mov   ax,Y1
         mov   cx,X2
         mov   si,Y2
         cmp   ax,si             
         jbe   NO_SWAP
         xchg  bx,cx             
         xchg  ax,si
NO_SWAP: sub   si,ax             
         sub   cx,bx             
         cld                     
         jns   H_ABS             
         neg   cx                 
         std                     
H_ABS:   mov   di,320
         mul   di
         mov   di,ax
         add   di,bx             
         or    si,si
         jnz   NOT_H
;:::::::::::::::::::::::::::::::::: Caso Linea Orizzontale
         cld
         mov   al,C
         inc   cx
         rep   stosb
         jmp   EXIT
;::::::::::::::::::::::::::::::::::
NOT_H:   or    cx,cx
         jnz   NOT_V
;:::::::::::::::::::::::::::::::::: Caso Linea Verticale
         cld
         mov   al,C
         mov   cx,si
         inc   cx
         mov   bx,320-1
VL_LOOP: stosb
         add   di,bx
         loop  VL_LOOP
         jmp   EXIT
;::::::::::::::::::::::::::::::::::
NOT_V:   cmp   cx,si             
         lahf                     

         xchg  cx,si             
H_IND:   mov   dx,si             
         sub   dx,cx
         shl   dx,1
         shl   si,1             
         mov   bx,si             
         sub   bx,cx
         inc   cx
         push  bp           
         mov   bp,320
         mov   al,C
         sahf                   
         jb    DIAG_V
;:::::::::::::::::::::::::::::::::: Caso Linea Obliqua Bassa
         or    bx,bx             
LH:      stosb                   
         jns   SH               
         add   bx,si
         loop  LH               
         jmp   XX
SH:      add   di,bp
         add   bx,dx
         loop  LH                 
         jmp   XX
;:::::::::::::::::::::::::::::::::: Caso Linea Obliqua Alta
DIAG_V:  or    bx,bx             
         
LV:      mov   es:[di],al         
         jns   SV                 
         add   di,bp           
         add   bx,si
         loop  LV                 
         jmp   XX
SV:      scasb                   
         add   di,bp             
         add   bx,dx
         loop  LV               
XX:      pop   bp
EXIT:    popa
         endm

@pixel  macro x,y,c
        push ax
        push di
        mov ax,0a000h
        mov es,ax
        mov di,y
        mov ax,320
        mul di
        add ax,x
        mov di,ax
        mov ah,c
        mov es:[di],ah
        pop di
        pop ax
        endm
User avatar
mikeleasm
Help Programmer
 
Posts: 356
Joined: Mon Jul 03, 2006 8:02 pm
Location: Bellissima Catania..

Postby Dersew on Wed Jul 05, 2006 10:42 am

Porca paletta signori...non so se mi spiego..qui c'? un lavoraccio...mitico mikeleasm :lol:
Image
User avatar
Dersew
Algoritmo
 
Posts: 180
Joined: Thu Jun 08, 2006 8:17 pm
Location: Catania

Postby darkz on Wed Jul 05, 2006 12:20 pm

:shock: azz
grandissimo :P
Darkz . . .

Image
User avatar
darkz
Algoritmo
 
Posts: 105
Joined: Wed Jun 07, 2006 2:23 pm
Location: Firenze

Postby mikeleasm on Wed Jul 05, 2006 12:32 pm

..Le macro sono molto lunghe perch? a me non piaceva il tipo di carattere fornito dal bios e cos? mi sono dovuto creare per l'appunto una macro che mi disegnasse tutte le lettere dell'alfabeto come piacciono a me!!..
User avatar
mikeleasm
Help Programmer
 
Posts: 356
Joined: Mon Jul 03, 2006 8:02 pm
Location: Bellissima Catania..

Postby _Andy_ on Wed Jul 05, 2006 2:42 pm

:shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: s :shock: :shock: :shock: :shock: :shock: :shock: t :shock: :shock: :shock: :shock: :shock: :shock: o :shock: :shock: :shock: :shock: :shock: c :shock: :shock: :shock: a :shock: :shock: :shock: z :shock: :shock: :shock: :shock: z :shock: :shock: :shock: o :shock: :shock: :shock: :shock: i :shock: :shock: :shock: m :shock: :shock: :shock: p :shock: :shock: r :shock: :shock: e :shock: :shock: s :shock: :shock: :shock: s :shock: :shock: :shock: :shock: i :shock: :shock: :shock: o :shock: :shock: n :shock: :shock: :shock: a :shock: :shock: n :shock: :shock: t :shock: :shock: e :shock: :shock: :shock: :shock:



Cio?, ma avete capito??? :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock:
User avatar
_Andy_
Variabile
 
Posts: 258
Joined: Thu Jun 15, 2006 8:00 pm
Location: 127.0.0.1

Postby k8 on Wed Jul 05, 2006 2:43 pm

Code: Select all
Sto ca**o impressionante

ASD
User avatar
k8
Admin
 
Posts: 2115
Joined: Tue Jun 06, 2006 4:00 pm

Postby Fabriz on Wed Jul 05, 2006 5:21 pm

complimenti!
Bit wrote:Ma sisi cosa? che ca**o c'è da ridere? bha


Dead on my sweet Piano.


IO NON SONO AMICO DI GOOGLE
User avatar
Fabriz
Diagramma a Blocchi
 
Posts: 209
Joined: Sun Jul 02, 2006 4:15 pm

..NON ESAGERATE!!..

Postby mikeleasm on Wed Jul 05, 2006 5:35 pm

..GRAZIE MILLE!!..DAVVERO!!.. :P ..
User avatar
mikeleasm
Help Programmer
 
Posts: 356
Joined: Mon Jul 03, 2006 8:02 pm
Location: Bellissima Catania..

Postby _Andy_ on Wed Jul 05, 2006 5:39 pm

se penso ke di quelle scritte ne capisco il 30 % st? male :lol:

P.S. Kiet hai indovinato :lol:
User avatar
_Andy_
Variabile
 
Posts: 258
Joined: Thu Jun 15, 2006 8:00 pm
Location: 127.0.0.1

Postby k8 on Wed Jul 05, 2006 5:42 pm

_Andy_ wrote:se penso ke di quelle scritte ne capisco il 30 % st? male :lol:

P.S. Kiet hai indovinato :lol:


30? io nemmeno quello :sad:
User avatar
k8
Admin
 
Posts: 2115
Joined: Tue Jun 06, 2006 4:00 pm

Next

Return to ASM

Who is online

Users browsing this forum: No registered users and 1 guest