2012-07-01 8 views
5

sto chiedendo aiuto con la scrittura di codice assembly a 32 bit per un semplice "programma di tatuaggio.”la scrittura di codice Assembly per un tatuaggio

Mi piacerebbe avere un tatuaggio. Dopo averci pensato su, ho deciso che io vorrebbe un tatuaggio che usa il codice assembly e si occupa di mia figlia, Alisha. La mia idea è venuta fuori con un "calcolo illogico", che sfugge alle leggi del linguaggio assembly. Voglio rendere omaggio a quanto sembra illogico avere un bambino uno come me ... chi è abituato a 1 e 0.

sto pensando di utilizzare registri a 32 bit basati su x86 come EAX, EBX, ECX e e, naturalmente, alcune spinte e pop.

012.

Il tatuaggio NON avrebbe i commenti (niente tra parentesi), ma includerebbe l'inizio: notazione.

start: 
    mov eax, 53656C66h (ASCII for "Self") 
    mov ebx, 57696665h (ASCII for "Wife") 
    add ebx, eax 

    push ebx 
    push 3F81DBh   (Decimal 4162011 = daughter's birth date) 

    pop ecx    (The first pop would give my daughter's birth date) 
    pop ecx    (the second pop would NOT give the answer of eax added to ebx, 
          but would rather give my daughter’s nickname) 
    ??? ecx 

La mia idea è di sostituire ??? con l'istruzione di leggere e quindi mostrare che il valore in ecx è ora 416c69h (ASCII per "Ali", il soprannome di mia figlia). Penso che questa idea sarebbe fantastica, e posterò le foto del tatuaggio se lo avrò (ovviamente).

La mia idea è che l'ultimo pop sfiderebbe la logica del computer. In sostanza, avere un figlio sfida la "logica" che conosciamo, quindi questo è stato il mio tentativo di paragonare la bellezza della nascita.

Altre idee?

+0

bx è un registro a 16 bit. Il valore 5769666579h è lungo 31 bit ... Forse dovresti considerare un'altra idea ... – Macmade

+0

Buon punto Macmade. Ho appena passato a usare i registri estesi. In realtà, ACSII utilizza 7 bit per carattere, giusto? Significa che avrei bisogno di usare 64-bit per contenere "Alisha" in ASCII. Potrei usare "Ali", dato che è il suo soprannome. – user1435743

+2

Non vuoi ottenere un tatuaggio a 64 bit? – hirschhornsalz

risposta

4

Ciò che è un po 'strano è che il programma non fa nulla, davvero. Perché non scrivere invece il codice che risulta nel nome di tua figlia in seguito alla combinazione di elementi come il tuo nome, quello di tua moglie e qualche codifica della sua data di nascita? Forse attraverso una serie di istruzioni XOR con alcuni valori significativi?

+0

La mia idea era che l'ultimo pop avrebbe sfidato la normale logica del computer. Piuttosto che restituire la risposta di 5769666579h + 4d65h, restituirebbe il nome di mia figlia. Comunque, mi piace davvero la tua idea. Ora, ho solo bisogno di scoprire come andare su alcuni XOR per derivare "Ali" in esagono da "Io" e il nick/nome di mia moglie. Devo anche scoprire come adattare meglio queste cose nei registri ... Preferisco restare con 32-bit a questo punto. – user1435743

+0

Voglio iniziare con movs o devo caricare i registri piuttosto che spostare un valore? Non sono sicuro di quale sia il modo migliore per riempire un registro vuoto in assemblea. In altre parole, vorrei iniziare il programma portando "Me" (ASCII come esagono) e "Moglie" (ASCII come esagono). Una volta inseriti i valori, mi piacerebbe avviarli a XOR con cose come data di nascita/date speciali/ecc. per ottenere il nome di mia figlia dagli XOR. Questo sarà difficile! – user1435743

+0

Puoi fare 'mov eax, 'Moglie'', questo sarà compreso dall'assemblatore. – hirschhornsalz