|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
[Assembly-DOS] Pulire lo schermo e scrivere una frase
Ciao,
Ho un problema con un programma in Assembly-DOS che ho scritto di prova . In pratica quello che deve fare sto programma cazzutissimo si può riassumere in 3 parti : 1) Pulisce lo schermo completamente 2) Sposta il cursore di scrittura a metà schermo 3) Scrive un altrettanto cazzutissima frase Il codice sorgente per NASM è qua : Codice:
; Source Name: PROVA.ASM ; Executable Name: PROVA.COM [BITS 16] ; Set 16 bit code generation [ORG 0100H] ; Set the start of the code at address 0100H [COM FILE] [SECTION .text] ; Opening SECTION .text START: ; START Label call Cleaning mov dl, 25 ; Positioning cursor on 39 = X Coordinate mov dh, 11 ; Positioning cursor on 11 = Y Coordinate call Positioning ; Calling "Positioning" procedure mov dx, message ; Loading in DX the address of "message" call Write ; Calling the "Write" procedure call Closing ; Calling the "Closing" procedure Write: mov ah, 9 ; Loading DOS service code into AH [9 = Print on the screen] int 21H ; Software Interrupt [Calling DOS Dispatcher] ret ; Returning from Procedure Cleaning: mov cl, 0 ; Upper-left corner X Coordinate mov ch, 0 ; Upper-left corner Y Coordinate mov dl, 79 ; Bottom-right corner X Coordinate mov dh, 24 ; Bottom-right corner Y Coordinate mov al, 0 ; Scrolling 0 lines [Clean the screen] mov ah, 6 ; Put BIOS call code 6 in AH int 10H ; Calling VIDEO BIOS Service ret ; Returning from Procedure Positioning: mov ah, 2 ; Loading VIDEO BIOS Service code into AH [2 = Cursor Positioning] mov bh, 0 ; Stay in display page 0 int 10H ; Calling VIDEO BIOS Service ret ; Returning from Procedure Closing: mov ax, 04C00H ; Loading DOS Service code in AX Register [04C00 = exit from execution] int 21H ; Calling DOS Service ret ; Returning from Procedure [SECTION .data] message db "Frase sostituita :)" , 13, 10, "$" Comunque il problema è questo : In pratica lo schermo si pulisce dopo aver eseguito la procedura "Cleaning" che pulisce lo schermo usando la chiamata al Video BIOS "6" , lo schermo diventa completamente nero . Successivamente fa l'azione di spostare il cursore a centro schermo e di scrivere la frase , solo che.... la frase non si vede!! Lo schermo rimane totalmente nero e non da segni di vita , neanche il prompt del DOS dopo che ha finito di eseguire il programma . Posso scrivere quello che voglio , ma lo schermo rimane nero (però in sistema è attivo , infatti se ad esempio do il comando "DIR" non si vede nulla a schermo ma l'HD lavora ) e l'unico modo per recuperarlo è usare il comando "CLS" . Perchè fa sta cosa??? Come faccio a pulire lo schermo senza che me lo blocchi?? Grazie a tutti Ciao
__________________
GPU Compiler Engineer Ultima modifica di AnonimoVeneziano : 25-06-2004 alle 16:50. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Aug 2001
Città: Milano
Messaggi: 402
|
Codice:
Cleaning: mov cl, 0 ; Upper-left corner X Coordinate mov ch, 0 ; Upper-left corner Y Coordinate mov dl, 79 ; Bottom-right corner X Coordinate mov dh, 24 ; Bottom-right corner Y Coordinate mov bh, 7 ; Attribute mov al, 0 ; Scrolling 0 lines [Clean the screen] mov ah, 6 ; Put BIOS call code 6 in AH int 10H ; Calling VIDEO BIOS Service ret ; Returning from Procedure
__________________
Phenom 2 555 X2@X4@3,6Ghz 1.33v Asus M4A785TD-V EVO 4GB Team Group Elite 1333Mhz AC Freezer Xtreme Corsair 450VX Samsung SyncMaster T220 Hd Seagate 500x2(Raid 0) Barton 2500+@3200+ vcore 1.550 (liquid cooled@+9° T.A.) Asus A7N8X-E Dlx 1Gb Ram Dual DDR Hd Maxtor SATA 160x2(Raid 0) GeXCube 9600XT Eizo 19P Le belle cose hanno un inizio e una fine...tutto il resto è la normalità |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
Quote:
Attribute?? Non l'avevo trovato da nessuna parte , cosa fa?? (Mo provo) Grazie Ciao
__________________
GPU Compiler Engineer |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
Funziona
Sei un mito , grazie
__________________
GPU Compiler Engineer |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Aug 2001
Città: Milano
Messaggi: 402
|
Semplicemente imposta il colore del testo e dello sfondo...prima scrivevi nero su nero....ecco xke non vedevi niente.
Se non ricordo male i 4 bits + significativi sono il colore del testo, dal 5° al 7° bit lo sfondo e il bit finale dovrebbe essere il blink...ma non ne sono sicuro xke è una vita ke non vedo + ste cose...al max prova
__________________
Phenom 2 555 X2@X4@3,6Ghz 1.33v Asus M4A785TD-V EVO 4GB Team Group Elite 1333Mhz AC Freezer Xtreme Corsair 450VX Samsung SyncMaster T220 Hd Seagate 500x2(Raid 0) Barton 2500+@3200+ vcore 1.550 (liquid cooled@+9° T.A.) Asus A7N8X-E Dlx 1Gb Ram Dual DDR Hd Maxtor SATA 160x2(Raid 0) GeXCube 9600XT Eizo 19P Le belle cose hanno un inizio e una fine...tutto il resto è la normalità |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
LoL , detto così sembra facile
Sai mica se c'è una tabella con tutti sti attributi? Mi piacerebbe provare a fare lo schermo di un colore diverso Ciao
__________________
GPU Compiler Engineer |
|
|
|
|
|
#7 |
|
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Ultima modifica di repne scasb : 03-02-2005 alle 16:57. |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
|
__________________
Gnu/Linux User
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
Quote:
Togo , grazie Ciao
__________________
GPU Compiler Engineer |
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
__________________
GPU Compiler Engineer |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
|
giusto per sapere.........come hai poi risolto?
__________________
Gnu/Linux User
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
Ho risolto impostando la serie di attributi giusti per lo schermo ^^
Prima mettevo "00" che era come "Nero su Nero" , adesso metto diversi colori a seconda di quelli che voglio , come indicato anche nella tabella nel link che mi hai postato Ciao
__________________
GPU Compiler Engineer |
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
|
Quote:
Ma sul libro che mi hai "passato" c'è sta roba?? E il link che ti ho dato era utile?
__________________
Gnu/Linux User
|
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
Evoluto il code ... diciamo che l'ho modificato , c'è poco da evolvere
Si, sta roba c'è sul libro Si era utile, grazie Ciao
__________________
GPU Compiler Engineer |
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
|
Quote:
__________________
Gnu/Linux User
|
|
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
Quote:
Ehm Ma quando sono troppo poche..... Si, comunque l'ho ottimizzato e adesso usa metà delle istruzioni per fare la stessa cosa Ciao
__________________
GPU Compiler Engineer |
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
|
I want see the program!
__________________
Gnu/Linux User
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
Ce l'ho sul 286 , quando ho tempo lo posto :P
Ciao
__________________
GPU Compiler Engineer |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:58.


















