TRIS IN ASSEMBLER

Quello più vicino al linguaggio macchina vero e proprio.

Postby _Andy_ on Wed Jul 05, 2006 6:35 pm

il 30 era x dire proprio POKO POKO... ma ? sicuramente di meno :lol:


cio?, gi? ke ci siamo ki conosce una guida BASILARE all'Assembly, giusto x capirne proprio le basi... anke nn programma re ma sl le basi... io ne lessi una tempo fa, ma ci capii veramente poko... :sad:
User avatar
_Andy_
Variabile
 
Posts: 258
Joined: Thu Jun 15, 2006 8:00 pm
Location: 127.0.0.1

Sponsor

Sponsor


Postby Dersew on Wed Jul 05, 2006 8:09 pm

LOL mikeleasm..io capisco l'80 % ...bh?..mi arrangio..
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 pm

.. :D ..Dai ragazzi..Non ? nulla di che.. ;)
User avatar
mikeleasm
Help Programmer
 
Posts: 356
Joined: Mon Jul 03, 2006 8:02 pm
Location: Bellissima Catania..

Postby Ghost on Wed Jul 05, 2006 8:20 pm

...ti faccio i miei complimenti 8)
Ghost
 

Postby _Andy_ on Sat Jul 08, 2006 3:46 pm

mikeleasm wrote:.. :D ..Dai ragazzi..Non ? nulla di che.. ;)


se mi spieghi ke differenza c'? dal muovere 15 byte in ax o in axacas o quello ke ? magari ti credo :lol:
User avatar
_Andy_
Variabile
 
Posts: 258
Joined: Thu Jun 15, 2006 8:00 pm
Location: 127.0.0.1

Postby mikeleasm on Sat Jul 15, 2006 10:14 am

_Andy_ wrote:
mikeleasm wrote:.. :D ..Dai ragazzi..Non ? nulla di che.. ;)


se mi spieghi ke differenza c'? dal muovere 15 byte in ax o in axacas o quello ke ? magari ti credo :lol:


..Andy non ho capito la domanda..Avevamo chiarito su Msn se non sbaglio ma non capisco la domanda postata qui..Io non ho nessun problema a spiegarti le cose..E credimi il programma l'ho fatto io!..
"Gente TOSTA che POSTA" Clicca qui
Image
Image
Image
Image
User avatar
mikeleasm
Help Programmer
 
Posts: 356
Joined: Mon Jul 03, 2006 8:02 pm
Location: Bellissima Catania..

Postby _Andy_ on Mon Jul 17, 2006 9:20 pm

certo certo, il mio era x dire, la domanda era secondo quale criterio si spostano i bit nei vari registri ;)
User avatar
_Andy_
Variabile
 
Posts: 258
Joined: Thu Jun 15, 2006 8:00 pm
Location: 127.0.0.1

Postby mikeleasm on Mon Jul 17, 2006 10:47 pm

..La tua domanda anche se tanto per dire merita una risposta,almeno tanto per dire..Ogni registro viene utilizzato per una certa funzione..Per esempio i registri detti puntatori servono per l'appunto a indicare una certa locazione di memoria..I registri contatori vengono utilizzari proprio per questa funzione che lo stesso nome ti suggerisce e anche per questo molte funzioni gi? esistenti utilizzano queste convenzioni..Se non mi sono spiegato bene dimmelo.. :D :D ..
"Gente TOSTA che POSTA" Clicca qui
Image
Image
Image
Image
User avatar
mikeleasm
Help Programmer
 
Posts: 356
Joined: Mon Jul 03, 2006 8:02 pm
Location: Bellissima Catania..

Postby LuPo140 on Tue Jul 18, 2006 4:22 pm

io mi sn perso alla 3 riga
User avatar
LuPo140
Operatore
 
Posts: 376
Joined: Mon Jul 03, 2006 11:37 pm
Location: Solbiate Olona (Va)

Postby mikeleasm on Tue Jul 18, 2006 5:35 pm

..allora..Provo a fare un p? di ordine in me e cerco di spiegarlo meglio.. :D :D ..

..Bisogna premettere che i processori di ultima generazione sono comunque delle evoluzioni dei vecchi processori..Per fare un esempio: un Intel Pentium 4 ? sviluppato sulla base di un suo abbastanza vecchio predecessore, l'8086..Con questo metodo di sviluppo possiamo utilizzare anche vecchi sistemi..Il programma che ho postato e le relative librerie sono per l'appunto realizzate per funzionare come su un 8086 a 16 bit..Ora questo processore ha 14 registri a 16 bit che sono:

