[Assembly 8088]Problema programma

di il
3 risposte

[Assembly 8088]Problema programma

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è??

3 Risposte

  • Re: [Assembly 8088]Problema programma

    Se non metti una routine di chiusura tra la call CRYPT e la label CRYPT e normale che il programma vada in loop.
    poi basta che metti prima della ror l'istruzione mov cx,8 e il gioco e fatto.
    spero di esserti stato di aiuto
  • Re: [Assembly 8088]Problema programma

    Scusa, cosa intendi per routine di chiusura??
  • Re: [Assembly 8088]Problema programma

    Intendo far capire al programma che il suo compito e finito
    per esempio in assembler 8086
    quando un programma ha svolto il suo compito si usa mettere la seguente coppia di istruzioni:
    mov ax,4c00h
    int 21h
    le quali fanno si che il programma termini correttamente.
Devi accedere o registrarti per scrivere nel forum
3 risposte