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

    [6502, commodore 64, apple ][ ] Numeri negativi & endianness

    Salve a tutti,
    spero di poter risolvere il mio dubbio appellandomi a voi:dhò:.
    Studiando il processore 6502 mi sono accorto che:
    codice:
    CLC
    LDA #$8A
    BPL END
    ADC #$01
    END:
    In questo caso il numero viene visto come negativo (complemento a due).
    Invece nel seguente caso:
    codice:
    CLC
    LDA #$FF
    ADC #$01
    STA $2401
    LDA #$00
    ADC #$00
    corrisponde a sommare 1 al valore 255, e quindi il bit di carry viene sommato ad 1.

    why? mi aiutate a correggere il mio bug mentale? :mame:

    punto 2:
    Nel caso in cui dovessi immagazzinare un valore in due celle di memoria (es. somma a 16 bit) e avessi gli indirizzi $5463 e $5464 (numeri a caso) la parte più significativa va in $5463 o mi sbaglio?

    Grazie in anticipo, anche se capisco che l'argomento è un po' vecchiotto :old:

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Volendo, anche FF è in c2 e vale -1 che sommato ad 1 fa 0. In ogni caso devi sempre partire stabilendo il numero di bit del valore da gestire.


    Il valore più significativo è nell'indirizzo più alto, nel formato L/H


    P.S. Per curiosità, come mai stidi la 6502?
    Ultima modifica di oregon; 30-08-2016 a 00:51
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Quote Originariamente inviata da oregon Visualizza il messaggio
    In ogni caso devi sempre partire stabilendo il numero di bit del valore da gestire.

    Il valore più significativo è nell'indirizzo più alto, nel formato L/H


    P.S. Per curiosità, come mai stidi la 6502?
    Ti ringrazio oregon, potresti farmi anche degli esempi? (ovviamente se ti va)
    P.S.: esame

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    E' una questione di modalità di rappresentazione del valore e di come questo viene inteso in un determinato constesto (ad esempio, un valore ad 8 bit con o senza segno, un valore a 16 bit con o senza segno e così via)

    Ad esempio, se dici che il valore 8A è inteso come valore a 8 bit con segno, allora vale -118, ma se è inteso come parte bassa di un valore a 16 bit con segno allora il bit del segno non sta in questa parte ma nella parte alta. Quindi 008A inteso come valore a 16 bit con segno, è positivo e vale 138.

    Se non ti è ancora chiaro che tutto dipende da come intendi i valori e i risultati, dimmi dove hai altri dubbi ,,,

    P.S. Non sapevo si facessero esami sulla 6502 ... molto interessante, ottima CPU (per i tempi) sia per i prodotti dove è stata impiegata, sia per l'aspetto didattico.

    P.P.S. Sul C64 fu impiegata una "evlouzione" della 6502, la 6510
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Il valore più significativo è nell'indirizzo più alto, nel formato L/H
    Quindi se ho il valore 0x1234 e memoria a 8 bit avrei:
    Indirizzo AA: 034
    Indirizzo AB: 0x12
    Right?




    Quote Originariamente inviata da oregon Visualizza il messaggio
    E' una questione di modalità di rappresentazione del valore e di come questo viene inteso in un determinato constesto (ad esempio, un valore ad 8 bit con o senza segno, un valore a 16 bit con o senza segno e così via)

    Ad esempio, se dici che il valore 8A è inteso come valore a 8 bit con segno, allora vale -118, ma se è inteso come parte bassa di un valore a 16 bit con segno allora il bit del segno non sta in questa parte ma nella parte alta. Quindi 008A inteso come valore a 16 bit con segno, è positivo e vale 138.

    Se non ti è ancora chiaro che tutto dipende da come intendi i valori e i risultati, dimmi dove hai altri dubbi ,,,

    P.S. Non sapevo si facessero esami sulla 6502 ... molto interessante, ottima CPU (per i tempi) sia per i prodotti dove è stata impiegata, sia per l'aspetto didattico.

    P.P.S. Sul C64 fu impiegata una "evlouzione" della 6502, la 6510
    Grazie mille per la spiegazione che definirei perfetta ...e anche la precisazione sul C64

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Quote Originariamente inviata da muletto99 Visualizza il messaggio
    Quindi se ho il valore 0x1234 e memoria a 8 bit avrei:
    Indirizzo AA: 0x34
    Indirizzo AB: 0x12
    Sì, è così


    Grazie mille per la spiegazione che definirei perfetta ...e anche la precisazione sul C64
    Prego ... ultima curiosità, in quale uni/corso viene proposta la "gloriosa" 6502?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.