Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
Altri Linguaggi - Maiuscolo e Minuscolo in linguaggio Assembly x86?
Forum - Altri Linguaggi - Maiuscolo e Minuscolo in linguaggio Assembly x86?

Avatar
perillitommaso (Normal User)
Pro


Messaggi: 186
Iscritto: 28/01/2014

Segnala al moderatore
Postato alle 14:50
Domenica, 16/02/2014
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 :)
Codice sorgente - presumibilmente Altri Linguaggi

  1. .Model SMALL
  2.         .Stack 100h
  3.  
  4.         .data
  5.  
  6. inserisci1 db 'Inserisci un carattere MINUSCOLO: ','$'
  7. accapo db 13,10,'$'
  8. carattere1 db 'Il carattere inserito è: ','$'
  9. inserisci2 db 'Inserisci un carattere MAIUSCOLO: ','$'
  10. transform db 'Il carattere inserito trasformato: ','$'
  11. transform2 db 'Il primo carattere inserito trasformato è il seguente: ','$'
  12.         .code
  13.  
  14. main:
  15.                 MOV ax,@data
  16.                 MOV ds, ax
  17.                
  18.                 ;inseriamo "Inserisci un carattere MINUSCOLO: "        
  19.                 MOV ah, 9
  20.                 MOV dx, offset inserisci1
  21.                 int 21h
  22.                
  23.                 ;leggiamo un carattere da tastiera
  24.                 MOV ah,1
  25.                 int 21h
  26.                
  27.                 ;adesso spostiamo il carattere nella parte alta dei dati
  28.                 MOV dh, al
  29.  
  30.                 ;andiamo accapo
  31.                 MOV ah, 9
  32.                 MOV dx, offset accapo
  33.                 int 21h
  34.  
  35.                 ;visualizziamo il carattere inserito
  36.                 MOV ah,9
  37.                 MOV dx, offset carattere1
  38.                 int 21h
  39.                 MOV ah,2
  40.                 int 21h
  41.  
  42.                 ;andiamo accapo
  43.                 MOV ah, 9
  44.                 MOV dx, offset accapo
  45.                 int 21h
  46.  
  47.                 ;visualizziamo la frase: Inserisci un carattere MAIUSCOLO
  48.                 MOV ah,9
  49.                 MOV dx, offset inserisci2
  50.                 int 21h
  51.                
  52.                 ;leggiamo il carattere
  53.                 MOV ah,1
  54.                 int 21h
  55.                 ;adesso lo spostiamo nella parte bassa dei dati
  56.                 mov dl, al
  57.                
  58.                 ;andiamo accapo
  59.                 mov ah,9
  60.                 mov dx, offset accapo
  61.                 int 21h
  62.  
  63.                 ;Visualizziamo il carattere inserito
  64.                 mov ah,2
  65.                 int 21h
  66.                
  67.                 ;trasformiamo il carattere da maiuscolo a minuscolo
  68.                 ADD dl,20h
  69.                
  70.                 ;visualizziamo il carattere trasformato
  71.                 mov ah,9
  72.                 mov dx, offset transform
  73.                 int 21h
  74.                 mov ah,2
  75.                 int 21h
  76.  
  77.                 ;andiamo accapo
  78.                 mov ah,9
  79.                 mov dx, offset accapo
  80.                 int 21h
  81.  
  82.                 ;adesso trasformiamo il primo carattere inserito in maiusc.
  83.                 SUB dh, 20h
  84.                
  85.                 ;adesso visualizziamo il carattere trasformato
  86.                 mov ah,9
  87.                 mov dx, offset transform2
  88.                 int 21h
  89.                 mov ah,2
  90.                 int 21h
  91.        
  92.  
  93.                 MOV ah, 4ch
  94.                 int 21h
  95.  
  96. end main



perillitommaso ha allegato un file: Senza titolo-1.png (28640 bytes)
Clicca qui per guardare l'immagine
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6186
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 15:15
Domenica, 16/02/2014
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à.
PM Quote
Avatar
perillitommaso (Normal User)
Pro


Messaggi: 186
Iscritto: 28/01/2014

Segnala al moderatore
Postato alle 16:13
Domenica, 16/02/2014
E come faccio a non perdere il carattere inserito? Dove lo salvo il carattere?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6186
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 18:33
Domenica, 16/02/2014
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à.
PM Quote
Avatar
perillitommaso (Normal User)
Pro


Messaggi: 186
Iscritto: 28/01/2014

Segnala al moderatore
Postato alle 16:07
Lunedì, 24/02/2014
Grazie :) scusami se l'ho letto adesso...

PM Quote