Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- V pamäti programu od adresy CISLO je uložených 8 celých kladných čísel (8-bitových). Nájdite najmen3ie z nich a uložte ho do pamäte dát na adresu MIN v pamati dat.
- prog SEGMENT CODE
- udaj SEGMENT DATA
- RSEG udaj
- MIN: DS 1
- RSEG prog
- Cislo: DB 5,10,4,6,7,12,14,26,3,9
- CSEG AT 0
- start:
- MOV DPTR, #Cislo
- MOV R2, #9
- MOVC A, @A+DPTR
- MOV 60H, A
- INC DPTR
- zac:
- MOVC A, @A+DPTR
- MOV B, 60H
- CJNE A, B, porov
- DJNZ R2, zac
- porov:
- JNC pokracuj
- MOV 60H, A
- pokracuj:
- INC DPTR
- CLR A
- DJNZ R2, zac
- koniec:
- MOV A, 60H
- MOV MIN, A
- END
- V kodovom segmente 700h uložena tabuľka hodnot ukončená 0. A musel som spočítať koľko z nich deliteľné na 5 a uložiť vysledok na nepriamo adresovateľnu pamäť 95h.
- CSEG at 700h
- tab: DB 4,6,7,55,9,47,100,88,44,13,27,0
- CSEG at 0h
- start: MOV dptr,#tab
- dalsi: MOVC A,@A+dptr
- JZ konec
- MOV B,#5
- div AB
- MOV A,B
- JNZ nie
- inc 40h
- MOV R0,#95h
- MOV A,40h
- MOV @R0, A
- nie: inc dptr
- clr A
- jmp dalsi
- konec: nop
- end
- -------------------------------------------------------------------------------------------------------------------------------
- Analyza programu
- udaj SEGMENT DATA
- RSEG udaj
- vysl: DS 2
- CSEG at 0
- start: MOV R5,#1Ch
- MOV R0,#90h
- MOV @R0,#10h
- inc R0
- MOV @R0,#22h
- dec R0
- MOV A,@R0
- SUBB A,R5
- MOV vysl,A
- inc R0
- MOV A,@R0
- SUBB A,#0
- MOV vysl+1,A
- end
- 1.
- Čo je uložené v r0 bezprostredne pred vykonaním inštrukcie na riadku 7 a čo po jej vykonaní?
- Pred vykonaním inštrukcie na riadku 7 je v r0 hodnota 90H. Po vykonaní inštrukcie inc r0 bude v r0 hodnota 91H.
- -------------------------------------------------------------------------------------------------------------------
- 2.
- Aká hodnota bude v r0 po vykonaní inštrukcie na riadku 8?
- Po vykonaní inštrukcie na riadku 8 (mov @r0,#22H) sa hodnota v r0 nezmení a ostane 91H.
- -------------------------------------------------------------------------------------------------------------------
- 3.
- Kam (kde v pamäti) sa uloží číslo 22H? Jednoznačne.
- Číslo 22H sa uloží na pamäťovú adresu 91H.
- -------------------------------------------------------------------------------------------------------------------
- 4.
- Aká hodnota je v akumulátore po vykonaní inštrukcie na riadku 11?
- Po vykonaní inštrukcie na riadku 11 (mov a,@r0) bude hodnota v akumulátore 22H.
- -------------------------------------------------------------------------------------------------------------------
- 5.
- Aký výpočet uskutoční inštrukcia na riadku 12?
- Inštrukcia na riadku 12 (subb a,r5) uskutoční odčítanie a = a - r5. Po vykonaní tejto inštrukcie bude v akumulátore hodnota 22H - 1CH = 06H.
- -------------------------------------------------------------------------------------------------------------------
- 6.
- Čo je obsahom akumulátora po vykonaní inštrukcie na riadku 15?
- Po vykonaní inštrukcie na riadku 15 (mov a,@r0) bude v akumulátore hodnota, ktorá sa nachádza na adrese 91H, čo je 22H.
- -------------------------------------------------------------------------------------------------------------------
- 7.
- Čo je obsahom akumulátora po vykonaní inštrukcie na riadku 16? Vysvetlite príp. zapíšte matematicky alebo slovne.
- Inštrukcia na riadku 16 (subb a,#0) odčíta nulu od hodnoty v akumulátore. Takže hodnota akumulátora zostane 22H.
- -------------------------------------------------------------------------------------------------------------------
- 8.
- Koľkokrát sa vykoná daný program? Vysvetlite.
- Program sa vykoná len raz. Každá inštrukcia je vykonaná v poradí od riadku 5 po riadok 17 a potom program skončí.
- -------------------------------------------------------------------------------------------------------------------
- 9.
- Skúste čo najpresnejšie vysvetliť, čo daný program vykoná.
- Program inicializuje niekoľko registrov a pamäťových miest, vykoná niekoľko operácií presúvania a odčítania hodnôt, a výsledné hodnoty uloží do pamäte. Špecifické kroky sú:
- Inicializuje register r5 hodnotou 1CH a register r0 hodnotou 90H.
- Uloží hodnotu 10H do pamäťovej adresy 90H.
- Zvýši r0 na 91H a uloží hodnotu 22H do pamäťovej adresy 91H.
- Zníži r0 späť na 90H.
- Presunie obsah pamäte na adrese 90H do akumulátora (a = 10H).
- Odčíta hodnotu r5 (1CH) od akumulátora (a = 10H - 1CH = F4H).
- Uloží hodnotu akumulátora (F4H) do pamäťového miesta vysl.
- Zvýši r0 na 91H a znova presunie obsah pamäte na adrese 91H do akumulátora (a = 22H).
- Odčíta nulu od akumulátora (a zostane 22H).
- Uloží výslednú hodnotu akumulátora (22H) do pamäťového miesta vysl+1.
- Celkový výsledok operácií je uložený v pamäťových miestach vysl a vysl+1.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement