CMP elemento di un vettore e due valori (x8086)

di il
8 risposte

CMP elemento di un vettore e due valori (x8086)

Ciao a tutti, volevo chiedere una cosa sul linguaggio Assemly x8086, io ho due vettori:
Dati SEGMENT 'DATA'

W_NUM DW ?, ?, ?, ?, ?
W_NUM BW ?, ?, ?, ?, ?

Dati ENDS
devo passare in rassegna il primo vettore di numeri a due byte con segno, controllare se l'elemento è contenibile in un byte e nel caso scriverlo nel secondo vettore, altrimenti scrivere 0. Il mio dubbio è su come fare a controllare che l'elemento sia compreso tra -127 e 128 e nel caso come scrivere 0. Pensavo di fare un CMP ma non ne sono sicuro. Grazie

Se può essere più d'aiuto posto il testo per intero:
"Sia dato il vettore di numeri a due byte con segno W_NUM di N elementi, con N una costante intera di due byte. Si scriva una procedura di istruzioni assembler che scandisca W_NUM e esegua il cast a byte dei numeri di W_NUM scrivendo i valori in un secondo vettore di byte B_NUM; prima di eseguire il cast e la scrittura su B_NUM, si verifichi se il numero abbia effettivamente un valore che può essere contenuto in un byte, in caso contrario al posto del byte corrispondente si scriva il valore ZERO. Ovviamente la riduzione a byte deve essere fatta tenendo conto del segno del numero. Al termine si esca dalla procedura"

8 Risposte

  • Re: CMP elemento di un vettore e due valori (x8086)

    I valori a 16 bit sono espressi in complemento a du e o no? Sobo con segno?
  • Re: CMP elemento di un vettore e due valori (x8086)

    Per controllare se -128<=x< 0, bisogna controllare se il byte alto e' 0xFF
  • Re: CMP elemento di un vettore e due valori (x8086)

    oregon ha scritto:


    I valori a 16 bit sono espressi in complemento a du e o no? Sobo con segno?
    A riguardo so solo che sono numeri a due byte con segno
  • Re: CMP elemento di un vettore e due valori (x8086)

    migliorabile ha scritto:


    Per controllare se -128<=x< 0, bisogna controllare se il byte alto e' 0xFF
    Il mio problema è che non ho proprio idea di come procedere in Assembly, non saprei scrivere le istruzioni che mi permettano di effettuare questo passaggio di confronto e salvataggio nel secondo array, perchè non penso basti effettuare due volte un CMP dell'elemento del vettore
  • Re: CMP elemento di un vettore e due valori (x8086)

    E come mai devi fare questa cosa.in assembly non sapendone nulla?
  • Re: CMP elemento di un vettore e due valori (x8086)

    oregon ha scritto:


    E come mai devi fare questa cosa.in assembly non sapendone nulla?
    E' un esercizio fornitoci da un professore
  • Re: CMP elemento di un vettore e due valori (x8086)

    Perdonami ma qui non si fanno gli esercizi scolastici.
    Proponi qualcosa ru e se ne parla...tu cosa faresti? Cisa hai studiato?
  • Re: CMP elemento di un vettore e due valori (x8086)

    oregon ha scritto:


    Perdonami ma qui non si fanno gli esercizi scolastici.
    Proponi qualcosa ru e se ne parla...tu cosa faresti? Cisa hai studiato?
    Non volevo chiedere di farmi l'esercizio, chiedevo solo se fosse possibile indicare l'istruzione corretta per compiere il confronto.
    La mia soluzione sarebbe questa, mi posiziono al primo elemento di entrambi gli array con un LEA, poi all'interno di un ciclo valuterei elemento per elemento il problema è che non penso sia corretto fare un CMP per -127 e uno per 128, credo ci sia una soluzione "migliore"
Devi accedere o registrarti per scrivere nel forum
8 risposte