Piero Darlato Inserito: 27 marzo 2019 Segnala Share Inserito: 27 marzo 2019 (modificato) Ciao a tutti, sto approfondendo un pò di assembler dell'8088 e ho letto questo : il processore per poter indirizzare + di 64k utilizza due word, esempio 0AB1:0001 ho letto anche che i segmenti iniziano ogni 16byte e sono lunghi 64k. Quindi il primo segmento spazia tra questi indirizzi : 0AB1:0001 e 0AB1:FFFF il secondo segmento da dove inizia ? da 0AB2:0001 ? o si sovrappone all'indirizzo 0AB1:0010 ? Leggo anche che si parla di indirizzo assoluto, ma che significa la cella di memoria a partire da 0 ? Modificato: 27 marzo 2019 da Piero Darlato Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 27 marzo 2019 Segnala Share Inserita: 27 marzo 2019 19 minuti fa, Piero Darlato scrisse: Ciao a tutti, sto approfondendo un pò di assembler dell'8088 e ho letto questo Mamma mia questo processore era vecchio ed obsoleto gia a metà anni 80 del secolo scorso! Dovrei avere sugli scaffali ancora un paio di manuali; magari con calma me li vado a guardare. 22 minuti fa, Piero Darlato scrisse: il secondo segmento da dove inizia ? da 0AB2:0001 ? o si sovrappone all'indirizzo 0AB1:0010 ? perchè mai dovrebbe sovrapporsi? 23 minuti fa, Piero Darlato scrisse: Leggo anche che si parla di indirizzo assoluto, ma che significa la cella di memoria a partire da 0 ? Se ricordo bene, ma non lo giureri, l'indirizzo assoluto è quello completo di segmento, mentre quello relativo indica solo la posizione all'interno del sgmento. Se lavori sempre all'interno del segmento le operazioni di salto e di indirizzamento son più veloci. Link al commento Condividi su altri siti More sharing options...
Piero Darlato Inserita: 27 marzo 2019 Autore Segnala Share Inserita: 27 marzo 2019 Eppure il libro dice che il secondo segmento inizia dopo 16 byte, ed è qui che nasce la confusione : si sovrappongono ? Link al commento Condividi su altri siti More sharing options...
Darlington Inserita: 27 marzo 2019 Segnala Share Inserita: 27 marzo 2019 (modificato) 1 ora fa, Livio Orsini scrisse: Mamma mia questo processore era vecchio ed obsoleto gia a metà anni 80 del secolo scorso! Che commercialmente sia vecchio significa poco o nulla, anche 386 è un'architettura superata eppure quei processori vengono ancora prodotti ed usati largamente, specie in aeronautica dove conta più l'affidabilità che le prestazioni pure (un processore stra iper collaudato è garantito che non presenta bug hardware che possono compromettere il malfunzionamento della macchina nel momento più infelice, senza contare l'efficienza del processo produttivo migliorato durante gli anni ed il fatto che considerando l'iter di certificazioni che dovrebbe passare un eventuale nuovo hardware, se non c'è realmente la necessità di aggiornare non ne vale la pena). Non mi stupirei di sapere che nel settore industriale, medicale o simili esistono tuttora applicazioni embedded realizzate con 8088 o 286, anche recenti... Modificato: 27 marzo 2019 da Darlington Link al commento Condividi su altri siti More sharing options...
del_user_97632 Inserita: 27 marzo 2019 Segnala Share Inserita: 27 marzo 2019 (modificato) Forse posso aiutare, se funziona come l'8086 si usa l'indirizzamento 16bit real mode: Si indirizza l'address space sommando due registri: BASE:OFFSET dei 20 bit risultanti, i 12bit centrali si sovrappongono. Fai 20 bit totali, infatti queste cpu non andavano olre il 20esimo bit (1 mega, memoria convenzionale fino a 512K + memoria alta, per la "estesa" si usava famoso gate-A20 (21esimo bit)). Quindi puoi combinare base e offset come vuoi, per avere l'indirizzo finale: mov si, 0xa000; mov dx, 0x100; mov ax, si:[dx] Sovrapponi (fai un or logico) i 12 bit centrali, vuol dire che in ax avrai la word puntata da 0xa0100; Modificato: 27 marzo 2019 da _angelo_ Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 27 marzo 2019 Segnala Share Inserita: 27 marzo 2019 1 ora fa, _angelo_ scrisse: se funziona come l'8086 si usa l'indirizzamento 16bit real mode: Dai miei ricordi 8088 e 8086 erano indentici tranne che per il bus di dati che nello 8088era da 8 bits e non da 16. 2 ore fa, _angelo_ scrisse: Si indirizza l'address space sommando due registri: BASE:OFFSET Si ora mi ricordo. Anche se io in effetti non usavo lo 8088 ma la versione più moderna lo 80188, spesso accoppiato con lo 80187 coprocessore aritmentico. Con buona pace di Darlington, già a metà anni '90, nell'industria, eran già tutti o quasi, migrati al 386Ex. Link al commento Condividi su altri siti More sharing options...
ilguargua Inserita: 27 marzo 2019 Segnala Share Inserita: 27 marzo 2019 29 minuti fa, Livio Orsini scrisse: nell'industria, eran già tutti o quasi, migrati al 386Ex. Correggetemi se sbaglio, ma mi sembra di ricordare che il 386 è stato il primo processore (Intel) in grado di eseguire codice in "modalità protetta", un bel salto, sopratutto per i sistemi operativi. Infatti Linus Torvalds prese la palla al balzo e creò Linux, che aveva proprio bisogno di quella specifica funzione, prima riservata a processori troppo costosi per essere accessibili ad uno studente. Ciao, Ale. Link al commento Condividi su altri siti More sharing options...
del_user_97632 Inserita: 27 marzo 2019 Segnala Share Inserita: 27 marzo 2019 (modificato) 44 minuti fa, ilguargua scrisse: Correggetemi se sbaglio, ma mi sembra di ricordare che il 386 è stato il primo processore (Intel) in grado di eseguire codice in "modalità protetta", un bel salto, sopratutto per i sistemi operativi. Infatti Linus Torvalds prese la palla al balzo e creò Linux, che aveva proprio bisogno di quella specifica funzione, prima riservata a processori troppo costosi per essere accessibili ad uno studente. Gia. Anche nei moderni x86_64 (amd64) ci si puo esercitare con codice real mode, o anche usando emulatori come virtualbox / bochs. Con firmware "BIOS" (e emulatori in genere) si parte in real mode, poi si salta in protected mode, e poi nel piu attuale "long" mode (64bit). Con firmware UEFI invece cambia tutto, credo si parta gia in protected mode. PS: Per Livio, avrei una domanda in PM. Ciao Modificato: 27 marzo 2019 da _angelo_ Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 28 marzo 2019 Segnala Share Inserita: 28 marzo 2019 13 ore fa, ilguargua scrisse: Correggetemi se sbaglio, ma mi sembra di ricordare che il 386 è stato il primo processore (Intel) in grado di eseguire codice in "modalità protetta Si ed il 386Ex, o 386 Embedded, era la versione che Intel licenziò per applicazioni industriali quando produsse il 486 per applicazioni PC. Con il 386Ex, progettai la mia ultima scheda a microprocessore per applicazioni industriali, era l'anno 1995. 12 ore fa, _angelo_ scrisse: PS: Per Livio, avrei una domanda in PM. Mandami pure il messaggio, non c'è alcun problema. Link al commento Condividi su altri siti More sharing options...
del_user_97632 Inserita: 4 aprile 2019 Segnala Share Inserita: 4 aprile 2019 Beh complimenti, una scheda 386 dev'essere stata piuttosto complessa! Io ho lavorato qualche anno su degli 80186 turbo, che il costruttore vendeva come RISC - style, cioè dichiarava 1 istruzione per ciclo di clock. Alla fine comunque set di istruzioni 8086 e' arrivato fino agli odierni 64bit, cambiano nomi dei registri , tipo ax >eax >rax e ci sono ovviamente istruzioni nuove ma il set istruzioni base e' lo stesso di 8086 e lavorare in indirizzamento "flat" e' molto più semplice. PS: inviato msg privato. Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 4 aprile 2019 Segnala Share Inserita: 4 aprile 2019 (modificato) 7 ore fa, _angelo_ scrisse: Beh complimenti, una scheda 386 dev'essere stata piuttosto complessa! Lo Hw, se hai una buona abitudine a progettare dispositivi con questa componentistica, non lo è poi tanto. E il Sw che diventa pesante.Scrivere in Asm per questi processori è veramente faticoso. Nei miei archivi dovrei avere ancora gli schemi cartacei delle varie schede embedded a partire da quella con lo 8051, per passare a quella con lo 81186/187 ed alla fine con il 386ex. racchiudono un arco temporale di circa 15 anni Modificato: 4 aprile 2019 da Livio Orsini Link al commento Condividi su altri siti More sharing options...
del_user_97632 Inserita: 4 aprile 2019 Segnala Share Inserita: 4 aprile 2019 (modificato) Hai fatto un buon percorso, il vecchio 8051 lo conosco anch'io, che per altro lo hanno rifatto potenziato in tutte le salse, specie la Dallas, ho sviluppato per hobby un po' di schede con quei Dallas xx51 tanti anni fa, anche un po di architettura Harvard non guasta a capire il futuro che ormai sui nuovi "system on chip" multicore e' di innumerevoli miscele Harvard e Von Neumann. In assembly 8086 ho scritto anche un intero client di posta elettronica tanti anni fa, cosi per imparare, ma in modalita "flat" 32 bit, che e' ben piu semplice rispetto alla modalita real mode base:offset con cui hai lavorato, come puntatori usi un unico registro 32bit (oggi a 64) e hai tutto l'address space virtuale a disposizione: mov eax, [esi] ; dove esi in modalita' protetta/flat erano i 4GB virtuali della macchina Se a qualcuno interessa, c'e' il compilatore gratuito masm32 per giocare l'assembly su PC windows, e molti tutorial http://service.scs.carleton.ca/sivarama/asm_book_web/free_MASM.html In Linux, il mio preferito, c'e' gia gcc, gas, C con inline assembly, debugger tutto gratis. La sintassi cambia tuttavia, e' AT&T, ma ci si abitua presto. Modificato: 4 aprile 2019 da _angelo_ Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 4 aprile 2019 Segnala Share Inserita: 4 aprile 2019 (modificato) 2 ore fa, _angelo_ scrisse: Hai fatto un buon percorso, il vecchio 8051 A dir la cerità io ho iniziato ancora con lo F8, con lo Sc/Mp, con gli 8085 e Z80, oltre ad aver sviluppato CPU booleane con lo ICU motorola ICU16000 (la sigla non so se è esatta perchè dopo oltre 40 anni ho qualche ... problema di memoria.) Anzi a dir la verità il primo microprocessore che ho studiato, senza peraltro realizzare alcun progetto con esso, è stato l'antenato dello F8 giunto in Olivetti direttamente dai laboratori Farchild USA. Non era ancora chiamato microporocessore ma era visto solo come un LSI. Con questo l?olivetti si riproponeva di realizzare la nuova (era l'anno 1972) generazione di calcolatrici. Comunque nel 1987 ho realizzato, con una piccola scheda basta su 8052, un controllore embedded in grado di chiudere un anello PID in meno di 5 ms, pur lavorando in virgola mobile. Usai quello che io reputo che sia, ancora oggi, il miglior linguaggio per applicazioni in real time: il PLM. Questo linguaggio deriva dal PL1 (program language 1: il primo linguaggio strutturato). Il CERN derivò dal PL1 il PL11 per il mitico PDP11 (vera pietra migliare nel campo dei calcolatori di processo). Da questo Intel derivò il PLMxx, Program Language Micro dove con xx si individua la serie dei processori; si iniziò con PLM80, per poi passare al PLM51 e PLM86. Poi Itel abbandonò lo sviluppo di compilatori dedicati ai suoi micro. Con quella schedina, che poteva essere applicata a bordo di un convertitore per motori in cc, realizzai tra l'altro un controllo di avvolgitura che anò ad equipaggiare centinaia di macchine di una notissima azienda USA produttrice di pellicole e carta fotografica. Modificato: 4 aprile 2019 da Livio Orsini Link al commento Condividi su altri siti More sharing options...
del_user_97632 Inserita: 4 aprile 2019 Segnala Share Inserita: 4 aprile 2019 Ooh interessante, no, fino al PLM non ci arrivo, mondo sconosciuto per me, ho dato una letta in rete ora, si vedo che era un linguaggio performante, proprio perche' creato ad hoc per determinati micro quindi accedeva alle porte I/O, memoria etc, senza troppi passaggi. Eh si il mondo e' cambiato. Per curiosita', poi dopo tutte queste schede hai cambiato ramo ? Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 4 aprile 2019 Segnala Share Inserita: 4 aprile 2019 6 minuti fa, _angelo_ scrisse: poi dopo tutte queste schede hai cambiato ramo ? No o continuato sino a quando, nel 2001, sono andato in pensione; ma da allora ho continuato sviluppando Hw e Sw con PIC e DSPic. In questi ultimi anni ho abbandonato lo sviluppo di Hw Link al commento Condividi su altri siti More sharing options...
del_user_97632 Inserita: 4 aprile 2019 Segnala Share Inserita: 4 aprile 2019 Ah ok Beato te. Io avro ancora un 15 anni davanti ma cerco di divertirmi, il mio cuore e' su Linux embedded , Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 4 aprile 2019 Segnala Share Inserita: 4 aprile 2019 1 ora fa, _angelo_ scrisse: Beato te Mica tanto, visto che son molto più vecchio di te. Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora