Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    286

    Assembler - Funzione Timer ?

    risolto il problema dell'Entry Point ora mi trovo ad affrontare un nuovo scoglio...

    Con questo codice riesco ad accendere un led collegato al Pin 2 - GND della porta parallela:

    MOV DX,0378H
    MOV AL,1
    OUT DX,AL

    ...e così lo spengo:

    MOV DX,0378H
    MOV AL,0
    OUT DX,AL

    Ora, tra i due codici vorrei iserire una funzione Timer per tenerlo acceso un tempo determinato. Ho rivoltato i miei manuali ma non sono riuscito a trovare qualcosa del genere, o più probabilmente sono io che non riesco a trovare una soluzione che potrei avere sotto il naso.

    Qualche suggerimento?

    Paolo

  2. #2
    Utente di HTML.it L'avatar di cso
    Registrato dal
    Aug 2004
    Messaggi
    2,050
    Le cose sono due:

    1- Usi le PUSH e le POP
    2- Usi il Timer del sistema

    Se usi le push e le pop riuscirai a produrre un ritardo che andrà bene solo alla macchina in cui stai provando il programma infatti, se lo esegui su un 286 vedrai che il ritardo sarà molto più grande che in un pentium 4.

    Se usi il timer del sistema il tuo ritardo sarà uguale sia su un 286 che su un pentium 4.

    PUSH POP:
    codice:
    Delay:     MOV  CX,000FFh      ; cambia questo valore
    Ciclo1:    PUSH CX             
               MOV  CX,0FFFFh      ; e a limite questo per
                                   ; variare la durata del
                                   ; del ritardo
    Ciclo2:    LOOP Ciclo2         
               POP  CX             
               LOOP Ciclo1         
               RET
    TIMER DEL SISTEMA:
    http://www.giobe2000.it/Giobe/Giobe.zip

    Scaricando questa libreria potrai usare il timer del sistema.
    Se devi fare un programma casereccio volendo puoi anche copiare solo il pezzo di codice che ti interessa senò devi chiedere a Giorgio Ober (l'admin del sito Giobe2000) che tra l'altro è iscritto anche a questo forum.
    http://forum.html.it/forum/member.ph...o&userid=24084

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    286
    Grazie cso per i preziosi suggerimenti, li testerò al più presto e li aggiungerò alle mie nuove aquisizioni.

    Nel frattempo avevo trovato un metodo che sembra funzionare:

    MOV CX, valore
    MOV AH, 86h
    INT 15h

    Dove "valore" è una variabile temporale, ma non ho ancora capito se attinge al clock del processore o al timer di sistema.

    P.S. In queste giornate buie e fredde, anziché fare le parole crociate, ho incominciato a studiare l'assembler. Le pagine e i manuali di Giobe2000 sono una risorsa inegualiabile che ho scoperto solamente pochi giorni fa e ancora ho da studiarli a fondo. Non sapevo che navigasse anche su questo forum.

    Paolo

  4. #4
    Utente di HTML.it L'avatar di cso
    Registrato dal
    Aug 2004
    Messaggi
    2,050
    Essendo una Interrupt attinge al BIOS e naturalmete ce ne sono di tanti tipi.

    Qui dice che dipende dalla versione del bios (come volevasi dimostrare)

    P.S. In queste giornate buie e fredde, anziché fare le parole crociate, ho incominciato a studiare l'assembler. Le pagine e i manuali di Giobe2000 sono una risorsa inegualiabile che ho scoperto solamente pochi giorni fa e ancora ho da studiarli a fondo. Non sapevo che navigasse anche su questo forum.
    Una volta ogni tanto ci viene ma non sperare di trovarlo spesso

    Quell'uomo è diventato un'idolo per me (anche meglio di superman )

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.