Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Mate X7 rinnova la sfida nel segmento dei pieghevoli premium puntando su un design ancora più sottile e resistente, unito al ritorno dei processori proprietari della serie Kirin. L'assenza dei servizi Google e del 5G pesa ancora sull'esperienza utente, ma il comparto fotografico e la qualità costruttiva cercano di compensare queste mancanze strutturali con soluzioni ingegneristiche di altissimo livello
Nioh 3: souls-like punitivo e Action RPG
Nioh 3: souls-like punitivo e Action RPG
Nioh 3 aggiorna la formula Team NINJA con aree esplorabili più grandi, due stili di combattimento intercambiabili al volo (Samurai e Ninja) e un sistema di progressione pieno di attività, basi nemiche e sfide legate al Crogiolo. La recensione entra nel dettaglio su combattimento, build, progressione e requisiti PC
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 12-12-2005, 10:43   #1
[NoS]-roby87
Senior Member
 
L'Avatar di [NoS]-roby87
 
Iscritto dal: Jan 2005
Città: Napoli
Messaggi: 355
Assembler 8086

salve
qualcuno è pratico di assembler 8086??
mi servirebbe una mano.
ecco la traccia dell'esercizio:
dato un valore generico nel registro AL confrontarlo con ogni valore che si trova tra gli indirizzi 0100 e 0110.
se trova un valore uguale visualizza sullo schermo il valore 1 altrimenti visualizza 0.
aiutatemi ci sto lavorando da un paio di giorni e non sono riuscito a risolverlo.
come assemblatore-amulatore ho Emu8086 v3.05.
grazie a tutti anticipatamente. ciao
[NoS]-roby87 è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2005, 12:15   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da [NoS]-roby87
salve
qualcuno è pratico di assembler 8086??
mi servirebbe una mano.
ecco la traccia dell'esercizio:
dato un valore generico nel registro AL confrontarlo con ogni valore che si trova tra gli indirizzi 0100 e 0110.
se trova un valore uguale visualizza sullo schermo il valore 1 altrimenti visualizza 0.
aiutatemi ci sto lavorando da un paio di giorni e non sono riuscito a risolverlo.
come assemblatore-amulatore ho Emu8086 v3.05.
grazie a tutti anticipatamente. ciao
Ciao, premesso che è parecchio tempo che non scrivo 1 riga di assembly per gli x86 (comunque ho tutto un background sui microprocessori e l'assembly in generale ), posso provare ad aiutarti io.
Intanto, per cominciare, dovresti dire se il tuo programma è a 16 o 32 bit. Cioè se il tuo obiettivo è creare un programma per DOS o per Windows (Win32). Poi dovresti spiegare meglio cosa intendi per indirizzi 0100 e 0110. Che razza di indirizzi sono??
Vuoi accedere ad indirizzi assoluti o ad una qualche area di memoria che definisci tu da qualche parte nel tuo programma??

P.S.: Il Emu8086 non lo conosco, io una volta usavo TASM/TLINK della Borland. Ho fatto una veloce ricerca con google ed ho trovato il sito di questo software. Sembra però che lo si possa solo acquistare, cioè non ho trovato un punto da cui poterlo scaricare.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2005, 12:34   #3
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da [NoS]-roby87
salve
qualcuno è pratico di assembler 8086??
io abbastanza, ma dipende anche dalla modalità

Quote:
mi servirebbe una mano.
ecco la traccia dell'esercizio:
dato un valore generico nel registro AL confrontarlo con ogni valore che si trova tra gli indirizzi 0100 e 0110.
se trova un valore uguale visualizza sullo schermo il valore 1 altrimenti visualizza 0.
aiutatemi ci sto lavorando da un paio di giorni e non sono riuscito a risolverlo.
gli indirizzi che hai scritto sono assurdi: a parte che non ho capito se sono in binario o in base 10, in modalità reale (o virtuale 86) fanno riferimento alla IDT... se questo che ho scritto (non testato) può esserti utile:
Codice:
; assumo che quegli indirizzi assurdi fossero in base 10...
; anche perché non ho mai visto un indirizzo espresso in base 2 ^^
mov cx,10  ; 110 - 100
xor dx,dx
mov es,dx
mov dx,100
mov di,dx
repe scasb  ; mi ricorda qualcuno :D
je _print1

_print0:
mov al,'0'
jmp _exit

_print1:
mov al,'1'

_exit:
mov ah,0ah
xor bh,bh
mov cx,1
int 10h
Quote:
come assemblatore-amulatore ho Emu8086 v3.05.
grazie a tutti anticipatamente. ciao
ROTFL!!!
ma perché scusa, tu usi un emulatore x86 su x86??

Ultima modifica di 71104 : 12-12-2005 alle 12:39.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2005, 12:46   #4
[NoS]-roby87
Senior Member
 
L'Avatar di [NoS]-roby87
 
Iscritto dal: Jan 2005
Città: Napoli
Messaggi: 355
allora il prof mi ha detto che quast'area di memoria è esadecimale
e nell'emulatore parte a 0100h.
il problema che non capisco è che non sò le istruzioni di come prendere un valore in questo intervallo di indirizzi e metterli nel registro BL.
capito?
un'altro problema è che quando voglio passare al prossimo indirizzo (dovrei incrementarlo di uno) uso o INC CL (CL registro dove carico i vari indirizzi e non i loro valori) o ADD CL,01h.

se non vi e chiaro ecco il programma che sto abbozzando:

#make_COM#

; COM file is loaded at CS:0100h
ORG 100h

MOV CL,00FFh
sopra: MOV DL,48d
MOV AH,02h
INT 21h
ADD CL,01h
CMP CL,[0111]
JE fine
MOV BL,CL
CMP AL,BL
JNE sopra
MOV DL,49d
MOV AH,02h
INT 21h
CMP CL,[0111]
JNE sopra
fine: HLT


per quanto riguarda l'emulatore datemi i vostri indirizzi MSN e ve lo passo volentieri
ciao
[NoS]-roby87 è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2005, 12:52   #5
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da [NoS]-roby87
allora il prof mi ha detto che quast'area di memoria è esadecimale
e nell'emulatore parte a 0100h.
---___---'''
non sono indirizzi, sono offset... -.-'

Quote:
il problema che non capisco è che non sò le istruzioni di come prendere un valore in questo intervallo di indirizzi e metterli nel registro BL.
capito? un'altro problema è che quando voglio passare al prossimo indirizzo (dovrei incrementarlo di uno) uso o INC CL (CL registro dove carico i vari indirizzi e non i loro valori) o ADD CL,01h.
guardati la documentazione dell'istruzione REPE SCASB (lol )

Quote:
per quanto riguarda l'emulatore datemi i vostri indirizzi MSN e ve lo passo volentieri
scusa... non ho capito una cosa... come mai usi un emulatore che emula la stessa piattaforma su cui lavori?
oppure lavori su mac?
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2005, 12:57   #6
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da 71104
gli indirizzi che hai scritto sono assurdi: a parte che non ho capito se sono in binario o in base 10, in modalità reale (o virtuale 86) fanno riferimento alla IDT...
Dallo 0 davanti io direi che li intendeva in binario ... ma tanto non hanno molto senso lo stesso

Quote:
Originariamente inviato da 71104
ma perché scusa, tu usi un emulatore x86 su x86??
Non conosco 'sto Emu8086, potrebbe essere una specie di simulatore o qualcosa del genere ... dai, non mi dire che in ambito didattico sarebbe una cosa così orribile
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2005, 12:59   #7
[NoS]-roby87
Senior Member
 
L'Avatar di [NoS]-roby87
 
Iscritto dal: Jan 2005
Città: Napoli
Messaggi: 355
Quote:
Originariamente inviato da 71104
---___---'''
non sono indirizzi, sono offset... -.-'
ah ok grazie
Quote:
guardati la documentazione dell'istruzione REPE SCASB (lol )
??? non la conosco; non esiste qualcosa di più semplice??
Quote:
scusa... non ho capito una cosa... come mai usi un emulatore che emula la stessa piattaforma su cui lavori?
oppure lavori su mac?
no.
non emula la piattaforma stessa ma emula il processore 8086.
[NoS]-roby87 è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2005, 13:06   #8
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da andbin
Non conosco 'sto Emu8086, potrebbe essere una specie di simulatore o qualcosa del genere ... dai, non mi dire che in ambito didattico sarebbe una cosa così orribile
ma no che non lo è, è come tentare di mantenere qualcosa a temperatura media mettendola dentro un forno e mettendo il forno in un surgelatore
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2005, 13:06   #9
[NoS]-roby87
Senior Member
 
L'Avatar di [NoS]-roby87
 
Iscritto dal: Jan 2005
Città: Napoli
Messaggi: 355
raga non è che potete dare un occhiata al programma che messo prima???
verificate ce c'è qualche errore tramite il mio emulatore.
non avete un email hotmail???
[NoS]-roby87 è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2005, 13:09   #10
[NoS]-roby87
Senior Member
 
L'Avatar di [NoS]-roby87
 
Iscritto dal: Jan 2005
Città: Napoli
Messaggi: 355
71104 connettiti a hotmail che ti passo l'emulatore
[NoS]-roby87 è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2005, 13:11   #11
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da [NoS]-roby87
??? non la conosco; non esiste qualcosa di più semplice??
no
repe scasb è semplicissima, basta che gli riempi tutti i registri e lei ti fa tutto; può essere che ho sbagliato e che invece che repe scasb devi usare (LOL!! ) repne scasb, comunque è quel tipo di istruzioni là che devi guardare imho.

Quote:
no.
non emula la piattaforma stessa ma emula il processore 8086.
e tu non lavori su un sovrainsieme dell'8086...?

PS: ho visto che mi hai aggiunto alla contact list: scusa se non ti do retta ma devo andare a lezione ^^
ci sentiamo casomai stasera

ciao
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2005, 13:34   #12
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da [NoS]-roby87
allora il prof mi ha detto che quast'area di memoria è esadecimale e nell'emulatore parte a 0100h.
Ah, ok. Pensavo li intendessi in binario! Quelli comunque sono offset. Ricordati sempre che l'acca finale è importante!

Quote:
Originariamente inviato da [NoS]-roby87
il problema che non capisco è che non sò le istruzioni di come prendere un valore in questo intervallo di indirizzi e metterli nel registro BL.
capito?
un'altro problema è che quando voglio passare al prossimo indirizzo (dovrei incrementarlo di uno) uso o INC CL (CL registro dove carico i vari indirizzi e non i loro valori) o ADD CL,01h.
Allora ... il registro CL (di 8 bit) non è assolutamente adatto per memorizzare un indirizzo . Se non sono troppo "arrugginito" e mi ricordo bene, in modalità reale i processori x86 possono usare i registri BX, SI e DI e BP per puntare in memoria.
Quindi potresti fare un qualcosa del tipo:

MOV SI, 0100h
...
MOV BL,[SI]
INC SI

E ricordati che i processori x86 (parlo in modo specifico per la modalità reale), hanno la memoria "segmentata". L'indirizzo fisico viene formato combinando un segmento con un offset!
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2005, 14:49   #13
[NoS]-roby87
Senior Member
 
L'Avatar di [NoS]-roby87
 
Iscritto dal: Jan 2005
Città: Napoli
Messaggi: 355
Quote:
Originariamente inviato da andbin
Ah, ok. Pensavo li intendessi in binario! Quelli comunque sono offset. Ricordati sempre che l'acca finale è importante!

Allora ... il registro CL (di 8 bit) non è assolutamente adatto per memorizzare un indirizzo . Se non sono troppo "arrugginito" e mi ricordo bene, in modalità reale i processori x86 possono usare i registri BX, SI e DI e BP per puntare in memoria.
Quindi potresti fare un qualcosa del tipo:

MOV SI, 0100h
...
MOV BL,[SI]
INC SI

E ricordati che i processori x86 (parlo in modo specifico per la modalità reale), hanno la memoria "segmentata". L'indirizzo fisico viene formato combinando un segmento con un offset!
quindi il mio prog diventerebbe così:

MOV SI,00FFh
sopra: MOV DL,48d
MOV AH,02h
INT 21h
INC SI
CMP SI,0111h
JE fine
MOV BL,[SI]
CMP AL,BL
JNE sopra
MOV DL,49d
MOV AH,02h
INT 21h
CMP SI,0111h
JNE sopra
fine: HLT

l'ho provato
però dovrei apportare delle modifiche:
-all'inizio se vedi bene mi visualizza sicuramente uno 0 poichè è sequanziale la decodifica del prog.
-mi segna anche alla fine un'altro 0.
calcolando tutte le allocazioni di memoria di offset ne risultano 17 (correggimi se sbaglio) quindi mi dovrebbe visualizzare 17 tra zero e uno; e invece me ne visualizza 19.
come lo risolvo???
[NoS]-roby87 è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2005, 14:53   #14
[NoS]-roby87
Senior Member
 
L'Avatar di [NoS]-roby87
 
Iscritto dal: Jan 2005
Città: Napoli
Messaggi: 355
inoltre mi visualizza sempre la stessa sequenza di zero e uno:
0000010000000000000
è normale o dovrebbe cambiare???





stavo pensando poi, ma in questi indirizzi i valori variano da pc a pc?? o sono già predefiniti per tutti dall'emulatore??
[NoS]-roby87 è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2005, 14:56   #15
[NoS]-roby87
Senior Member
 
L'Avatar di [NoS]-roby87
 
Iscritto dal: Jan 2005
Città: Napoli
Messaggi: 355
inoltre (scusami se ti bombardo di domande) quando avvio l'emulkatore e immetto nel registro AL un valore, dopo mi altera tutto poichè viene cambiato durante l'esecuzione del prog.
cosa mi consigli di fare????
ciao
[NoS]-roby87 è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2005, 15:38   #16
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da [NoS]-roby87
l'ho provato
però dovrei apportare delle modifiche:
-all'inizio se vedi bene mi visualizza sicuramente uno 0 poichè è sequanziale la decodifica del prog.
-mi segna anche alla fine un'altro 0.
calcolando tutte le allocazioni di memoria di offset ne risultano 17 (correggimi se sbaglio) quindi mi dovrebbe visualizzare 17 tra zero e uno; e invece me ne visualizza 19.
come lo risolvo???
Il codice mi sembra già meglio rispetto a quello di prima. Mi permetto però di riscriverlo così come lo farei io e poi ti spiego:
Codice:
       MOV SI,0100h
ciclo:
       CMP SI,0111h
       JE  fine
       MOV DL,48
       CMP AL,[SI]
       JNE stampa
       INC DL
stampa:
       MOV AH,02h
       INT 21h
       INC SI
       JMP ciclo
fine:
       HLT
Il nocciolo è il blocco:
MOV DL,48
CMP AL,[SI]
JNE stampa
INC DL

Metto subito DL a 48 ('0') e poi confronto il valore. Quindi se non è uguale vado a stampa e stampo '0' altrimenti incremento DL (49) e stampo '1'.
Molto lineare no?
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2005, 16:04   #17
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da [NoS]-roby87
inoltre mi visualizza sempre la stessa sequenza di zero e uno:
0000010000000000000
è normale o dovrebbe cambiare???
stavo pensando poi, ma in questi indirizzi i valori variano da pc a pc?? o sono già predefiniti per tutti dall'emulatore??
Nel tuo primo codice avevi indicato ORG 100h quindi il codice parte dall'offset 0100h. Se metti SI a 0100h e ammesso che il data segment (DS) sia uguale al code segment (CS) (non so come imposta i segmenti il tuo emulatore, eh!, ma presuppongo che sia così), tu in pratica stai andando a leggere il ... tuo codice, cioè i byte che compongono il tuo programma.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2005, 16:15   #18
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da [NoS]-roby87
inoltre (scusami se ti bombardo di domande) quando avvio l'emulkatore e immetto nel registro AL un valore, dopo mi altera tutto poichè viene cambiato durante l'esecuzione del prog.
cosa mi consigli di fare????
ciao
Già è vero, quando ti ho riscritto il codice non ci ho pensato (l'ho detto che sono un po' arrugginito ) ma in effetti il registro AL viene sicuramente modificato dall'INT 21h.
Quando si invocano questi interrupt bisogna sempre fare un po' di attenzione perché alcuni registri vengono certamente alterati. È il caso del registro AL e/o AH che in genere contengono un valore o codice di errore restituito dall INT chiamato.
Una soluzione sarebbe quella di fare un PUSH AX prima dell'INT 21h e un POP AX dopo. Così ti salvi il registro AX.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2005, 16:30   #19
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da 71104
ma no che non lo è, è come tentare di mantenere qualcosa a temperatura media mettendola dentro un forno e mettendo il forno in un surgelatore
LOL ma che esempio!
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2005, 16:44   #20
[NoS]-roby87
Senior Member
 
L'Avatar di [NoS]-roby87
 
Iscritto dal: Jan 2005
Città: Napoli
Messaggi: 355
Quote:
Originariamente inviato da andbin
Già è vero, quando ti ho riscritto il codice non ci ho pensato (l'ho detto che sono un po' arrugginito ) ma in effetti il registro AL viene sicuramente modificato dall'INT 21h.
Quando si invocano questi interrupt bisogna sempre fare un po' di attenzione perché alcuni registri vengono certamente alterati. È il caso del registro AL e/o AH che in genere contengono un valore o codice di errore restituito dall INT chiamato.
Una soluzione sarebbe quella di fare un PUSH AX prima dell'INT 21h e un POP AX dopo. Così ti salvi il registro AX.
grazie mille per quello che hai fatto.
non sei affatto arrugginito anzi..
cmq ho risolto:
ho visto quale registro non veniva alterato e l'ho sostituito con AL.
l'ho sostituito con BL.
ciao
caso mai qualche altro ingrippo ti chiamo.
[NoS]-roby87 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
MrBeast entra nel fintech: Beast Industr...
Arrivano i nuovi server Bare Metal 2026 ...
Stop alla distribuzione dei driver di st...
Serie TV God of War: scelto anche l'atto...
Riot Games dimezza il team di 2XKO dopo ...
FRITZ! in super offerta su Amazon: ripet...
L'AI doveva farci lavorare meno: e se st...
DREAME X50 Ultra Complete a 899€ su Amaz...
Rimodulazione TIM: aumenti fino a 2,99 e...
Amazon sblocca i prezzi con coupon e sco...
Action cam Insta360 in super offerta su ...
Fallout 76 Sorgenti Brucianti: tanta car...
Scope elettriche super potenti a confron...
Tutti i Google Pixel 10 sono scontati su...
Report Legambiente 2025: Palermo, Milano...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 13:03.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v