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

    [ASSEMBLY] Rotazione dx bit a bit

    Salve,
    Vorrei capire come poter effettuare una rotazione bit a bit con codice assembly 8088.
    Dovrei fare una funzione che presi in input un puntatore ad un'area di memoria con un intero a 16 bit (NUM) e un intero a 8 bit (X) effettui su NUM una rotazione bit a bit a destra su Y bit.
    Ho provato a farlo su C++, con successo (usando per NUM un vettore di 16 elementi), e poi vederne il codice assembly ma non ci capisco nulla.
    Qualcuno potrebbe aiutarmi?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Partiamo dal tuo codice C++ e da cosa non capisci ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Ciò che non capisco è il file .s del programma in C++, non riesco a leggerlo con chiarezza sinceramente. Io uso eclipse per programmare in C++, per eseguire i programmi invece uso MinGW. Di seguito riporto direttamente il programma in C++ visto che il file .s trovo sia troppo lungo da postare.

    I vari include li metto sempre per sicurezza io. Nel main il primo ciclo è solo un controllo per vedere se l'input è quello che uno vuole, poi lo trovo utile per controllare il vettore in entrata e quello in uscita dopo la chiamata di CRYPT, visualizzato tramite il secondo ciclo while.

    #include <iostream>
    #include <stdlib.h>
    #include <cmath>
    #include <cstring>
    using namespace std;

    void CRYPT(int* Codec, int Keyc) {
    int A[Keyc], i=0;
    while (i<Keyc) {
    A[i]=Codec[i];
    Codec[i]=0;
    i++;
    }
    i--;
    int f=15;
    while (i>=0) {
    Codec[f]=A[i];
    f--;
    i--;
    }
    }

    int main() {
    int Code[16];
    int Key, x;
    for (x=0; x<16; x++) {
    cout << "Insert Code [" << x << "]" << endl;
    cin >> Code[x];
    };
    cout << "Insert Key" << endl;
    cin >> Key;
    int y=0;
    while (y<16) {
    cout << Code [y];
    y++;
    }
    cout << endl;
    CRYPT(Code, Key);
    y=0;
    while (y<16) {
    cout << Code[y];
    y++;
    }
    return 0;
    }

    Mi scuso da subito se il codice è un pò pesante e con parti eliminabili ma non programmo da molto.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Devi postare il codice usando i tag CODE altrimenti si capisce poco ...

    E comunque, dato che lo devi fare in Assembly 8088, dovremmo discutere anche del codice assembly ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Pardon, allora semmai c'è un modo per allegare il file .s??? Oppure devo copiarlo direttamente???
    Scusate, sono poco avvezzo a scrivere nei forum.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Copiane la parte che interessa ... quella relativa alla rotazione ... e quella parte che ritieni di dover avere spiegata.
    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.