fabr86 (Utente)
Matricola
Messaggi: 15
|
Istruzione BGT, BLT, BGE, BLE 10 annos, 8 meses ago
|
|
Salve a tutti ragazzi,ho un dubbio riguardo l'istruzione BGT, BLT. La prima vuol dire branch on greater than, cioe'si deve saltare se il primo operando e'maggiore del secondo e la seconda se il primo operando e'minore del secondo. Mi e'sorto un dubbio riguardo queste due istruzioni,poiche'quando ho scritto il programma in assembler le istruzioni funzionano, ma esattamente al contrario.Cioe'BGT salta quando il primo e'minore del secondo operando e BLT salta se il primo e'maggiore del secondo.Come mai questa cosa?
|
|
|
|
|
Per scrivere in questo forum è necessario registrarsi come utenti di questo sito ed effettuare il login. |
Raffaele (Utente)
In corso
Messaggi: 145
|
Re:Istruzione BGT, BLT, BGE, BLE 10 annos, 8 meses ago
|
|
Veramente funziona proprio al contrario, il simulatore non sbaglia in questo caso (ricordo che c'era un qualche altro bug simile da qualche parte però, forse sui numeri relativi).
Penso ti sia sfuggito il funzionamento dell'istruzione CMP da usare sempre prima dei Branch on Condition, a questo proposito nel dubbio è sempre meglio consultare il manuale del Motorola 68000.
La sintassi di CMP è: CMP [destinazione/registro generico] [sorgente/Registro dati Dn]
E il risultato è quello di calcolare [Sorgente] - [Destinazione], cioè sottrae il secondo operando al primo (non il primo al secondo) e lo status register cambia di conseguenza. In pratica la comparazione avviene fra il secondo operando (che deve essere sempre un Registro Dati) rispetto al primo.
|
|
|
|
|
Ultima modifica: 06/03/2014 21:42 Da Raffaele.
|
|
Per scrivere in questo forum è necessario registrarsi come utenti di questo sito ed effettuare il login. |
freddy (Utente)
In corso
Messaggi: 112
|
Re:Istruzione BGT, BLT, BGE, BLE 10 annos, 7 meses ago
|
|
scusate se mi intrometto..ma se ad esempio mi chiede questo: dato un vettore verificare che gli elementi sono tutti parti come devo fare??usare la btst non penso sia corretto perchè quest'ultima mi indica la posizione del bit se è pari o dispari..quindi comefaccio? grazie mille
|
|
|
|
|
Per scrivere in questo forum è necessario registrarsi come utenti di questo sito ed effettuare il login. |
Raffaele (Utente)
In corso
Messaggi: 145
|
Re:Istruzione BGT, BLT, BGE, BLE 10 annos, 7 meses ago
|
|
Potresti usare un ciclo di loop con modalità di indirizzamento indiretto (magari autoincrementato) per controllare singolarmente i vari elementi del vettore. Per ogni elemento basta controllare solo il bit meno significativo (cioè l'ottavo, se gli elementi sono tutti byte) tramite il BTST. Infatti, semplicemente, se l'LSB è 0 allora il numero è pari, mentre sè l'LSB è 1 è dispari.
|
|
|
|
|
Per scrivere in questo forum è necessario registrarsi come utenti di questo sito ed effettuare il login. |
freddy (Utente)
In corso
Messaggi: 112
|
Re:Istruzione BGT, BLT, BGE, BLE 10 annos, 7 meses ago
|
|
ah non sapevo che se l LSB era 0 allora il numero era pari...
|
|
|
|
|
Per scrivere in questo forum è necessario registrarsi come utenti di questo sito ed effettuare il login. |
freddy (Utente)
In corso
Messaggi: 112
|
Re:Istruzione BGT, BLT, BGE, BLE 10 annos, 7 meses ago
|
|
ma come faccio a fare il BTST sul bit meno significativo?puoi farmi un esempio per favore? Grazie
|
|
|
|
|
Per scrivere in questo forum è necessario registrarsi come utenti di questo sito ed effettuare il login. |
Raffaele (Utente)
In corso
Messaggi: 145
|
Re:Istruzione BGT, BLT, BGE, BLE 10 annos, 7 meses ago
|
|
Temo sia troppo tardi per rispondere visto che l'ultimo appello credo ci sia già stato, ma prima non mi è stato possibile.
Come ho già scritto e come ripete sempre la professoressa, è sempre opportuno consultare il manuale del motorola 68000, lo si può persino richiedere al docente durante la prova scritta. Il comando BTST ha sintassi "BTST #data," (oppure " BTST Dn, " ), e il risultato è quello di testare il bit data-esimo del generico registro di destinazione (cioè per capire se il bit del numero contenuto dal registro Dn è pari o dispari). L'LSB corrisponde sempre al bit numero zero, quindi per testare l'LSB di un registro l'istruzione è " BTST #0, "
Consiglio di consultare anche gli esempi sul sito della professoressa, per scaricarli è necessario loggarsi come studenti della facoltà: Materiale Didattico -> Calcolatori I -> Laboratorio -> [U2-05]_Esempi.zip
|
|
|
|
|
Per scrivere in questo forum è necessario registrarsi come utenti di questo sito ed effettuare il login. |
|