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

    [assembly] Aiuto Vi Prego

    Numero 1:dati AX=0345h. BX=004Dh.

    mov 0,bx
    Giro:
    add dx,ax
    dec bx
    jnz Giro

    ...ebbene mi spiegate come DX alla fine risulta 0FBC1h.
    In particolare non mi sono chiare 2 cose:la prima è come diamine fa il registro dx che è a 16 bit alla fine ad essere a 5 bit!!!..inoltre decrementare BX che all'inizio è a 004Dh. fino a 0 equivale a fare un bel po di sottrzioni(un pò troppe per un esecizio da fare in 2 minuti)...non c'è un metodo più rapido?

    E poi altro ex. dati: BP=8086h. SI=8088h.DS=ABCDh.

    mov[bp-8+si],ds

    ..tale istruzione scrive in memoria ABCDh. all'indirizzo CDFF6h....come mai???...io avrei detto all'indirizzo ABDD6h

    P.S. scusate se ho riscritto il topic ma mi ero scordato di taggarlo e il titolo non si modifica

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Dalle mie reminescenze passate di assembly e così "a sentimento" direi che alcune istruzioni sono sbagliate e alcuni passaggi non sono molto chiari.

    Hai provato a dare un'occhiata a questo sito che contiene un interessante tutorial sull'assembly e il dettaglio di alcune delle istruzioni più utilizzate?

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    305
    GIUSTO.......

    AX=0345h. BX=004Dh.
    AX è uguale a 837 per cicli uguali a BX=77


    infatti 837*77 (cicli)=64449

    e comunque stai facendo addizione e non sottrazione, non ti confondere, la sottrazioe è di bx = dec bx (sottrai 1) finche non è 0 ed esci dal ciclo.

    l'operazione è esatta, comunque stai al limite del numero che può contenere dx (ovvero 65536), infatti se il risultato fosse 65537 quanto varrebbe dx?

    ciao amico

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Il risultato è giusto ma la prima istruzione (mov 0, bx) dovrebbe - teoricamente - essere mov dx, 0 per inizializzare a 0 il registro DX, o no?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    No raga il primo esecizio è giusto(poi ci sono arrivato da solo)è il secondo che propio non lo capisco!!!!.....non avete alcun suggerimento???...P.S ciao ALKA

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    305
    per la seconda domanda è semplice...............

    E poi altro ex. dati: BP=8086h. SI=8088h.DS=ABCDh.

    Il risultato che ottieni è la somma degli indirizzi puntati dal registro si, che serve appunto come puntatore alle stringhe.
    praticamente, senza vedere il codice presumo che i calcoli che fai sono le somme degli indirizzi di memoria puntati dal registro si in accopiata con bx
    tutto quà.

    infatti:
    mov[bp-8+si],ds (se stampi si ottieni il numero di locazione di memoria).
    per sommare numeri, devi sempre usare, cx come contatore ax per +, - *, e /. e cosa più importante azzera i regustri per non averli sporchi con risultati imprevedibili.

    es.:
    xor dx,dx
    xor bx,bx
    xor cx,cx
    xor ax,ax

    mov cx,4Dh
    Giro:
    add ax,345h
    dec cx
    cmp cx,0
    je avanti
    jmp Giro
    avanti:

  7. #7
    ti ringrazio comunque i conti continuano a non tornarmi:se faccio tutte le somme ottengo

    BP - 8 = 8086h. -8 = 807Eh.

    807Eh. + si = 807Eh. + 8088h.= 0106h.

    Dunque a questo punto mi rimane il valore 0106h. che dovrei somamre al valore di DS con dispacement???...se cosi facessi,e cioè ABCD0h.+ 00106h. mi verrebbe fuori ABDD6h. e non il risultato corretto che è CDFF6h.!!!!!!!!...questo non mi è chiaro cosa devo fare?????

  8. #8
    U P U P U P

  9. #9
    UP UP UP possibile nessuno???(

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 © 2025 vBulletin Solutions, Inc. All rights reserved.