Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [Assembler] da bcd ad ascii

    buongiorno,
    avrei un problema con questo codice assembler:
    codice:
    				lea di,risultato
    				mov si,0
    				
    	ciclo2:
    					add di,30h
    					inc di
    					inc si
    					
    					cmp si,8
    					jne ciclo2
    risultato dw 8 dup(?),"$"

    praticamente in risultato ho caricato una serie di zeri e uni che devo metterli in output.
    l'errore che mi dà è che:
    - al posto di 0 mi dà uno spazio
    - al posto di 1 mi dà ☺ (1 in ascii code)

    Io penso che non mi aggiunga il 30h ad ogni elemento del vettore.


    Grazie per la lettura, si accetta qualsiasi consiglio

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    1) perché il buffer è fatto da dword ?

    2) con

    lea di,risultato

    ottieni l'indirizzo del buffer non il suo contenuto, quindi aggiungi 30h all'indirizzo non al contenuto

    3) come visualizzi il carattere?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Originariamente inviato da oregon
    1) perché il buffer è fatto da dword ?
    2) con
    lea di,risultato
    ottieni l'indirizzo del buffer non il suo contenuto, quindi aggiungi 30h all'indirizzo non al contenuto
    3) come visualizzi il carattere?
    1) ho aggiustato il buffer da dword a dbyte
    2) hai ragione, però non trovo una soluzione per aggiungere il 30h ad ogni elemento
    3) per visualizzare tutto il vettore "risultato" uso
    codice:
    				lea dx,risultato
    				mov ah,09h
    				int 21h

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Carica ogni byte del buffer in un registro (ad esempio AL), aggiungi 30h ad AL e scrivilo nuovamente nel buffer.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Originariamente inviato da oregon
    Carica ogni byte del buffer in un registro (ad esempio AL), aggiungi 30h ad AL e scrivilo nuovamente nel buffer.
    ha funzionato:
    codice:
    				lea di,risultato
    				mov si,0
    				
    	ciclo2:
    					;add [di],30h
    					mov cl,[di]
    					add cl,30h
    					mov [di],cl
    					inc di
    					inc si
    					
    					cmp si,8
    					jne ciclo2

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.