Oppure

Loading
16/02/14 13:50
perillitommaso
Ciao a tutti, a scuola sto imparando il linguaggio assembly dell' 8086, in poche parole la traccia dice di leggere il primo carattere, visualizzarlo, poi leggere il secondo carattere, visualizzarlo, trasformarlo in minuscolo e visualizzare il carattere trasformato e in fine poi trasformare il primo carattere inserito in maiuscolo e visualizzarlo.
Ho scritto il programma ma mi esce una cosa strana.. vi posto comunque il codice sorgente così magari potete darmi una mano, grazie molte :)

.Model SMALL 
	.Stack 100h

	.data

inserisci1 db 'Inserisci un carattere MINUSCOLO: ','$'
accapo db 13,10,'$'
carattere1 db 'Il carattere inserito è: ','$'
inserisci2 db 'Inserisci un carattere MAIUSCOLO: ','$'
transform db 'Il carattere inserito trasformato: ','$'
transform2 db 'Il primo carattere inserito trasformato è il seguente: ','$'
	.code

main:
		MOV ax,@data
		MOV ds, ax
		
		;inseriamo "Inserisci un carattere MINUSCOLO: "		
		MOV ah, 9
		MOV dx, offset inserisci1
		int 21h
		
		;leggiamo un carattere da tastiera
		MOV ah,1
		int 21h
		
		;adesso spostiamo il carattere nella parte alta dei dati
		MOV dh, al

		;andiamo accapo
		MOV ah, 9
		MOV dx, offset accapo
		int 21h

		;visualizziamo il carattere inserito
		MOV ah,9
		MOV dx, offset carattere1
		int 21h
		MOV ah,2
		int 21h

		;andiamo accapo
		MOV ah, 9
		MOV dx, offset accapo
		int 21h

		;visualizziamo la frase: Inserisci un carattere MAIUSCOLO
		MOV ah,9
		MOV dx, offset inserisci2
		int 21h
		
		;leggiamo il carattere
		MOV ah,1
		int 21h
		;adesso lo spostiamo nella parte bassa dei dati
		mov dl, al
		
		;andiamo accapo
		mov ah,9
		mov dx, offset accapo
		int 21h

		;Visualizziamo il carattere inserito
		mov ah,2
		int 21h
		
		;trasformiamo il carattere da maiuscolo a minuscolo
		ADD dl,20h
		
		;visualizziamo il carattere trasformato
		mov ah,9
		mov dx, offset transform
		int 21h
		mov ah,2
		int 21h

		;andiamo accapo
		mov ah,9
		mov dx, offset accapo
		int 21h

		;adesso trasformiamo il primo carattere inserito in maiusc.
		SUB dh, 20h
		
		;adesso visualizziamo il carattere trasformato
		mov ah,9
		mov dx, offset transform2
		int 21h
		mov ah,2
		int 21h
	

		MOV ah, 4ch
		int 21h

end main

aaa
16/02/14 14:15
nessuno
Fai attenzione ...

Così

MOV dh, al

salvi il carattere in dh, ma se subito dopo scrivi

MOV dx, offset accapo

distruggi il contenuto di dh e quindi perdi il carattere inserito.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
16/02/14 15:13
perillitommaso
E come faccio a non perdere il carattere inserito? Dove lo salvo il carattere?
aaa
16/02/14 17:33
nessuno
O in una variabile in memoria nella zona .data o nello stack.

Dato che devi utilizzare il carattere più volte, puoi prevedere un'area di memoria in .data

car1 db ?

e poi

;leggiamo un carattere da tastiera
mov ah,1
int 21h
mov car1,al

e poi lo utilizzi, ad esempio in

;visualizziamo il carattere inserito
MOV ah,9
MOV dx, offset carattere1
int 21h
mov dl,car1
MOV ah,2
int 21h
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
24/02/14 15:07
perillitommaso
Grazie :) scusami se l'ho letto adesso...
aaa