|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2005
Città: Roma sud
Messaggi: 590
|
[assembler]Ciclo che si ripete fino alla pressione di un tasto
Ciao a tutti dovrei creare un ciclo in assembler che si ripete infinite volte finche non viene premuto un tasto. Cioè il ciclo non si deve fermare ad aspettare un tasto...
In C sarebbe così: while(!kbhit()){ //Instruzioni da fare nel ciclo } Avete qualche suggerimento qualche link utile? Perchè non so da dove cominciare... grazie anticipatamente
__________________
-Mac Book intel core duo 1,83GHz, 1,25 Gb RAM -Amd athlon 64 dual core 4400+, 2 GB RAM, Asus a8n-sli Deluxe, totale 500 GB di HARD DISK(4 hdd) |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
In tal caso puoi usare il servizio del BIOS Int 16h/AH=01h. Nota che se c'è l'indicazione di tasto premuto, dovresti anche rimuovere il tasto dal buffer con il servizio Int 16h/AH=00h.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Aug 2005
Città: Roma sud
Messaggi: 590
|
Si parlo di assembly x86... grazie del suggerimento ora provo
__________________
-Mac Book intel core duo 1,83GHz, 1,25 Gb RAM -Amd athlon 64 dual core 4400+, 2 GB RAM, Asus a8n-sli Deluxe, totale 500 GB di HARD DISK(4 hdd) |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Aug 2005
Città: Roma sud
Messaggi: 590
|
Grazie mille ho provato come hai detto tu e funziona solo che ora non ho capito come posso modificarlo in modo che ripeta il ciclo finche il carattere è diverso da invio... e esca appena premo invio....
Codice:
.MODEL SMALL .STACK 100 .DATA vett DB 99 DUP(?) ora DB 0 minuti DB 0 secondi DB 0 n DB ? .CODE .STARTUP ;Pulisco schermo MOV CX,020H PULISCI: ;A capo MOV DL,0DH MOV AH,02H INT 21H MOV DL,0AH MOV AH,02H INT 21H ;Fine a capo LOOP PULISCI CICLOPRI: ;Condizioni ciclo MOV AH,01H INT 16H; ;SE ZF !=0 esci dal ciclo JNZ FINECICLO ;Leggo l'ora i minuti e i secondi e li salvo nelle rispettice variabili MOV AH,2CH INT 21H ;CH=ORE CL=MIN DH=SEC MOV ora,CH MOV minuti,CL MOV secondi,DH ;Riposiziono il cursore all'inizio MOV DL,00H MOV DH,00H MOV BH,00H MOV AH,02H INT 10H ;Stampa numeri a 2 cifre (stampa l'ORA) MOV SI,0 CICLO: MOV AL,ora MOV AH,0 MOV BL,10 DIV BL MOV ora,AL MOV vett[SI],AH INC SI CMP SI,2 JE PROSEGUI JMP CICLO PROSEGUI: MOV CX,SI STAMPA: DEC SI MOV DL,vett[SI] ADD DL,30H MOV AH,02H INT 21H LOOP STAMPA MOV DL,':' MOV AH,02H INT 21H ;Ho dovuto usare questo perchè il salto diretto all'etichetta FINECICLOP dava un errore perchè era troppo distante JMP AVANT FINECICLO: JMP FINECICLOP AVANT: ;Stampa numeri a due cifre (Stampa i MINUTI) MOV SI,0 CICLO2: MOV AL,minuti MOV AH,0 MOV BL,10 DIV BL MOV minuti,AL MOV vett[SI],AH INC SI CMP SI,2 JE PROSEGUI2 JMP CICLO2 PROSEGUI2: MOV CX,SI STAMPA2: DEC SI MOV DL,vett[SI] ADD DL,30H MOV AH,02H INT 21H LOOP STAMPA2 MOV DL,':' MOV AH,02H INT 21H ;Stampa numeri a due cifre (Stampa i secondi SECONDI) MOV SI,0 CICLO3: MOV AL,secondi MOV AH,0 MOV BL,10 DIV BL MOV secondi,AL MOV vett[SI],AH INC SI CMP SI,2 JE PROSEGUI3 JMP CICLO3 PROSEGUI3: MOV CX,SI STAMPA3: DEC SI MOV DL,vett[SI] ADD DL,30H MOV AH,02H INT 21H LOOP STAMPA3 JMP CICLOPRI FINECICLOP: .EXIT END
__________________
-Mac Book intel core duo 1,83GHz, 1,25 Gb RAM -Amd athlon 64 dual core 4400+, 2 GB RAM, Asus a8n-sli Deluxe, totale 500 GB di HARD DISK(4 hdd) Ultima modifica di frizzo28 : 29-10-2006 alle 15:46. |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Codice:
CICLO: MOV AH,01H INT 16H JZ CONTINUA ; Nessun tasto, continua MOV AH,00H INT 16H CMP AL,13 ; Premuto INVIO? JE FINE_CICLO CONTINUA: ; .... codice da eseguire nel ciclo .... JMP CICLO FINE_CICLO:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Aug 2005
Città: Roma sud
Messaggi: 590
|
Perfetto funziona alla perfezione era proprio quello che cercavo grazie mille...
__________________
-Mac Book intel core duo 1,83GHz, 1,25 Gb RAM -Amd athlon 64 dual core 4400+, 2 GB RAM, Asus a8n-sli Deluxe, totale 500 GB di HARD DISK(4 hdd) |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:10.



















