Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it L'avatar di MrX87
    Registrato dal
    Jun 2007
    Messaggi
    500

    [assembler 8086] stampa vettore interi

    Ciao a tutti, è da poco che mi ho iniziato a studiare assembler e sto iniziando a fare i primi esercizi...uno di questi richiede di stampare a video un vettore di interi di 6 elementi. Inoltre il vettore per essere stampato nel giusto senso, si chiede di utilizzare lo stack.
    Ho provato a scrivere qualcosa, però non capisco perchè, il codice che ho scritto compila correttamente, ma se effettuo il debug si pianta nella istrizione:
    codice:
    div d
    comunque posto qua sotto tutto il codice, se c'è qualcuno un pò più esperto che mi sa dare qualche dritta...come assemlatore uso il MASM6.11 sotto winXP...Grazie!
    codice:
    dim equ 6
    
    .model small
    .stack
    .data
    
    vet dw 12, 45, 56, 20, 56, 129
    tmp dw ?
    d   dw 10
    
    .code
    .startup
    
    mov cx, dim
    mov di, 0
    mov si, 0
    
    ciclo: mov bx, vet[di]
           mov tmp, bx
    
           ciclo2: mov ax, 0
    	       mov ax, tmp
    	       div d
    	       push dx
    	       mov tmp, ax
    	       inc si
    	       cmp ax, 0
    	     jnz ciclo2
    
           mov ah, 2
           mov dh, 0
    
           stampa: pop dx
    	       add dl, '0'
    	       int 21h
    	       dec si
    	       cmp si, 0
    	     jnz stampa
    
           inc di
         loop ciclo
    
    .exit
    end
    "Non può piovere per sempre" Il Corvo
    Forza Vigor!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    In che senso "si pianta"? Esegui il codice passo-passo?

    E perche' in queste linee

    ciclo2: mov ax, 0
    mov ax, tmp

    prima azzeri ax e poi ci carichi un altro valore? Che senso ha azzerarlo?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di MrX87
    Registrato dal
    Jun 2007
    Messaggi
    500
    E perche' in queste linee

    ciclo2: mov ax, 0
    mov ax, tmp

    prima azzeri ax e poi ci carichi un altro valore? Che senso ha azzerarlo?

    bhè si in effetti non ha senso azzerarlo!! comunque nella div quando faccio il debug passo passo
    mi dice "Error: illegal instruction"...
    "Non può piovere per sempre" Il Corvo
    Forza Vigor!

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Quale messaggio?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di MrX87
    Registrato dal
    Jun 2007
    Messaggi
    500
    che significa quale messaggio???
    "Non può piovere per sempre" Il Corvo
    Forza Vigor!

  6. #6
    Utente di HTML.it L'avatar di MrX87
    Registrato dal
    Jun 2007
    Messaggi
    500
    Inoltre volevo sapere se per caso esiste un assemblatore migliore del MASM 6.11 che mi sembra un pò vecchiotto e inoltre mi quando compilo o effettuo il degub passo passo mi porta il processore al massimo di utilizzo e rimane costante a fino a quando chiudo il masm!!
    "Non può piovere per sempre" Il Corvo
    Forza Vigor!

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    La descrizione esatta e completa del messaggio d'errore ...

    Il MASM 6.11 e' vecchiotto ... Esiste la versione 8 ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it L'avatar di MrX87
    Registrato dal
    Jun 2007
    Messaggi
    500
    per quanto riguarda l'assemblatore ho chiuso con il MASM e ho installato l'EMU8086...che sembra abbastanza funzionale e con una bella interfaccia!! ho provato a eseguire con il debug dell'emu8086 quel pezzo di codice e mi da sempre errore nella div con il seguente messaggio:
    codice:
     divide error - overflow.
     to manually process this error,
     change address of INT 0 in interrupt vector table.
    "Non può piovere per sempre" Il Corvo
    Forza Vigor!

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ora e' piu' chiaro ... come dice l'errore c'e' un overflow ... quali sono i valori che tenti di dividere?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it L'avatar di MrX87
    Registrato dal
    Jun 2007
    Messaggi
    500
    bhè la div la effettuo facendo divisioni per la variabile d che vale 10 e il registro ax che assume di volta in volta il valore di un elemento del vettore vet!
    "Non può piovere per sempre" Il Corvo
    Forza Vigor!

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