[Assembler]Determinare output finale
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
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..
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
Risposte
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? ]
[ Ma che diamine di pseudocodice è?!? Le MOV sono "a rovescio", c'è un JMP verso la fine... alla fine. Ma l'hai scritto te? ]
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
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