AX - BX - CX - DX = Registri generali

SI - DI - BP - SP = Puntatori

CS - DS - ES - SS = Segmento

FLAG - IP = Ausiliari

..I registri generali sono spesso utilizzati anche divisi in due:
..AX pu? essere utilizzato a 8 bit diviso in due parti alto e basso..
..quindi AL -> AX low e AH -> AX high ..

..Ognuno dei registri sopra elencati viene utilizzato in alcune funzioni o istruzioni gi? esistenti in assembler e per convenzione hanno cos? dei ruoli..Faccio qualche esempio con il registro CX definito contatore:

Code: Select all
       mov cx,10
wrk:   mov al,[bx]
       mov es:[di],al
       inc bx
       add di,2
       loop wrk
         


..In queste poche righe di programma che ovviamente devono essere precedute da altro (? solo uno spezzone riportato per esempio) il programma non fa altro che inizializzare un contatore a 10 e poi con la funzione loop decrementare il suo valore ogni volta che viene richiamata saltando all'etichetta wrk finch? CX non arriva a 0..Si capisce facilmente che dobbiamo inizializzare CX perch? la funzione loop utilizza proprio questo registro come contatore..Se sostituiamo loop otteniamo il seguente codice:

Code: Select all
       mov cx,10
wrk:   mov al,[bx]
       mov es:[di],al
       inc bx
       add di,2
       cmp cx,0
       je dopo
       dec cx
       jmp wrk


..oppure..

Code: Select all
       mov cx,10
wrk:   mov al,[bx]
       mov es:[di],al
       inc bx
       add di,2
       dec cx
       jnz wrk


..Insomma ci sono mille modi per affrontare lo stesso problema..Spero solo sia chiaro cosa fanno queste istruzioni..A scanso di equivoci..

..Prima istruzione:

mov cx,10 = D? al registro CX il valore 10 in decimale se vogliamo inserire il valore in esadecimale basta aggiungere una h alla fine e ricordare che se il valore inizia con una lettera dobbiamo mettere davanti uno 0 per far riconoscere il tipo di dato cio? un valore numerico..Per inserire valori in binario invece basta aggiungere una semplice b..Per cui:

mov cx,10 = mov cx,0ah = mov cx,1010b

..? chiaro?..
..wrk: ? solo una etichetta che pu? essere utilizzata per ripetere varie parti del programma o per tornare indietro nel listato quando c'? bisogno di ripetere delle operazioni..

..Seconda istruzione:

mov al,[bx]

..Con questa istruzione viene copiato il valore presente nella memoria all'indirizzo indicato da BX in AL..
..La memoria ? divisa in dati da 8 bit..

..Terza istruzione:

mov es:[di],al

..Questa istruzione copia il dato contenuto in AL nella locazione di memoria indicata da ES e DI..Esempio:
..L'indirizzo di memoria delle coordinate 0,0 dello schermo in modalit? testo 80x25 a 16 colori ? b8000h..Composto da 20 bit..Se come detto prima un registro viene utilizzato a 16 bit non pu? contenere un valore come b8000h quindi serve un altro registro d'appoggio!..Cos? il dato viene diviso in due parti..
..ES verr? inizializzato a b800h con l'istruzione:
Code: Select all

        mov es,0b800h

..e DI preso come variabile d'appoggio inizializzato a 0 cos?:
Code: Select all

        mov di,0

..Uniti dai due punti sar? come avere il valore intero anche se in realt? diviso fra ES e DI..

..Quarta istruzione:

inc bx

..Beh si capisce no?..Incrementa BX che viene utilizzato come puntatore..Per esempio ad una stringa..Se abbiamo una stringa "CIAO!" e BX puntava alla C con inc bx punter? alla I..

..Quinta istruzione:

add di,2

..Anche questa ? di semplice comprensione..Incrementa di 2 il valore di DI..Nella modalit? testo i caratteri occupano 16 bit..I primi 8 definiscono di che carattere si tratta in base alla tabella dei codici ASCII..I restanti 8 definiscono gli attributi tra cui il colore del carattere e dello sfondo ed altri attributi speciali..Per questo se non si vuole modificare l'attributo standard del carattere biano su sfondo nero si salta un indirizzo di memoria per definire solo il carattere passando alla locazione di memoria successiva utile al carattere successivo!..

