Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Altri Linguaggi - assembler 8086 - lavoro su 1 byte alla volta
Forum - Altri Linguaggi - assembler 8086 - lavoro su 1 byte alla volta - Pagina 3

Pagine: [ 1 2 3 4 ] Precedente | Prossimo
Avatar
enlallaca (Normal User)
Newbie


Messaggi: 19
Iscritto: 13/03/2010

Segnala al moderatore
Postato alle 16:48
Domenica, 23/05/2010
Testo quotato

Postato originariamente da nessuno:

Questa riga

mov al,vett

non serve.

La procedura mettila alla fine (dopo l'ultima chiamata ad int 21h)

P.S. Non srivere in maiuscolo ...


scusami...scrivevo in maiuscolo non per urlare ma per evidenziare di piu il messaggio dalla parte di programma.... comunque è giusto cosi? e il confronto del flag segno lo faccio dentro alla procedura?
.model small
.stack
.data
    ; <<inserire qui le dichiarazioni delle variabili>>
    
    vett db 1,2,3,4,5,6,-9,-5,-1,-2
    
.code

inizio:
    mov ax, @data    
    mov ds, ax
    
        
    mov di,0
analisi:
    call programma
    inc di
    
    jmp analisi
    
    mov dx,bp
    
    mov al,00h                
    mov ah,4ch
    int 21h
    
    programma proc near
                cmp al,vett[di]
                push bp
                mov bp,sp
                mov bx,[bp+4]        ;|indirizzo di partenza
                mov cx,bp
                mov ax,[bp+6]        ;|indirizzo
                add al,bl
                mov ah,0
                mov [bp+8],ax
                pop bp
            
            ret
    endp
    
    
    
end inizio

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 16:59
Domenica, 23/05/2010
Testo quotato

Postato originariamente da enlallaca:
scusami...scrivevo in maiuscolo non per urlare ma per evidenziare di piu il messaggio dalla parte di programma....



Per questo si usa il tasto Code

Testo quotato

comunque è giusto cosi? e il confronto del flag segno lo faccio dentro alla procedura?



No che non è giusto.

La riga

   jmp analisi

non farà mai terminare il programma. Lo hai notato?

E cosa farebbe il codice dentro la subroutine? Non c'è il test e non è quello che faceva il codice di prima ... perchè tutta questa confusione?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
enlallaca (Normal User)
Newbie


Messaggi: 19
Iscritto: 13/03/2010

Segnala al moderatore
Postato alle 17:02
Domenica, 23/05/2010
Testo quotato

Postato originariamente da nessuno:

Testo quotato

Postato originariamente da enlallaca:
scusami...scrivevo in maiuscolo non per urlare ma per evidenziare di piu il messaggio dalla parte di programma....



Per questo si usa il tasto Code

Testo quotato

comunque è giusto cosi? e il confronto del flag segno lo faccio dentro alla procedura?



No che non è giusto.

La riga

   jmp analisi

non farà mai terminare il programma. Lo hai notato?

E cosa farebbe il codice dentro la subroutine? Non c'è il test e non è quello che faceva il codice di prima ... perchè tutta questa confusione?



perchè non capisco come funzione una procedura facendo passare i valori di un vettore... ho il libro sotto mano ma non c'è scritto nulla che mi faccia capire qualcosa

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 17:04
Domenica, 23/05/2010
Non devi far passare nulla dato che il vettore è "globale"


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
enlallaca (Normal User)
Newbie


Messaggi: 19
Iscritto: 13/03/2010

Segnala al moderatore
Postato alle 17:12
Domenica, 23/05/2010
Testo quotato

Postato originariamente da nessuno:

Non devi far passare nulla dato che il vettore è "globale"


E per analizzare elemento per elemento? come faccio? metto vett[si] incrementando di volta in volta si tutto dentro alla procedura?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 17:16
Domenica, 23/05/2010


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
enlallaca (Normal User)
Newbie


Messaggi: 19
Iscritto: 13/03/2010

Segnala al moderatore
Postato alle 17:29
Domenica, 23/05/2010
Testo quotato

Postato originariamente da nessuno:



non capisco piu niente...ho il cervello fuso ormai...ma devo farcela perchè domani ho compito su una cosa molto simile...dove sbaglio adesso?
           call programma
    
    mov si,0
    
    
    mov dl,cont            
    add dl,30h            
    mov ah,02h            
    int 21h                

    
    mov dx,bp            
        
    mov al,00h                
    mov ah,4ch
    int 21h
    
    
    
    programma proc near
        start:
                mov al,vett[si]
                inc si
                test al,10000000b
                jz conta
                avanti:
                
                
                
                
                push bp
                mov bp,sp
                mov bx,[bp+4]        
                mov cx,bp
                mov ax,[bp+6]        
                add al,bl
                mov ah,0
                mov [bp+8],ax
                pop bp
                
                jmp start
                conta:
                    inc cont
                    jmp avanti
            ret
    endp

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 18:52
Domenica, 23/05/2010
Non puoi chiamare prima la proc e poi azzerare si che verrà usato nella proc.

si azzeralo nella proc.

E poi continui ad usare bp quando non hai nessun parametro in ingresso!

Parti da questo

Codice sorgente - presumibilmente Altri Linguaggi

  1. .model small
  2. .stack
  3. .data
  4.      
  5.     vett db 1,2,3,4,5,6,-9,-5,-1,2
  6.      
  7. .code
  8.  
  9. inizio:
  10.     mov ax, @data    
  11.     mov ds, ax
  12.  
  13.     call analisi
  14.          
  15.     add dl,30h            
  16.     mov ah,02h            
  17.     int 21h                
  18.  
  19.     mov al,00h                
  20.     mov ah,4ch
  21.     int 21h
  22.      
  23.      
  24.      
  25.     analisi proc near
  26.         mov dl,0
  27.         mov si,0
  28. nxt:        
  29.         mov al,vett[si]
  30.         inc si
  31.         test al,10000000b
  32.         jnz noneg
  33.         inc dl  
  34. noneg:        
  35.         cmp si,10
  36.         jne nxt
  37.         ret
  38.      endp
  39. end inizio


Ultima modifica effettuata da nessuno il 23/05/2010 alle 19:18


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Pagine: [ 1 2 3 4 ] Precedente | Prossimo