Newsgroup: it.comp.programmare
Titolo: AIUTO URGENTE INTERRUZIONI ASSEMBLY

Ho un problema urgente per un compito in classe e devo imparare come si
fanno le interruzioni e come far rimanere residente in memoria un programma.
Per imparare qualcosa mi sono fatto dare dal mio prof. un programma in cui
però non riesco a capire alcuna cose.
Questo è il programma:
;Programma per la stampa continuativa dell'ora.
codice segrnent para public 'code'
       assume cs:codice,ds:dati,ss:pila
intmio proc near
            sti
            pushf
            push ax
            push cx
            push di
            push si
            push ds
            push es
            mov ax,dati
            mov ds,ax
            inc ds:count
            cmp count,18
            je  calcolo
            jmp fine
calcolo:    mov count,00h
            inc sec_l
            cmp sec_l,'9'+1
            jne stampa
            mov sec_l,'0'
            inc sec_h
            cmp sec_h,'6'
            jne stampa
            mov sec_h,'0'
minuti:     inc min_l
            cmp min_l,'9'+1
            jne stampa
            mov min_l,'0'
            inc min_h
            cmp min_h,'6'
            jne stampa
            mov min_h,'0'
ore:        inc ora_l
            cmp ora_l,'9'+1
            jne m_notte
            mov ora_l,'0'
            inc ora_h
            jmp stampa
m_notte:    cmp ora_l,'4'
            jne stampa
            cmp ora_h,'2'
            jne stampa
            mov ora_l,'0'
            mov ora_h,'0'
            mov cx,20
            mov ax,0b800h
            mov es,ax
            mov si,offset xxx
            mov di,0000
            rep movsb
fine:       pop es
            pop ds
            pop si
            pop di
            pop cx
            pop ax
            popf
            iret
intmio endp
codice ends
dati segment para public 'data'
     count db 0
     xxx db ' ',4bh
     ora_h db '0',4bh
     ora_l db '0',4bh
     xxy db ':',4bh
     min_h db '0',4bh
     min_l db '0',4bh
     xxz db ':',4bh
     sec_h db '0',4bh
     sec_h db '0',4bh
     xxw db ' ',4bh
dati ends
pila segment para stack 'rstack'
     db 80 dup(?)
pila ends
trans_code segment pare public 'tcode'
           assume: cs:trans_code
           install proc far
             init:      mov ax,seg codice
                        mov ds,ax
                        mov ax,251ch
                        lea dx,intmio
                        int 21h
                        mov dx,trans_code
                        int 27h
           endp install
trans_code ends
end init
e quello che non riesco a capire sono le seguenti righe di codice:
pushf                      Cos'è ?
inc ds:count            Perchè ds:count ?
cmp sec_l,'9'+1       Perchè '9'+1 ?
mov ax,0b800h       Perchè 0b800h ?
mov si,offset xxx     Cos'è offset xxx (xxx è una variabile)?
xxx db ' ',4bh           Perchè c'è quel ,4bh ?
mov ax,251ch         Perchè 251ch ?
codice segment para public 'code'        Cos'è para e 'code' ?
dati segment para public 'data'              Stessa cosa
pila segment para stack 'rstack'             Idem
trans_code segment pare public 'tcode'    Ancora una volta
Grazie mille
Ciao Mauro

 trans_code segment pare public 'tcode'    Ancora una volta
boh, a occhio penso che sia l'entry point
ciao

".signature": bad command or file name
Potresti spiegarmi cos'è l' AAM e come avresti letto l'ora?
Grazie


Che cos'è un TSR???

 wrote in message
8gbnvs$i6b$1...@lacerta.tiscalinet.it...


Guardando meglio il programma e le vostre spiegazioni, mi sono accorto di
avere ancora 4 dubbi:
1- Perchè il programma usa due segmenti di codice
2- Come funziona la stampa
3- Come funzione l'istruzione MOVSB
4- Che cos'è l'istruzione MOV AX,SEG CODICE
Grazie


Scusa, sapevo che era un programma residente in memoria, ma non sapevo che
si chiamava TSR

mov es,ax
non è quello il problema ma perchè dopo aver messo il segmento di codice in
Ax, lo mette nel segmento dati
                        mov ax,seg codice
                        mov ds,ax
e poi perchè c'è scritto 'seg codice' invece che solamente 'codice' ?