..Sesta istruzione:

dec cx

..E' l'esatto opposto dell'istruzione INC utilizzata prima con BX..

..Le restanti istruzioni utilizzate non fanno altro in un modo o nell'altro che controllare se il valore di CX ? 0 e ripetere a partire dall'etichetta WRK tutto finch? non si verifica questa condizione..
..In breve:

CMP CX,0 = IF(CX==0)

..se in caso di condizione vera si vuole saltare a qualche etichetta in particolare si inserisce JE WRK per esempio se invece si vuole saltare in caso di condizione falsa si inserisce JNE WRK ..Insomma molto semplice ed elementare..

..Cavolo mi sono levato la vita per scrivere sta roba..Vi immaginate andava via la luce o si impallava il pc e andava tutto perso.. :shock: ..Non lo rileggo troppo lungo e palloso per me..Se c'? qualche errore o qualcosa che non capite e volete delle delucidazioni fatemi sapere!..Grazie.. :D :D ..
"Gente TOSTA che POSTA" Clicca qui
Image
Image
Image
Image
User avatar
mikeleasm
Help Programmer
 
Posts: 356
Joined: Mon Jul 03, 2006 8:02 pm
Location: Bellissima Catania..

Postby LuPo140 on Sun Jul 23, 2006 5:05 pm

dopo essermi letto il listato ci sn volute 4 ore di svago x riprendermi
lupo@debian:~$ dpkg-reconfigure xserver-xorg
bash: dpkg-reconfigure: command not found
lupo@debian:~$

Image
Image
User avatar
LuPo140
Operatore
 
Posts: 376
Joined: Mon Jul 03, 2006 11:37 pm
Location: Solbiate Olona (Va)

Postby mikeleasm on Sun Jul 23, 2006 8:37 pm

..Ragazzi forse qualcuno non vuole perdere tempo a compilare il listato..Allora ecco qui il file eseguibile..Cos?..Per non perdere tempo.. :twisted: ..I numeri 1 e 2 sono utilizzati per il men?..Per giocare consiglio di usare il tastierino numerico.. :lol: 8) ..

--TRIS--
"Gente TOSTA che POSTA" Clicca qui
Image
Image
Image
Image
User avatar
mikeleasm
Help Programmer
 
Posts: 356
Joined: Mon Jul 03, 2006 8:02 pm
Location: Bellissima Catania..

Postby Thief on Sat Jul 29, 2006 5:15 pm

mikeleasm wrote:..Ragazzi forse qualcuno non vuole perdere tempo a compilare il listato..Allora ecco qui il file eseguibile..Cos?..Per non perdere tempo.. :twisted: ..I numeri 1 e 2 sono utilizzati per il men?..Per giocare consiglio di usare il tastierino numerico.. :lol: 8) ..

--TRIS--

L'ho provato e devo dire ke ? carino! :D ;)
Non sempre il passare del tempo ti fornisce l?esperienza. Molte volte, se non t?inventi l?esperienza, non riesci a far passare il tempo.

--> http://worldlink.altervista.org/
User avatar
Thief
Algoritmo
 
Posts: 147
Joined: Thu Jul 06, 2006 10:36 am
Location: On the Net..

Postby mikeleasm on Wed Aug 02, 2006 12:51 am

..Grazie.. :twisted: ..
"Gente TOSTA che POSTA" Clicca qui
Image
Image
Image
Image
User avatar
mikeleasm
Help Programmer
 
Posts: 356
Joined: Mon Jul 03, 2006 8:02 pm
Location: Bellissima Catania..

Postby NorbiX on Fri Mar 02, 2007 9:30 pm

bravissimo!

cavolo io lo uso per i PIC l'assembler, e devo dire che è una vera spina nel fianco, come mai ti piace di più del C?????? o_O O_o 500 righe..... sono pazzi questi programmatori asm......
User avatar
NorbiX
Array[]
 
Posts: 720
Joined: Fri Jul 14, 2006 11:14 am
Location: Inside the N.A.K.

PreviousNext

Return to ASM

Who is online

Users browsing this forum: No registered users and 1 guest

cron