PDA

Visualizza la versione completa : Tutorial Assembler 8088


aliko
10-01-2008, 15:34
Salve a tutti!
Volvo chiedere se qualcuno sapeva se in giro in rete si poteva trovare un tutorial valido per assembler 8088?
Ho provato a cercare m a c' solamente per assembler 8086
Se qualcuno mi potrebbe aiutare li sarei molto grato
Alcuni spiegazioni o esempi di codice pi in dettaglio
Grazie a chi mi risponder!
:ciauz:

oregon
10-01-2008, 15:43
Non c'e' molta differenza tra le due CPU a parte il bus dei dati ... perche' solo la 8088?

aliko
10-01-2008, 16:26
perch in questo momento dovrei svolgere un progetto in assembler 8088
e allora visto che secondo me nei libri non si fanno molti esempi di codice e
anziche chiedere a qualcuno di svolgere il mio progetto come lo hanno gia fatto alcuni negli anni passati su alcuni forum, chiedevo semplicemente un aiuto per vedere di andare avanti da solo.
Ma cmq sia se a qualcuno piacerebbe collaborare per me sarebbe molto pi semplice!

Per esempio ora sono nella fase iniziale e il compilatore mi da alcuni errori del tipo:
"alla riga "tot": too many chars." e non capisco cosa significherebbe.
Ed per questo che chiedevo se c'era qualche tutorial in giro tipo quello del java ben spiegato, per semplificarmi la vita, visto che ad arrivarci su alcune cose faccio fatica.

Grazie

oregon
10-01-2008, 16:54
Il mio dubbio era solo sul fatto che ne volevi uno per l'8088 ... ne va bene anche uno per l'8086 ...

Ovviamente non parliamo di farti tutto il programma, pero' questo e' un forum di programmazione e quindi puoi proporre del codice che hai scritto e ci ragioniamo sopra senza problemi ...

Quale assembler utilizzi?

Il messaggio d'errore ti indica proprio qual e' il problema ... mostra la riga in cui te lo da' ...

aliko
10-01-2008, 17:15
Uso assembler 8088.

gli errori sono questi:

1)line 36: too many chars -----------> 3: PUSH 0
2)line 45: too many chars -----------> 4: MOV SP, BP
3)line 116: too many chars ----------> getnum:
4)line 127: too many chars ----------> PUSH numfmt

1) il codice inizia cn l'etichetta 3: e continua cn l'apertura del file
2) il codice inizia con l'etichetta 4: che in caso di errore di apertura del file salta a questa etichetta per stampare un messaggio d'errore
3)qui invece inizia semplicemente sotto a questa etichetta una procedura
4)numfmt sarebbe l'indirizzo della stringa di formattazione

In pratica spingendo un pulsante il programma dovrebbe aprirmi un file e stamparmi una stringa

Cmq forse meglio porre il codice.

pallinopinco
10-01-2008, 18:04
Cmq forse meglio porre il codice.


S, molto meglio postarlo... :)

Dovresti inoltre indicare il sito dal quale hai scaricato l'assembler, la risposta "assembler 8088" non fornisce abbastanza informazioni.

aliko
10-01-2008, 19:27
il sito :
ftp://ftp.cs.vu.nl/pub/evert/

ecco il codice:

#include "..\\syscalnr.h" ! 1
bufsiz= 512 ! 2
.SECT .TEXT ! 3
jumpstrt: ! 4
PUSH strt ! 5
MOV BP,SP ! 6
PUSH _PRINTF ! 7
SYS ! 8
PUSH _GETCHAR ! 9
1: SYS ! 10
CMPB AL,'0' ! 11
JE 3f ! 12
JL 1b ! 13
JG 1b ! 14
3: PUSH 0 ! 15
PUSH "x.txt" ! 16
PUSH _OPEN ! 17
SYS ! 18
CMP AX,0 ! 19
JL 4f ! 20
MOV (fildes),AX ! 21
MOV BX,0 ! 22
MOV SI,linhed+2 ! 23
4: MOV SP,BP ! 24
PUSH "x.txt" ! 25
PUSH errmess ! 26
PUSH _PRINTF ! 27
SYS ! 28
PUSH _EXIT ! 29
PUSH _EXIT ! 30
SYS ! 31
1: CALL fillbuf ! 32
CMP CX,0 ! 33
JLE 5f ! 34
2: MOVB AL,'\n' ! 35
REPNE SCASB ! 36
JNE 1b ! 37
INC (count) ! 38
MOV AX,BX ! 39
SUB AX,CX ! 40
XCHG SI,DI ! 41
STOS ! 42
XCHG SI,DI ! 43
CMP CX,0 ! 44
JNE 2b ! 45
JMP 1b ! 46
5: CALL getnum ! 47
CMP AX,0 ! 48
JLE 8f ! 49
MOV BX,(curlin) ! 50
CMP BX,0 ! 51
JLE 7f ! 52
CMP BX,(count) ! 53
JG 7f ! 54
SHL BX,1 ! 55
MOV CX,linhed(BX) ! 56
MOV AX,linhed-2(BX) ! 57
PUSH 0 ! 58
PUSH 0 ! 59
PUSH AX ! 60
PUSH (fildes) ! 61
PUSH _LSEEK ! 62
SYS ! 63
SUB CX,AX ! 64
PUSH CX ! 65
PUSH buf ! 66
PUSH (fildes) ! 67
PUSH _READ ! 68
SYS ! 69
ADD SP,4 ! 70
PUSH 1 ! 71
PUSH _WRITE ! 72
SYS ! 73
ADD SP,14 ! 74
JMP 5b ! 75
8: PUSH scanerr ! 76
PUSH _PRINTF ! 77
SYS ! 78
ADD SP,4 ! 79
JMP 5b ! 80
7: PUSH 0 ! 81
PUSH _EXIT ! 82
SYS ! 83
fillbuf: ! 84
PUSH bufsiz ! 85
PUSH buf ! 86
PUSH (fildes) ! 87
PUSH _READ ! 88
SYS ! 89
ADD SP,8 ! 90
MOV CX,AX ! 91
ADD BX,CX ! 92
MOV DI,buf ! 93
RET ! 94
getnum: ! 95
MOV DI,"x.txt" ! 96
PUSH _GETCHAR ! 97
1: SYS ! 98
CMPB AL,'\n' ! 99
JL 4b ! 100
JE 1f ! 101
STOSB !102
JMP 1b !103
1: MOVB (DI),'\0' !104
PUSH curlin !105
PUSH numfmt !106
PUSH "x.txt" !107
PUSH _SSCANF !108
SYS !109
ADD SP,10 !110
RET !111
.SECT .DATA ! 112
strt: .ASCIZ "Premi il tasto (x).\n" !113
errmess: .ASCIZ "%s -1\n" !114
numfmt: .ASCIZ "%d" !115
scanerr: .ASCIZ "Digitare un numero.\n" !116
.ALIGN 2 !117
.SECT .BSS !118
fildes: .SPACE 2 !119
linhed: .SPACE 8192 !120
curlin: .SPACE 4 !121
buf: .SPACE bufsiz+2 !122
count: .SPACE 2 !123

gli errori si vedranno nel assemblaggio..e bisogna sootrarre 21 righe visto che c' un file delle chiamate di sistema incluse
Grazie.

aliko
11-01-2008, 18:18
un errore lho trovato!

non possibile invocare con la chimata OPEN mettendo il nome del file che mi serve
per aprire

dovrei memorizzare il nome del file come una stringa, e questo ho fatto
pero poi quando faccio partire il codice visto k non mi da alcun errore
mi esce dalla procedura quando va a confrontare il valore di AX
forse perche non ho allocato uno spazio nel buffer nella sezione BSS
per la lettura del file
per ora non saprei come fare

aliko
16-01-2008, 11:00
va bene..
stranamente in tutti i forum dei programmatori quando uno studente mette
un post e chiede di aiutarli in alcune cose del suo progetto, NON GLI RISPONDE NESSUNO
peccato..
forse era meglio se ponevo la domanda in modo diverso..sicuramente..
nn so quanto sono appasionati i programmatori di questo forum e non ho guardato altri post
su altre varie problematiche dove sicuramente qualcuno c' stato a collaborare, e sicuramente
nessuno abbligato a rispondere e non c un limite di tempo, ma cmq sia
grazie lo stesso

Stoicenko
16-01-2008, 14:48
B considera che non sono cos tanti gli utenti che conoscono l'assembler.. piuttosto che dare risposte inutili...

Loading