సమస్యలు మరియు వాటి పరిష్కారాలు
1) 6502 µP కోసం $0200 నుండి ప్రారంభమయ్యే అసెంబ్లీ భాషా ప్రోగ్రామ్ను వ్రాయండి మరియు 2A94 యొక్క సంతకం చేయని సంఖ్యలను జోడించండి హెచ్ (జోడించు) 2ABFకి హెచ్ (ఆగేండ్). ఇన్పుట్లు మరియు అవుట్పుట్ మెమరీలో ఉండనివ్వండి. అలాగే, సమావేశమైన ప్రోగ్రామ్ పత్రాన్ని చేతితో ఉత్పత్తి చేయండి.
పరిష్కారం:
CLC
LDA $0213
ADC $0215
STA $0217
LDA $0214
ADC $0216
STA $0218
అసెంబుల్డ్ ప్రోగ్రామ్:
2) 6502 µP కోసం $0200తో ప్రారంభమయ్యే అసెంబ్లీ లాంగ్వేజ్ ప్రోగ్రామ్ను వ్రాయండి మరియు సంతకం చేయని సంఖ్యలు, 1569ను తీసివేస్తుంది. హెచ్ (సబ్ట్రాహెండ్) 2ABF నుండి హెచ్ (చిన్న ముగింపు). ఇన్పుట్లు మరియు అవుట్పుట్ మెమరీలో ఉండనివ్వండి. సమీకరించబడిన ప్రోగ్రామ్ పత్రాన్ని కూడా చేతితో తయారు చేయండి.
పరిష్కారం:
SEC
LDA $0213
SBC $0215
STA $0217
LDA $0214
SBC $0216
STA $0218
అసెంబుల్డ్ ప్రోగ్రామ్:
3) లూప్ని ఉపయోగించి $00 నుండి $09 వరకు లెక్కించబడే 6502 µP కోసం అసెంబ్లీ భాషా ప్రోగ్రామ్ను వ్రాయండి. కార్యక్రమం $0200 వద్ద ప్రారంభం కావాలి. అలాగే, సమావేశమైన ప్రోగ్రామ్ పత్రాన్ని చేతితో ఉత్పత్తి చేయండి.
పరిష్కారం:
LDA #$09
STA $0220 ; X మరియు $09 పోల్చడం కోసం
LDX #$00
లూప్ INX
CPX $0220
BNE లూప్
అసెంబుల్డ్ ప్రోగ్రామ్:
4) 6502 µP కోసం $0200తో ప్రారంభమయ్యే అసెంబ్లీ భాషా ప్రోగ్రామ్ను వ్రాయండి. ప్రోగ్రామ్లో రెండు సబ్రూటీన్లు ఉన్నాయి. మొదటి సబ్ట్రౌటిన్ 0203 యొక్క సంతకం చేయని సంఖ్యలను జోడిస్తుంది హెచ్ (ఆగెండ్) మరియు 0102 హెచ్ (జోడించు). రెండవ సబ్రౌటిన్ మొదటి సబ్ట్రౌటిన్ నుండి 0305 మొత్తాన్ని జోడిస్తుంది హెచ్ 0006 వరకు హెచ్ (ఆగేండ్). తుది ఫలితం మెమరీలో నిల్వ చేయబడుతుంది. FSTSUB అయిన మొదటి సబ్రౌటిన్కి మరియు SECSUB అయిన రెండవ సబ్రౌటీన్కి కాల్ చేయండి. ఇన్పుట్లు మరియు అవుట్పుట్లు మెమరీలో ఉండనివ్వండి. అలాగే, మొత్తం ప్రోగ్రామ్ కోసం సమావేశమైన ప్రోగ్రామ్ పత్రాన్ని చేతితో రూపొందించండి.
పరిష్కారం:
SECSUB CLC
LDA $021A
ADC $0234
STA $0236
LDA $021B
ADC $0235
STA $0237
RTS
FSTSUB CLC
LDA $0216
ADC $0218
STA $021A
LDA $0217
ADC $0219
STA $021B
RTS
JSR FSTSUB
అసెంబుల్డ్ ప్రోగ్రామ్:
5) ఇచ్చిన ఒక ¯IRQ హ్యాండ్లర్ అక్యుమ్యులేటర్ వద్ద $02 నుండి $01 వరకు కోర్ హ్యాండ్లింగ్గా జోడిస్తుంది ¯NMI జారీ చేయబడింది మరియు ప్రధాన నిర్వహణ ¯NMI అక్యుమ్యులేటర్ వద్ద $05 నుండి $04 వరకు జోడిస్తుంది, హ్యాండ్లర్లిద్దరికీ వారి కాల్లతో సహా అసెంబ్లీ భాషను వ్రాయండి. కు కాల్ ¯IRQ హ్యాండ్లర్ $0200 చిరునామాలో ఉండాలి. ది ¯IRQ హ్యాండ్లర్ $0300 చిరునామాతో ప్రారంభించాలి. ది ¯NMI హ్యాండ్లర్ $0400 చిరునామాతో ప్రారంభించాలి. యొక్క ఫలితం ¯IRQ హ్యాండ్లర్ని $0500 చిరునామాలో ఉంచాలి మరియు దాని ఫలితం ¯NMI హ్యాండ్లర్ను $0501 చిరునామాలో ఉంచాలి.
పరిష్కారం:
NMISR PHA; NMI రొటీన్ ఇక్కడ $0400 చిరునామాతో ప్రారంభమవుతుంది
PHX
PHY
;
LDA #$04
ADC #$05
STA $0501
;
PLY
PLX
PLA
RTI
ISR PHA; ఈ సూచన $0300 చిరునామాలో ఉంది
PHX
PHY
;
LDA #$01
ADC #$02
; JMP NMISR : ఇది రొటీన్లో భాగం కానందున వ్యాఖ్యానించారు
STA $0500 ; పేర్చడానికి వెళ్తుంది
;
PLY
PLX
PLA
RTI
;
JMP ISR; ఈ సూచన $0200 చిరునామాలో ఉంది
6) 65C02 కంప్యూటర్లో సాఫ్ట్వేర్ అంతరాయాన్ని ఉత్పత్తి చేయడానికి BRK సూచన ఎలా ఉపయోగించబడుతుందో క్లుప్తంగా వివరించండి.
పరిష్కారం:
65C02 µP కోసం సాఫ్ట్వేర్ అంతరాయాన్ని కలిగి ఉండటానికి ప్రధాన మార్గం BRK సూచించిన చిరునామా సూచనను ఉపయోగించడం. ప్రధాన ప్రోగ్రామ్ నడుస్తోందని భావించండి మరియు అది BRK సూచనను ఎదుర్కొంటుంది. ఆ పాయింట్ నుండి, PCలోని తదుపరి సూచనల చిరునామా ప్రస్తుత సూచన పూర్తయినందున స్టాక్కు పంపబడాలి. సాఫ్ట్వేర్ సూచనలను నిర్వహించడానికి సబ్ట్రౌటిన్ని తదుపరి కాల్ చేయాలి. ఈ అంతరాయ సబ్ట్రౌటిన్ A, X మరియు Y రిజిస్టర్ కంటెంట్లను స్టాక్కు నెట్టాలి. సబ్ట్రౌటిన్ యొక్క కోర్ అమలు చేయబడిన తర్వాత, A, X మరియు Y రిజిస్టర్ల కంటెంట్లు సబ్ట్రౌటిన్ను పూర్తి చేయడం ద్వారా స్టాక్ నుండి వాటి రిజిస్టర్లకు వెనక్కి లాగబడాలి. రొటీన్లో చివరి ప్రకటన RTI. RTI కారణంగా PC కంటెంట్ ఆటోమేటిక్గా స్టాక్ నుండి PCకి వెనక్కి తీసుకోబడుతుంది.
7) ఒక సాధారణ సబ్ట్రౌటిన్ను అంతరాయ సర్వీస్ రొటీన్తో పోల్చి మరియు కాంట్రాస్ట్ చేసే పట్టికను రూపొందించండి.
పరిష్కారం:
8) అసెంబ్లీ భాషా సూచనల ఉదాహరణలను అందించిన 65C02 µP యొక్క ప్రధాన అడ్రసింగ్ మోడ్లను క్లుప్తంగా వివరించండి.
పరిష్కారం:
6502 కోసం ప్రతి సూచన ఒక బైట్, దాని తర్వాత సున్నా లేదా అంతకంటే ఎక్కువ ఆపరాండ్లు ఉంటాయి.
తక్షణ చిరునామా మోడ్
తక్షణ చిరునామా మోడ్తో, operand తర్వాత, విలువ అనేది మెమరీ చిరునామా కాదు. విలువకు ముందు # ఉండాలి. విలువ హెక్సాడెసిమల్లో ఉంటే, “#” తర్వాత “$” ఉండాలి. 65C02 కోసం తక్షణ చిరునామా సూచనలు: ADC, AND, BIT, CMP, CPX, CPY, EOR, LDA, LDX, LDY, ORA, SBC. ఈ అధ్యాయంలో వివరించబడని ఇక్కడ జాబితా చేయబడిన సూచనలను ఎలా ఉపయోగించాలో తెలుసుకోవడానికి రీడర్ 65C02 µP కోసం డాక్యుమెంటేషన్ను సంప్రదించాలి. ఒక ఉదాహరణ సూచన:
LDA #$77
సంపూర్ణ చిరునామా మోడ్
సంపూర్ణ చిరునామా మోడ్తో, ఒక ఆపరాండ్ ఉంది. ఈ ఒపెరాండ్ మెమరీలోని విలువ యొక్క చిరునామా (సాధారణంగా హెక్సాడెసిమల్ లేదా లేబుల్లో). 6502 µP కోసం 64K10 = 65,53610 మెమరీ చిరునామాలు ఉన్నాయి. సాధారణంగా, ఒక-బైట్ విలువ ఈ చిరునామాలలో ఒకదానిలో ఉంటుంది. 65C02 యొక్క సంపూర్ణ చిరునామా సూచనలు: ADC, మరియు, ASL, BIT, CMP, CPX, CPY, DEC, EOR, INC, JMP, JSR, LDA, LDX, LDY, LSR, ORA, ROL, ROR, SBC, STA , STX, STY, STZ, TRB, TSB. ఈ అధ్యాయంలో వివరించబడని మిగిలిన అడ్రసింగ్ మోడ్ల కోసం ఇక్కడ జాబితా చేయబడిన సూచనలను ఎలా ఉపయోగించాలో తెలుసుకోవడానికి రీడర్ 65C02 µP కోసం డాక్యుమెంటేషన్ను సంప్రదించాలి. ఒక ఉదాహరణ సూచన:
అవి $1234
ఇంప్లైడ్ అడ్రస్సింగ్ మోడ్
సూచించిన చిరునామా మోడ్తో, ఒపెరాండ్ లేదు. ప్రమేయం ఉన్న ఏదైనా µP రిజిస్టర్ సూచన ద్వారా సూచించబడుతుంది. 65C02 కోసం సూచించబడిన చిరునామా సూచనలు: BRK, CLC, CLD, CLI, CLV, DEX, DEY, INX, INY, NOP, PHA, PHP, PHX, PHY, PLA, PLP, PLX, PLY, RTI, RTS, SEC , SED, SEI, పన్ను, TAY, TSX, TXA, TXS, TYA. ఒక ఉదాహరణ సూచన:
DEX: X రిజిస్టర్ను ఒక యూనిట్ ద్వారా తగ్గించండి.
సంబంధిత చిరునామా మోడ్
సంబంధిత చిరునామా విధానం శాఖ సూచనలతో మాత్రమే వ్యవహరిస్తుంది. రిలేటివ్ అడ్రసింగ్ మోడ్తో, ఒక ఒపెరాండ్ మాత్రమే ఉంది. ఇది -12810 నుండి +12710 వరకు ఉన్న విలువ. ఈ విలువను ఆఫ్సెట్ అంటారు. సంకేతం ఆధారంగా, ఈ విలువ ప్రోగ్రామ్ కౌంటర్ యొక్క తదుపరి సూచన నుండి ఉద్దేశించిన తదుపరి సూచనల చిరునామాలో ఫలితానికి జోడించబడుతుంది లేదా తీసివేయబడుతుంది. సంబంధిత చిరునామా మోడ్ సూచనలు: BCC, BCS, BEQ, BMI, BNE, BPL, BRA, BVC, BVS. సూచనల ఉదాహరణలు:
BNE $7F : (స్టేటస్ రిజిస్టర్లో Z = 0 అయితే శాఖ, P)
ఇది ప్రస్తుత ప్రోగ్రామ్ కౌంటర్కు 127ని జోడిస్తుంది (అమలు చేయాల్సిన చిరునామా) మరియు ఆ చిరునామాలో సూచనలను అమలు చేయడం ప్రారంభించండి. అదేవిధంగా:
BEQ $F9 : (బ్రాంచ్ అయితే Z = : స్టేటస్ రిజిస్టర్లో, P)
ఇది ప్రస్తుత ప్రోగ్రామ్ కౌంటర్కు -7ని జోడిస్తుంది మరియు కొత్త ప్రోగ్రామ్ కౌంటర్ చిరునామాలో అమలును ప్రారంభించండి. ఒపెరాండ్ అనేది రెండు పూరక సంఖ్య.
సంపూర్ణ సూచిక చిరునామా
సంపూర్ణ ఇండెక్స్ చిరునామాతో, X లేదా Y రిజిస్టర్లోని కంటెంట్ నిజమైన చిరునామాను కలిగి ఉండటానికి ఇచ్చిన సంపూర్ణ చిరునామాకు ($0000 నుండి $FFFF వరకు ఎక్కడైనా, అంటే 010 నుండి 6553610 వరకు) జోడించబడుతుంది. ఈ ఇచ్చిన సంపూర్ణ చిరునామాను ఆధార చిరునామా అంటారు. X రిజిస్టర్ ఉపయోగించినట్లయితే, అసెంబ్లీ సూచన ఇలా ఉంటుంది:
LDA $C453,X
Y రిజిస్టర్ ఉపయోగించినట్లయితే, అది ఇలా ఉంటుంది:
LDA $C453,Y
X లేదా Y రిజిస్టర్ యొక్క విలువను కౌంట్ లేదా ఇండెక్స్ విలువ అని పిలుస్తారు మరియు ఇది $00 (010) నుండి $FF (25010) వరకు ఎక్కడైనా ఉండవచ్చు. దీనిని ఆఫ్సెట్ అని పిలవరు.
సంపూర్ణ సూచిక చిరునామా సూచనలు: ADC, AND, ASL (X మాత్రమే), BIT (అక్యుమ్యులేటర్ మరియు మెమరీతో, X మాత్రమే), CMP, DEC (మెమరీ మరియు X మాత్రమే), EOR, INC (మెమరీ మరియు X మాత్రమే), LDA , LDX, LDY, LSR (X మాత్రమే), ORA, ROL (X మాత్రమే), ROR (X మాత్రమే), SBC, STA, STZ (X మాత్రమే).
సంపూర్ణ పరోక్ష చిరునామా
ఇది జంప్ సూచనలతో మాత్రమే ఉపయోగించబడుతుంది. దీనితో, ఇచ్చిన సంపూర్ణ చిరునామాకు పాయింటర్ చిరునామా ఉంటుంది. పాయింటర్ చిరునామా రెండు బైట్లను కలిగి ఉంటుంది. రెండు-బైట్ల పాయింటర్ మెమరీలోని గమ్యం బైట్ విలువను (అడ్రస్) సూచిస్తుంది. కాబట్టి, అసెంబ్లీ భాషా సూచన క్రింది విధంగా ఉంది:
JMP ($3456)
కుండలీకరణాలు మరియు $3456 చిరునామాలో $13 అయితే $EB $3457 (= $3456 + 1) చిరునామాలో, గమ్యం చిరునామా $13EB మరియు $13EB పాయింటర్. సూచనలో కుండలీకరణాల్లో సంపూర్ణ $3456 ఉంది.
9) ఎ) “ఐ లవ్ యు!” అని పెట్టడానికి 6502 మెషిన్ లాంగ్వేజ్ ప్రోగ్రామ్ను వ్రాయండి. మెమరీలో ASCII కోడ్ల స్ట్రింగ్, స్ట్రింగ్ పొడవుతో $0300 చిరునామా నుండి ప్రారంభమవుతుంది. కార్యక్రమం $0200 చిరునామాలో ప్రారంభం కావాలి. అక్యు-మ్యులేటర్ నుండి ప్రతి అక్షరాన్ని పొందండి, అవి కొన్ని సబ్రౌటీన్ ద్వారా ఒక్కొక్కటిగా అక్కడకు పంపబడుతున్నాయని భావించండి. అలాగే, ప్రోగ్రామ్ను చేతితో సమీకరించండి. (“నేను నిన్ను ప్రేమిస్తున్నాను!” కోసం ASCII కోడ్లను మీరు తెలుసుకోవాలంటే, అవి ఇక్కడ ఉన్నాయి: 'I':4916, స్పేస్ : 2016, 'l': 6C16, 'o':6F16, 'v':7616, ' e':65, 'y':7916, 'u':7516, మరియు '!':2116. గమనిక: ప్రతి కోడ్ 1 బైట్ను ఆక్రమిస్తుంది).
బి) “ఐ లవ్ యు!” అని పెట్టడానికి 6502 మెషిన్ లాంగ్వేజ్ ప్రోగ్రామ్ను వ్రాయండి మెమరీలో ASCII కోడ్ల స్ట్రింగ్, స్ట్రింగ్ పొడవు లేకుండా $0300 చిరునామా నుండి మొదలై 0016లో ముగుస్తుంది. ప్రోగ్రామ్ $0200 చిరునామాతో ప్రారంభం కావాలి. అక్యుమ్యులేటర్ నుండి ప్రతి అక్షరాన్ని పొందండి, అవి కొన్ని సబ్రూటీన్ ద్వారా ఒక్కొక్కటిగా అక్కడకు పంపబడుతున్నాయని భావించండి. అలాగే, ప్రోగ్రామ్ను చేతితో సమీకరించండి.
పరిష్కారం:
ఎ) వ్యూహం: స్ట్రింగ్ కోసం 12 బైట్లు ఉన్నాయి: స్ట్రింగ్ పొడవు కోసం 1 బైట్ మరియు స్ట్రింగ్ లిటరల్ కోసం 11 బైట్లు. కాబట్టి, 0 నుండి 12 పునరావృత్తులు (లూపింగ్లు) లెక్కించబడాలి. అంటే: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11. ఇవి 12 సంఖ్యలు.
0 పూర్ణాంకం X రిజిస్టర్లో ఉంచబడింది మరియు 1110 = 1210 – 110 = B16 = $0B సంఖ్య మెమరీలో చిరునామా స్థానంలో ఉంచబడుతుంది, చిరునామా $0250 అని చెప్పండి. ప్రతి పునరావృతం కోసం, X రిజిస్టర్లోని విలువ పెంచబడుతుంది మరియు ఫలితం $0250 చిరునామా స్థానంలో $0Bతో పోల్చబడుతుంది. Xలోని విలువ $0B విలువకు సమానమైన తర్వాత, పునరావృతం ఆగిపోతుంది. ఈ సమయంలో, స్ట్రింగ్ యొక్క పొడవు (బైట్ల సంఖ్య) మరియు స్ట్రింగ్ అక్షరాలా $0300 నుండి $030B (కలిసి) చిరునామా స్థానాలను ఆక్రమిస్తాయి. మెమరీ చిరునామాలను $0300 నుండి పెంచడానికి, Y రిజిస్టర్ ఉపయోగించబడుతుంది. కోడ్:
LDA #$0B
అవి $0250
LDX #$00
LDY #$00
STA $0300 ; 11 నిడివిని కొంత సబ్రూటీన్ ద్వారా A లోకి చేర్చారు మరియు $0300కి వెళుతుంది
లూప్ INX
అక్కడ
CPY $0250
BEQ లూప్
బి) వ్యూహం: స్ట్రింగ్ కోసం 12 బైట్లు ఉన్నాయి: $00 నల్ టెర్మినేటర్ కోసం 1 బైట్ మరియు స్ట్రింగ్ లిటరల్ కోసం 11 బైట్లు. కాబట్టి, 0 నుండి లెక్కింపులో 12 పునరావృత్తులు (లూపింగ్లు) ఉండాలి. అంటే: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11. ఇవి 12 సంఖ్యలు.
0 పూర్ణాంకం X రిజిస్టర్లో ఉంచబడింది మరియు 1110 = 1210 – 110 = B16 = $0B సంఖ్య మెమరీలో చిరునామా స్థానంలో ఉంచబడుతుంది, చిరునామా $0250 అని చెప్పండి. ప్రతి పునరావృతం కోసం, X రిజిస్టర్లోని విలువ పెంచబడుతుంది మరియు ఫలితం $0250 చిరునామా స్థానంలో $0Bతో పోల్చబడుతుంది. Xలోని విలువ $0B విలువకు సమానమైన తర్వాత, పునరావృతం ఆగిపోతుంది. ఈ సమయంలో, స్ట్రింగ్ యొక్క బైట్ల సంఖ్య మరియు శూన్య అక్షరం $0300 నుండి $030B (కలిసి) చిరునామా స్థానాలను ఆక్రమిస్తాయి. మెమరీ చిరునామాలను $0300 నుండి పెంచడానికి, Y రిజిస్టర్ ఉపయోగించబడుతుంది. కోడ్:
LDA #$0B
అవి $0250
LDX #$00
LDY #$00
STA $0300 ; 'I' అనేది కొంత సబ్రూటీన్ ద్వారా A లోకి పెట్టబడింది మరియు $0300కి వెళుతుంది
లూప్ INX
అక్కడ
CPY $0250
BEQ లూప్