Salve, a tutti sono nuovo della programmazione assembly e ho un problema con questo programma:
In poche parole riceve un puntatore (Code) ad un area di memoria in cui è contenuto un numero a 16 bit e un intero (Key) a 8 bit e deve effettuare un’operazione di rotazione bit-a-bit a destra di Code ruotando i suoi bit di Key volte.
Io l'ho scritto così:
.SECT .DATA
Code: .WORD 15
Key: .BYTE 8
.SECT .TEXT
start:
MOV SI, Code
PUSH SI
PUSH Key
CALL CRYPT
CRYPT:
PUSH BP
MOV BP,SP
MOV SI, 6(BP)
MOV AX, (SI)
MOV CX, 4(BP)
1: ROR AX,1
LOOP 1
MOV (SI), AX
POP BP
RET
Ma l'assemblatore restituisce quest'errore:
Project Progetto_1 listfile Progetto_1.$
Project Progetto_1 num file Progetto_1.#
Project Progetto_1 loadfile Progetto_1.88
"Progetto_1.$", line 17: too big (warning)
*** glibc detected *** ./as88: double free or corruption (!prev): 0x083b02d8 ***
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(+0x73e42)[0xf7624e42]
/lib/i386-linux-gnu/libc.so.6(fclose+0x154)[0xf7614384]
./as88(fwrite+0x11e)[0x80489de]
./as88[0x8048ff3]
/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0xf75ca4d3]
======= Memory map: ========
08048000-0804f000 r-xp 00000000 08:01 2755092 /home/roob/Scrivania/as88
0804f000-08052000 rwxp 00007000 08:01 2755092 /home/roob/Scrivania/as88
08052000-08062000 rwxp 00000000 00:00 0
083b0000-083d1000 rwxp 00000000 00:00 0 [heap]
f7574000-f7590000 r-xp 00000000 08:01 397202 /lib/i386-linux-gnu/libgcc_s.so.1
f7590000-f7591000 r-xp 0001b000 08:01 397202 /lib/i386-linux-gnu/libgcc_s.so.1
f7591000-f7592000 rwxp 0001c000 08:01 397202 /lib/i386-linux-gnu/libgcc_s.so.1
f75b0000-f75b1000 rwxp 00000000 00:00 0
f75b1000-f7750000 r-xp 00000000 08:01 397162 /lib/i386-linux-gnu/libc-2.15.so
f7750000-f7752000 r-xp 0019f000 08:01 397162 /lib/i386-linux-gnu/libc-2.15.so
f7752000-f7753000 rwxp 001a1000 08:01 397162 /lib/i386-linux-gnu/libc-2.15.so
f7753000-f7756000 rwxp 00000000 00:00 0
f7771000-f7776000 rwxp 00000000 00:00 0
f7776000-f7777000 r-xp 00000000 00:00 0 [vdso]
f7777000-f7797000 r-xp 00000000 08:01 397159 /lib/i386-linux-gnu/ld-2.15.so
f7797000-f7798000 r-xp 0001f000 08:01 397159 /lib/i386-linux-gnu/ld-2.15.so
f7798000-f7799000 rwxp 00020000 08:01 397159 /lib/i386-linux-gnu/ld-2.15.so
ffa94000-ffab5000 rwxp 00000000 00:00 0 [stack]
Annullato (core dump creato)
Qualcuno mi può dire perchè??