Anteprima
Vedrai una selezione di 10 pagine su 178
Calcolatori Elettronici I – Asim Tool Pag. 1 Calcolatori Elettronici I – Asim Tool Pag. 2
Anteprima di 10 pagg. su 178.
Scarica il documento per vederlo tutto.
Calcolatori Elettronici I – Asim Tool Pag. 6
Anteprima di 10 pagg. su 178.
Scarica il documento per vederlo tutto.
Calcolatori Elettronici I – Asim Tool Pag. 11
Anteprima di 10 pagg. su 178.
Scarica il documento per vederlo tutto.
Calcolatori Elettronici I – Asim Tool Pag. 16
Anteprima di 10 pagg. su 178.
Scarica il documento per vederlo tutto.
Calcolatori Elettronici I – Asim Tool Pag. 21
Anteprima di 10 pagg. su 178.
Scarica il documento per vederlo tutto.
Calcolatori Elettronici I – Asim Tool Pag. 26
Anteprima di 10 pagg. su 178.
Scarica il documento per vederlo tutto.
Calcolatori Elettronici I – Asim Tool Pag. 31
Anteprima di 10 pagg. su 178.
Scarica il documento per vederlo tutto.
Calcolatori Elettronici I – Asim Tool Pag. 36
Anteprima di 10 pagg. su 178.
Scarica il documento per vederlo tutto.
Calcolatori Elettronici I – Asim Tool Pag. 41
1 su 178
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

STOPX N Z V C* * * * *X N Z V C - Modificati a secondo dell'operandosize: unsized esempio 2.187 STOP Load Status Register and Stop- privileged instruction0100111001110010<Immediate Data>Immediate Data -> SR; STOPX N Z V C* * * * *X,N,Z,V,C : set according to the immediate operandImm. Field: Specifica il dato da caricare nel registro di stato*esempio2.188 SUB Subtract binary1101 R mode eadest=dest+sorg* * * ? ?·D ·¬R +S ·¬D ·RV=¬Sm m m m m mC=S ·¬D +R ·¬D +S ·Rm m m m m mADD <ea>,DnADD Dn,<ea>size: B,W,Lesempio2.189 SUB Subtract binary1001 R opmode eadest=dest-sorg* * * * *X=settato come il carryN=1 se il risultato e’ negativo. Nullo altrimenti.Z=1 se il risultato e’ nullo. Nullo altrimenti.V=1 se e’ generato OVERFLOW. Nullo altrimenti.C=1 se e’ generato un BORROW. Nullo altrimenti.SUB <ea>,Dn SUB Dn,<ea> size: B,W,Lesempio *** VEDI ESEMPI ISTRUZIONI: DIVS

& DIVU ***2.190 SUB Subtract binary1001 R OpMode EffAddrdest=dest-sorg* * * ? ?·D ·¬R +S ·¬D ·RV=¬Sm m m m m mC=S ·¬D +R ·¬D +S ·Rm m m m m mSUB <ea>,DnSUB Dn,<ea>size: B,W,LEsempio restr.a68:
* Utilizzo dei codici operativi:MOVEQ e SUB* Restoring: effettua la divisione mediante sottrazioni successive.* Esegue D0/D1: 25/3* ORG $8000DVD EQU 25DVS EQU 3START MOVEQ #0,D2 Azzera il registro D2 che funge da contatore.MOVEQ #DVD,D0 D0 è il dividendoMOVEQ #DVS,D1 D1 è il divisoreINIZIO CMPD1,D0 Confronto D1 e D0 e salto a FINE se dovessieffettuare* una divisione illecita (DVS>DVD), oppure se hofinito.BLT FINESUB.L D1,D0 Il registro D0 alla fine conterrà il resto.ADDQ.L #1,D2 Il registro D2 alla fine conterrà il quoto.JMP INIZIOFINE NOP No operation nel caso in cui DVS>DVD, oppurese ho * finito di sottrarre.STOP #$2000END START 2.191 SUBA Subtract address1101 R mode

eadest=dest+sorg* * * * *
N=1 se dest<0
Z=1 se dest=0
V=1 se si genera overflow
C,X=1 se si genera riporto (decimale)
ADD <ea>,Dn
ADD Dn,<ea>
size: B,W,L


Lesempio 2.192 SUBI Subtract immediate
1101 R mode eadest=dest+sorg* * * ? ?
·D ·¬R +S ·¬D ·R
V=¬S ·D ·¬R +S ·¬D ·R
m m m m m m
ADD <ea>,Dn
ADD Dn,<ea>
size: B,W,L


