ARRAY DI DOUBLEWORD E TRASFERIMENTO IN UN REGISTRO

di il
20 risposte

20 Risposte - Pagina 2

  • Re: ARRAY DI DOUBLEWORD E TRASFERIMENTO IN UN REGISTRO

    oregon ha scritto:


    Ma devi usare un ciclo per arrivare all'elemento ennesimo ... non lo fai direttamente come indicato prima.
    mov ax, word ptr database[bx+1] ; bx è l'indice

    Ovviamente, c'è sempre una soluzione piu' complicata
  • Re: ARRAY DI DOUBLEWORD E TRASFERIMENTO IN UN REGISTRO

    Forse non mi sono spiegato o la tua risposta non l'ho capita ...

    Io ti dico di usare un registro indice a partire da un numero di record, calcolando la destinazione con lo shift di due bit e tu mi rispondi con

    mov ax, word ptr database[bx+1] ; bx è l'indice

    Va beh ... lasciamo perdere.
  • Re: ARRAY DI DOUBLEWORD E TRASFERIMENTO IN UN REGISTRO

    Stai parlando di questo?

    oregon ha scritto:


    mov si,numero_record
    shl si,1
    shl si,1
    mov ax,word ptr database[si+1]
    Si può fare, ovviamente (ma un solo shl si, 2 basterebbe). Ho solo dimostrato come stampare tutti gli elementi in un loop usando add bx, 4, tutto qua.
  • Re: ARRAY DI DOUBLEWORD E TRASFERIMENTO IN UN REGISTRO

    Non puoi usare

    sul si, 2

    Puoi usare il registro cl ma per 2 bit non conviene
  • Re: ARRAY DI DOUBLEWORD E TRASFERIMENTO IN UN REGISTRO

    oregon ha scritto:


    Non puoi usare

    sul si, 2
    Cavolo, hai ragione! Avevo messo .186, ma è sbagliato, vedi sotto. Ma perché qualcuno si interessa per i codici di un processore che ha solo un valore storico, visto che ha 40 anni sulle spalle? Già è una scocciatura che devo lanciare la VM per provare questi snippets sul mio vecchissimo Windows 7-64...
    .Model small	
    .186		; 80186; comment out to use 8086
    
    .data
    database dd 11223344h, 55667788h, 99AABBCCh
    
    .code
    start:
      shl si, 2	; <<<<<<<<<<<<<<<<<<<< test: funziona con 80168 ma non piace al 8086...
      mov si, offset database+1
      xor bx, bx
      .Repeat
    	mov ax, word ptr database[bx+1]
    	; Print Hex$(ax), " ", CrLf$	; DosBasic
    	add bx, 4
      .Until bx>2*DWORD
      
      mov ax, 4C00h
      int 21h
    end start
  • Re: ARRAY DI DOUBLEWORD E TRASFERIMENTO IN UN REGISTRO

    E' solo per questioni didattiche. Sono esercizi di base per chi inizia.
Devi accedere o registrarti per scrivere nel forum
20 risposte