Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
Scrieti instructiunile in limbaj de asamblare care realizeaza pentru variabilele de tip octet P,Q, R:
P=Q-R
P=-(P+1)
Q=P+R
R=3*Q+7
P=Q-P-1
Instructiune |
Modul de adresare a operandului sursa |
Modul de adresare a operandului destinatie |
ORG $4000 | ||
PB: EQU $4000 | ||
QB: EQU $4001 | ||
RB: EQU $4002 | ||
Entry: LDAA QB |
extins |
inerent |
LDAB RB |
extins |
inerent |
SBA |
inerent |
inerent |
STAA PB |
inerent |
extins |
INC PB |
extins |
extins |
NEG PB |
extins |
extins |
LDAA PB |
direct |
inerent |
LDAB RB |
direct |
inerent |
ABA |
inerent |
inerent |
STAA QB |
inerent | |
LDAA QB |
extins |
inerent |
LDAB QB |
extins |
inerent |
ABA |
inerent |
inerent |
ABA |
inerent |
inerent |
LDAB #7 |
imediat |
inerent |
ABA |
inerent |
inerent |
STAA RB |
inerent |
extins |
INC PB |
extins |
extins |
LDAA QB |
extins |
inerent |
LDAB PB |
extins |
inerent |
SBA |
inerent |
inerent |
STAA PB |
inerent |
extins |
DONE: BRA DONE | ||
ORG $FFFE | ||
DC.W Entry |
Observatii Dupa declararea variabilelor, am realizat pe rand operatiile cerute. In cazul inmultirii cu 3, am observat ca o astfel de operatie intre 2 numere pe 8 biti nu se poate memora decat pe 16 biti. De aceea am folosit adunarea, pentru a putea stoca valoarea finala intr-o variabila pe 8 biti.
1) Rescrieti secventele pentru variabile word.
Instructiune |
Modul de adresare a operandului sursa |
Modul de adresare a operandului destinatie |
ORG $4000 | ||
PW: EQU $4000 | ||
QW: EQU $4002 | ||
RW: EQU $4004 | ||
Entry: LDD QB |
extins |
inerent |
SUBD RW |
extins |
Inerent |
STD PW |
extins |
Inerent |
LDX PW |
extins |
inerent |
INX |
inerent |
inerent |
LDD #0000 |
imediat |
inerent |
STX PW |
inerent |
direct |
SUBD PW |
extins, inerent |
inerent |
STD PW |
inerent |
extins |
LDD PW |
extins |
inerent |
ADDD RW |
extins, inerent |
inerent |
STD QW |
inerent |
extins |
LDD QW |
extins |
inerent |
ADDD QW |
extins, inerent |
inerent |
ADDD QW |
extins, inerent |
inerent |
ADDD #7 |
imediat |
inerent |
STD RW |
inerent |
extins |
| ||
LDS PW |
extins |
inerent |
INS |
inerent |
inerent |
LDD QW |
extins |
inerent |
STS PW |
inerent |
extins |
SUBD PW |
extins, inerent |
inerent |
STD PW |
inerent |
extins |
DONE: BRA DONE | ||
ORG $FFFE | ||
DC.W Entry |
Observatii Deoarece pe 16 biti adunarile si scaderile nu s-au mai putut face cu acumulatorii A si B, a fost necesara folosirea registrilor D, X, Y si chiar SP. Pentru operatia P=-(P+1), am incarcat in registrul D valoarea 0, din care am scazut P+1, memorat in registrul X.
2) Scrieti un program care calculeaza: W=(P+6-R)*Q. Verificati functionarea corecta pentru P=23, Q=8 R=1
Instructiune |
Modul de adresare a operandului sursa |
Modul de adresare a operandului destinatie |
ORG $4000 | ||
PB: EQU $4000 | ||
QB: EQU $4001 | ||
RB: EQU $4002 | ||
WW: EQU $4003 | ||
Entry: LDAA PB |
extins |
inerent |
LDAB #6 |
imediat |
inerent |
ABA |
inerent |
inerent |
LDAB RB |
extins |
inerent |
NEGB |
inerent |
inerent |
ABA |
inerent |
inerent |
LDAB QB |
extins |
inerent |
MUL |
inerent |
inerent |
STD WW |
inerent |
extins |
DONE: BRA DONE | ||
ORG $FFFE | ||
DC.W Entry |
4) Idem pt.: R=[(P+Q)*(T+V-W)]/2. Verificati pt. P=3, Q=6, T=60, V=90, W=8
Instructiune |
Modul de adresare a operandului sursa |
Modul de adresare a operandului destinatie |
ORG $4000 | ||
PB: EQU $4000 | ||
QB: EQU $4001 | ||
TB: EQU $4002 | ||
VB: EQU $4003 | ||
RW: EQU $4004 | ||
Entry: LDAA QB |
extins |
inerent |
LDAB PB |
extins |
inerent |
ABA |
inerent |
inerent |
STAA PB |
inerent |
extins |
LDAA TB |
extins |
inerent |
LDAB VB |
extins |
inerent |
ABA |
inerent |
inerent |
LDAB WB |
extins |
inerent |
NEGB |
inerent |
inerent |
ABA |
inerent |
inerent |
LDAB PB |
extins |
inerent |
MUL |
inerent |
inerent |
LDX #$0002 |
imediat |
inerent |
IDIV |
inerent |
inerent |
STX RW |
inerent |
extins |
DONE: BRA DONE | ||
ORG $FFFE | ||
DC.W Entry |
Copyright © 2024 - Toate drepturile rezervate