Lesempio2.193 SUBI Subtract immediate
00000100 size ea + 1,2 ext word←dest
*dest-immX,N,Z,V,C* * * ? ?
V=¬S ·D ·¬R +S ·¬D ·R
m m m m m m
C=S ·¬D +R ·¬D +S ·R
m m m m m m
SUBI #<imm>,<ea>
size: B,W,L
Modi di indirizzamento non permessi :
- Immediate
- Relative
- Relative indexed
esempio :
* Questo segmento di programma estrae una colonna da una matrice di
long word e * la trasferisce in una certa area di memoria con
l'ordine invertito per gli * elementi.
* D0 contiene l'indice della colonna e A1

contiene l'indirizzo di partenza dell' * area di memoria in cui deve essere trasferita la colonna.

org $8000

START subq.l #1,D0 individua l'indirizzo di partenza

mulu.w #4,D0 dell'ultimo elemento della colonna

addi.l #TABINI+3*16,D0 selezionata;

moveq.l #3,D1 inizializza il contatore;

LOOP move.l D0,A0 per utilizzare l'indirizzamento indiretto;

move.l (A0),(A1)+ trasferisce l'elemento e aggiorna il puntatore;

subi.l #16,D0 seleziona il successivo elemento della colonna;

dbf D1,LOOP

TABINI org $8020 inizializza l'area della tabella

RIGA1 dc.l $004531A0,$0103F34A,$0005E781,$120056BC

RIGA2 dc.l $17C3B001,$A9D361C0,$01050641,$F20D501

RIGA3 dc.l $1045F380,$D010520A,$0005E000,$AB00D12

RIGA4 dc.l $030581A0,$0AB3F51A,$0503D081,$1263A0BC

end START

2.194 Note:

- Il modo di indirizzamento 'Address-direct-register' non è permesso, contrariamente a quanto è scritto sia sul manuale ('Only data alterable addressing modes are allowed') sia sul

Wakerly ('a_dst').2.195

SUBQ Subtract quick1101 R mode eadest=dest+sorg* * * ? ?·D ·¬R +S ·¬D ·RV=¬Sm m m m m mC=S ·¬D +R ·¬D +S ·Rm m m m m mADD <ea>,DnADD Dn,<ea>size: B,W,L

Esempio2.196 SUBQ Subtract quick0101 data 1 size eadest<=*dest-sorgX N Z V C* * * ? ?·D ·¬R +S ·¬D ·RV=¬Sm m m m m mC=S ·¬D +R ·¬D +S ·Rm m m m m mSUBQ #data,<ea>size: B,W,L

ESEMPIO Questa subroutine permette il calcolo dei bit alti di un dato passatoin D0,restituisce il risultato in d1.

ORG $8000 indirizzo di partenza

ESSUBQ MOVE.L #32,D0 Inizializza a 32 d1

MOVE.L #32,D2 Inizializza il contatore

LAB1 ROL #1,D0 Shifta a sinista D0

BSC LAB2 Controlla il primo bit di D0

SUBQ #1,D1

LAB2 SUBQ #1,D2

BNE LAB1

RTS Ritorno al chiamante

MAIN MOVE.L #$10000003,D0 Metti in D0 il dato

JSR ESSUBQ Salto a sottoprogramma

END MAIN

SUBQ Sottrazione

D Effectivea Addressta

SUBQ

<data>,<ea> Sottrae al valore contenuto in dst un valore immediato compreso tra 1 ed 8. La destinazione può essere un indirizzo effettivo alterabile. Sono permessi i size BWL tranne che per gli Andove non è permesso utilizzare il size Byte.

X N Z V C* * * ? ?

X è settato allo stesso modo di C Sm bit più significativo del sorgente

N è settato se il risultato è negativo Dm bit più significativo della destinazione

Z è settato se il risultato è zero Rm bit più significativo del risultato

·D ·¬R +S ·¬D ·R

V = ¬Sm m m m m m

C = S ·¬D +R ·¬D +S ·Rm m m m m m

L'istruzione SUBQ torna utile laddove serve decrementare un puntatore ad una word (2 unità) o ad una long word (4 unità).

Differenze con SUBI: è più corta ed è ad essa preferita quando si ha a che fare con parole in doppia precisione; può usare un An

come destinazione ed, in tal caso, si comporta come un con un dato immediato (sono consentite come dimensioni, in questo caso, soltanto W e L e i bit di stato restano intatti). SUBX Subtract with extend 1101 R mode eadest=dest+sorg* * ? ? ?·D ·¬R +S ·¬D ·RV=¬Sm m m m m mC=S ·¬D +R ·¬D +S ·Rm m m m m mZ=Z·¬R ·...·¬Rm 0ADD ,Dn ADD Dn, size: B,W,L Esempio 2.198 SUBX Subtract with extend 1001 Rx 1 size 00 R/M Rydest=dest-sorg-x* * * * *X=settato come il carry N=1 se il risultato è negativo. Nullo altrimenti. Z=1 se il risultato è nullo. Inalterato altrimenti. V=1 se è generato OVERFLOW. Nullo altrimenti. C=1 se è generato un riporto. Nullo altrimenti. SUBX Dx,Dy SUBX -(Ay),-(Ax) size: B,W,L Esempio * Esempio d'uso di SUBX per la sottrazione in multiprecisione TOT=num0-num1 * num0 = 3.459.327.408.245.962.467 e quindi occupa due longword, così

