View Full Version : [Assembler] 2 Richieste particolari
dengel_1
06-03-2007, 19:21
Ciao sapete dirmi come
1) pulire lo schermo utlizzando una macro
2) stampare una scritta colorata(diversa dal bianco quindi)..ciao
Innanzitutto immagino che tu stia parlando di assembly a 16 bit per DOS.
1) pulire lo schermo utlizzando una macroPer pulire lo schermo si può usare il servizio AH=06h del INT 10h, vedi <qui> (http://www.ctyme.com/intr/rb-0096.htm).
Naturalmente puoi creare una macro ma forse sarebbe meglio realizzare una piccola subroutine da richiamare con una semplice CALL.
Come definire una macro dipende anche dall'assemblatore, quindi specifica quale usi.
2) stampare una scritta colorata(diversa dal bianco quindi)..ciaoAnche qui INT 10h, servizio AH=09h, vedi <qui> (http://www.ctyme.com/intr/rb-0099.htm).
dengel_1
07-03-2007, 12:33
Quindi
CLS MACRO
mov ah,06h
mov al,00h
mov dh , attribute used to write blank lines at bottom of window(??)Ovvero?
mov dh,CL,0,0
mov dh,dL,0,24
ENDM
e poi per i colori
mov AH, 09h
mov AL ,'Ciao'
mov BH,00h
mov BL , attribute (text mode) or color (graphics mode)
if bit 7 set in <256-color graphics mode, character is XOR'ed
onto screen ?? cosa significa?
mov cx,1
CLS MACRO
mov ah,06h
mov al,00h
mov dh , attribute used to write blank lines at bottom of window(??)Ovvero?
mov dh,CL,0,0
mov dh,dL,0,24
ENDMNo, si potrebbe fare meglio così:
CLS MACRO color
MOV AX,0600H
MOV BH,color
MOV CX,0
MOV DX,184FH ; DH=24 (18H) / DL=79 (4FH)
INT 10H
ENDMDa richiamare ad esempio con:
CLS 2FH
Il colore in BH è nel formato come descritto <qui> (http://www.ctyme.com/intr/rb-0098.htm) (al fondo).
mov AH, 09h
mov AL ,'Ciao'
mov BH,00h
mov BL , attribute (text mode) or color (graphics mode)
if bit 7 set in <256-color graphics mode, character is XOR'ed
onto screen ?? cosa significa?
mov cx,1No, questo è ancora più confuso ...
Innanzitutto mov AL ,'Ciao' non ha senso. Poi con il servizio 09h/INT 10h, puoi solamente stampare 1 unico carattere eventualmente ripetuto più volte in base a quanto specificato in CX. Inoltre il servizio 09h non fa avanzare il cursore.
Se ti interessa stampare una stringa con un colore, allora dovresti scrivere tu una piccola subroutine apposita e tenere conto di tutte queste cose (come far avanzare il cursore).
repne scasb
07-03-2007, 21:12
Quanto detto da andbin e' corretto, aggiungo solo che se vuoi scrivere una stringa intera e non un carattere alla volta con tanto di attributo colore, puoi utilizzare l'INT 10h Func. 13h.
http://www.ctyme.com/intr/rb-0210.htm
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.