[Assembler]Determinare output finale

Gianni911
Ciao a tutti spero che qualcuno riesca a risolvere questo problema,che mi sta facendo impazzire
L'esercizio consiste nel dire qual é l'output finale di 0xF2
.GLOBAL _main

.EQU n, 30

# Sezione dati
vett: .FILL n,1

# Sezione codice
inbyte: IN 0x2A, AL
           RET
outbyte: OUT AL, 0xF2
             RET
_main:  MOV $n, CL
            MOV $vett, EDI
           CALL inbyte
      k:  MOV AL,(EDI)
           ADD $50, AL
           JC k1
          INC EDI
           DEC CL
           JNZ k
   k1:   MOV CL, AL
          CALL outbyte
          JMP fine
 fine: RET


Come faccio ad essere sicuro che quell'operazione di somma ADD $50,AL,
non mi causi JC il flag,senza sapere a cosa sommo 50,visto che il valore proviene da una porta di input?
Diversamente l'output può essere variabile...
Se il flag si presenta subito CL=30
flag in mezzo 0 Grazie..

Risposte
Rggb1
Ad una rapida occhiata direi che l'output è il residuo modulo 50 dell'input.

[ Ma che diamine di pseudocodice è?!? Le MOV sono "a rovescio", c'è un JMP verso la fine... alla fine. Ma l'hai scritto te? ]

Gianni911
Guarda il codice non é mio,l'ho preso da una esercitazione del mio prof,poi xchè le mov sono al contrario?? mi sembrano giuste..
Come fai ad essere sicuro del risultato senza sapere l'input??
Quello che ho capito io,
il primo elemento del vettore viene inizializzato al valore in input,al quale viene sommato 50,
per quanto riguarda le altre celle AL viene incrementato sempre di 50 e poi inserito in nel vettore ..
quindi
vett[0]=input;
vett[1]=50;
vett[2]=100;
ecc...
Grazie

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.