come* num1 = 1.153.390.864.253.429.473* Il risultato, solo per una verifica veloce anche dei bit di flag,* e' salvato anche nei registri D0,D4* NB: Data la scelta precisa dei due numeri num0 e num1,* si verifichera' il BORROW durante la SUBX.* Di conseguenza la parte LOW del risultato sara' un num negativo.* E' quindi logico che spostando tale parte nel registro D4,* verra' settato il bit N dell'SR.* Elaborazione: Gruppo 10 - 96/97


ORG $8000 *START
MOVEA.L #0,A0 * AZZERA IL REGISTO A0
MOVEA.L A0,A1 * AZZERA IL REGISTRO A1
NUM0H EQU $3001FFF3 * SPLITTA L'INTERO NUMERO IN DUE LONG
W: NUM0H(HIGH)
NUM0L EQU $1245F6E3 * E NUM0L (LOW)
NUM1H EQU $1001AAE1 * STESSA OPERAZIONE PER NUM1
NUM1L EQU $4F01A6E1
N0 DS.L 2 * RISERVA LO SPAZIO PER ALLOCARE IN MEMORIA I DUE NUMERI
N1 DS.L 2
MOVE.L #NUM0H,N1 * PONE NUM0H IN MEMORIA
MOVE.L #NUM0L,N1+4 * PONE NUM0L IN MEMORIA, DOPO NUM0H
* (QUINDI 4 BYTES DOPO NUM0H)
MOVE.L #NUM1H,N0 * STESSA OPERAZIONE PER NUM2
MOVE.L #NUM1L,N0+4

LEA.L N1+8,A0 * CARICA IN A0 L'INDIRIZZO DI NUM0

LEA.L N0+8,A1 * CARICA IN A1 L'INDIRIZZO DI NUM1

MOVE.W #0,CCR * AZZERA LO SR

SUBX.L -(A1),-(A0) * EFFETTUA LA SOTTRAZIONE TRA NUM0L E NUM1L

SUBX.L -(A1),-(A0) * SOTTRAE LE PARTI HIGH DEI DUE NUMERI COMPRESO L'EVENTUARE BORROW DELLA SOTTRAZIONE PRECEDENTE

MOVE.L (A0)+,D0 * PONE LA PARTE HIGH DEL RISULTATO IN D0

MOVE.L (A0)+,D4 * PONE LA PARTE LOW DEL RISULTATO IN D4

(N=1 SE C'È STATO BORROW)

END START * FINE.

2.199 SUBX Subtract with extend

1001 Rdest 1 Size 00 R/M Rsrc

dest=dest-sorg-X

?

?

?

·D ·¬R +S ·¬D ·R

V=¬S

m m m m m m

C=S ·¬D +R ·¬D +S ·R

m m m m m m

Z=Z·¬R ·...·¬Rm

0 SUBX Dy,Dx

SUBX -(Ay),-(Ax) size: B,W,LE

esempio subx.a68:

Utilizzo del codice operativo: SUBX

Il programma seguente mostra l'utilizzo del codice SUBX con l'indirizzamento con predecremento. Il minuendo è il numero op1=67381185,

Il sottraendo * op2 = 22419153. La differenza dei due numeri è 44F68032, e viene calcolata, tenendo conto del prestito memorizzato nei flag X e C, componendo la sottrazione parziale delle coppie di cifre decimali contenute in ciascuno dei 4 byte in cui ciascun numero è memorizzato. La differenza è posta nelle stesse locazioni di op1 e nel registro D2.

Area Programma a partire dalla locazione $8000

ORG $8000

START

MOVE.L #EOP1,A0 In A0 indirizzo base 1^ addendo

MOVE.L #EOP2,A1 In A1 indirizzo base 2^ addendo

MOVE.L #COUNT,D1 In D1 il valore della variabile di conteggio del ciclo

Dettagli
Publisher
A.A. 2012-2013
178 pagine
1 download
SSD Ingegneria industriale e dell'informazione ING-INF/05 Sistemi di elaborazione delle informazioni

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Sara F di informazioni apprese con la frequenza delle lezioni di Calcolatori elettronici I e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi di Napoli Federico II o del prof Canonico Roberto.