per quanto riguarda la prima domanda il codice può essere ottimizzato come per cancellare (tipo il System(cls) di microsoft vc.
di routine così ce ne sono tante......... se vuoi te ne posto qualcuna.
per la seconda, .........
se vuoi fare in modo che ah sia a 1, ovvero 111 che corrisponde a -1, ma potrebbe corrispondere anche a +7, questo però è importante per te cioè, è importante per il programmatore, in quanto per il computer AX=111 corrisponde indifferentemente sia a -1 che a +7, Sta al programmatore in fase di stampa, dopo conversione da binario a stringa, stampare il valore che gli interessa ovvero -1 o +7.
Cosa vuol dire questo?
Se vuoi che a video venga mostrato il valore -1, devi stampare il carattere - e poi visualizzi 1, per accorgerti che corrisponde ad un valore negativo devi controllare il 3 bit che appunto sia negato e valga appunto 1. Se il 3 bit è 1 e consideri in numero in complemento a 1 (ovvero -127 +127), allora satmpi il numero 7.
Comunque sia se addizioni a 8bit cioè AL o AH il registrotrabboccherà per overfloow....... nel tuo esempio avrai non AH=01, ma un overfloow su AL(se il numero è >1)............. quindi è chearo che per avere il numero 111 devi lavorare con registri a 16bit OVVERO AX
ciao amico