Pomaknite sadržaj s memorijskih lokacija 6000-6006 na lokacije 6800-6806. Sačuvajte redoslijed podataka.
Ulaz: | 6000 | = | 3E2E | Izlaz: | 6800 | = | 3E2E |
6002 | = | 42A1 | 6802 | = | 42A1 | ||
6004 | = | 21F2 | 6804 | = | 21F2 | ||
6006 | = | 60A0 | 6806 | = | 60A0 |
Oduzmite vrijednost 16 bitne varijable VALUE2 s lokacije 6002 od vrijednosti 16 bitne varijable VALUE1 s lokacije 6000 i rezultat spremite u VALUE1.
Ulaz: | 6000 | = | 3977 | Izlaz: | 6000 | = | 17F5 |
6002 | = | 2182 | 6002 | = | 2182 |
Shiftajte vrijednost 16 bitne varijable VALUE1 sa lokacije 6000 udesno 3 bita te postavite najznačajnija 3 bita varijable VALUE2 sa lokacije 6006 na 0.
Ulaz: | 6000 | = | 415D | Izlaz: | 6000 | = | 082B |
6006 | = | C15D | 6006 | = | 015D |
Upišite na memorijsku lokaciju 6004 16 bitnu vrijednost dobivenu kombinacijom najmanje značajnih 4 bita bajtova s lokacije 6000-6003. Bitove upisujte od najviše značajnih do najmanje značajnih.
Ulaz: | 6000 | = | 1C | Izlaz: | 6000 | = | 1C |
6001 | = | 02 | 6001 | = | 02 | ||
6002 | = | 06 | 6002 | = | 06 | ||
6003 | = | 09 | 6003 | = | 09 | ||
6004 | = | 6004 | = | C269 |
Memorijske lokacije 6002, 6004 i 6006 sadrže nenegativne cijele brojeve. Upišite najmanjeg na lokaciju 6000.
Ulaz: | 6000 | = | Izlaz: | 6000 | = | 102C | |
6002 | = | 9125 | 6002 | = | 9125 | ||
6004 | = | 102C | 6004 | = | 102C | ||
6006 | = | 7040 | 6006 | = | 7040 |
Izračunajte kvadrate 16 bitnih vrijednosti VALUE1, VALUE2 s lokacija 6000, 6002 te spremite zbroj kvadrata kao 32 bitnu vrijednost na lokaciju 6004. Koristite signed aritmetiku.
Ulaz: | 6000 | = | 0007 | Izlaz: | 6000 | = | 0007 |
6002 | = | 0032 | 6002 | = | 0032 | ||
6004 | = | 6004 | = | 000009F5 |
Izračunajte faktorijelu 8 bitne varijable VALUE s lokacije 6010 pomoću tablice faktorijela FTABLE s lokacija 6000-600F. Spremite rezultat u 16 bitnu varijablu RESULT na lokaciju 6012. Pretpostavite da je VALUE vrijednost između 0 i 7.
Ulaz: | 6000 | = | 0000 | Izlaz: | 6000 | = | 0000 |
6002 | = | 0001 | 6002 | = | 0001 | ||
6004 | = | 0002 | 6004 | = | 0002 | ||
6006 | = | 0006 | 6006 | = | 0006 | ||
6008 | = | 0018 | 6008 | = | 0018 | ||
600A | = | 0078 | 600A | = | 0078 | ||
600C | = | 02D0 | 600C | = | 02D0 | ||
600E | = | 13B0 | 600E | = | 13B0 | ||
6010 | = | 05 | 6010 | = | 05 | ||
6012 | = | 6012 | = | 0078 |
Izračunajte checksum niza 8 bitnih vrijednosti. Duljina niza definirana je 16 bitnom varijablom LENGTH s lokacije 6000. Početna adresa niza sadržana je u 32 bitnoj varijabli START s lokacije 6002. Spremite checksum na adresu 6006. Checksum je dan operacijom isključivo ili među svim vrijednostima.
Ulaz: | 5000 | = | 28 | Izlaz: | 5000 | = | 28 |
5001 | = | 55 | 5001 | = | 55 | ||
5002 | = | 26 | 5002 | = | 26 | ||
6000 | = | 0003 | 6000 | = | 0003 | ||
6002 | = | 00005000 | 6002 | = | 00005000 | ||
6006 | = | 6006 | = | 5B |
Odredite broj nula, pozitivnih (najznačajniji bit je 0) i negativnih (najznačajniji bit je jednak 1) vrijednosti u nizu 16 bitnih cijelih brojeva. Duljina niza dana je varijablom LENGTH s lokacije 6000 i početna adresa niza je sadržana u 32 bitnoj varijabli START s lokacije 6002. Broj negativnih brojeva spremite na adresu 6006, pozitivnih na adresu 6008 i broj nula spremite na adresu 600A.
Ulaz: | 5000 | = | 7602 | Izlaz: | 5000 | = | 7602 |
5002 | = | 8D48 | 5002 | = | 8D48 | ||
5004 | = | 2120 | 5004 | = | 2120 | ||
5006 | = | 0000 | 5006 | = | 0000 | ||
5008 | = | E605 | 5008 | = | E605 | ||
500A | = | 0004 | 500A | = | 0004 | ||
6000 | = | 0006 | 6000 | = | 0006 | ||
6002 | = | 00005000 | 6002 | = | 00005000 | ||
6006 | = | 6006 | = | 0002 | |||
6008 | = | 6008 | = | 0003 | |||
600A | = | 600A | = | 0001 |
Pronađite najmanji element u nizu unsigned bajtnih vrijednosti. Duljina niza dana je varijablom LENGTH s lokacije 6000 dok je početna adresa dana 32 bitnom varijablom START s lokacije 6002. Spremite minimum na adresu 6006.
Ulaz: | 5000 | = | 79 | Izlaz: | 5000 | = | 79 |
5001 | = | 65 | 5001 | = | 65 | ||
5002 | = | 15 | 5002 | = | 15 | ||
5003 | = | E3 | 5003 | = | E3 | ||
5004 | = | 72 | 5004 | = | 72 | ||
6000 | = | 0005 | 6000 | = | 0005 | ||
6002 | = | 00005000 | 6002 | = | 00005000 | ||
6006 | = | 6006 | = | 15 |
Odrediti broj bitova koji su jednaki 1 u 16 bitnoj varijabli NUM s lokacije 6000 i spremite rezutat na adresu 6002.
Ulaz: | 6000 | = | B794 | Izlaz: | 6000 | = | B794 |
6002 | = | 6002 | = | 09 |
Odredite koji element u nizu 16 bitnih vrijednosti ima najviše bitova jednakih 1. Duljina niza dana je varijablom LENGTH s lokacije 6000 dok je početna adresa niza dana 32 bitnom vrijednosti START s lokacije 6002. Spremite element s najviše jedinica na adresu 6006. Ako više elemenata ima jednak broj jedinica onda spremite prvi takav na adresu 6006.
Ulaz: | 5000 | = | 6779 | Izlaz: | 5000 | = | 6779 |
5002 | = | 15E3 | 5002 | = | 15E3 | ||
5004 | = | 68F2 | 5004 | = | 68F2 | ||
5006 | = | 8700 | 5006 | = | 8700 | ||
5008 | = | 592A | 5008 | = | 592A | ||
6000 | = | 0005 | 6000 | = | 0005 | ||
6002 | = | 00005000 | 6002 | = | 00005000 | ||
6006 | = | 6006 | = | 6779 |
Odredite duljinu ASCII poruke. Svi su znakovi 7-bitne ASCII vrijednosti sa MSB=0. 32 bitna varijabla START s adrese 6000 sadrži početnu adresu niza znakova među kojima se nalazi poruka. Početni znak poruke je $02 (STX), a krajnji $03 (ETX). Spremite duljinu poruke (broj znakova između STX i ETX) na adresu 6004.
Ulaz: | 5000 | = | 47 ('G') | Izlaz: | 5000 | = | 47 ('G') |
5001 | = | 02 (STX) | 5001 | = | 02 (STX) | ||
5002 | = | 47 ('G') | 5002 | = | 47 ('G') | ||
5003 | = | 4F ('O') | 5003 | = | 4F ('O') | ||
5004 | = | 03 (ETX) | 5004 | = | 03 (ETX) | ||
6000 | = | 00005000 | 6000 | = | 00005000 | ||
6004 | = | 6004 | = | 02 |
Pronađite u danom stringu (nizu ASCII znakova) zadnji ne "blank" znak. Početna adresa stringa sadržana je u varijabli START s adrese $6000. Kraj stringa označen je sa znakom CR ($0D). Spremite adresu zadnjeg ne "blank" znaka na adresu $6004.
Ulaz: | 5000 | = | 47 ('G') | Izlaz: | 5000 | = | 47 ('G') |
5001 | = | 20 (' ') | 5001 | = | 20 (' ') | ||
5002 | = | 47 ('G') | 5002 | = | 47 ('G') | ||
5003 | = | 20 (' ') | 5003 | = | 20 (' ') | ||
5004 | = | 0D (CR) | 5004 | = | 0D (CR) | ||
6000 | = | 00005000 | 6000 | = | 00005000 | ||
6004 | = | 6004 | = | 00005002 |
Zamijenite sve znakove poslije decimalne točke, u danom stringu koji predstavalja decimalni broj, s ASCII prazninama ("blank"). Početna adresa stringa dana je varijablom START s adrese $6000. Duljina stringa spremljena je u varijabli LENGTH s adrese $6004. Možete pretpostaviti da se string sastoji od isključivo znamenki '0',...,'9' ($30,...,$39) i decimalne točke '.' ($2E).
Ulaz: | 5000 | = | 37 ('7') | Izlaz: | 5000 | = | 37 ('7') |
5001 | = | 31 ('1') | 5001 | = | 31 ('1') | ||
5002 | = | 2E ('.') | 5002 | = | 2E ('.') | ||
5003 | = | 32 ('2') | 5003 | = | 20 (' ') | ||
5004 | = | 38 ('8') | 5004 | = | 20 (' ') | ||
6000 | = | 00005000 | 6000 | = | 00005000 | ||
6004 | = | 0005 | 6004 | = | 0005 |
Provjerite da li su tri niza ASCII znakova jednaka. Početne adrese stringova dane su 32 bitnim varijablama START1, START2, START3 s adresa $6000, $6004, $6008. Prvi bajt svakog stringa označava duljinu tog stringa u bajtovima. Ako su stringovi jednaki postavi varijablu MATCH s adrese $600C na 0, inače postavi na -1.
Ulaz: | 5000 | = | 03 | Izlaz: | 5000 | = | 03 |
5001 | = | 31 ('1') | 5001 | = | 31 ('1') | ||
5002 | = | 2E ('.') | 5002 | = | 2E ('.') | ||
5003 | = | 32 ('2') | 5003 | = | 32 ('2 ') | ||
5004 | = | 03 | 5004 | = | 03 | ||
5005 | = | 31 ('1') | 5005 | = | 31 ('1') | ||
5006 | = | 2E ('.') | 5006 | = | 2E ('.') | ||
5007 | = | 32 ('2') | 5007 | = | 32 ('2') | ||
5008 | = | 03 | 5008 | = | 03 | ||
5009 | = | 31 ('1') | 5009 | = | 31 ('1') | ||
500A | = | 2E ('.') | 500A | = | 2E ('.') | ||
500B | = | 39 ('9') | 500B | = | 39 ('9') | ||
6000 | = | 00005000 | 6000 | = | 00005000 | ||
6004 | = | 00005004 | 6004 | = | 00005004 | ||
6008 | = | 00005008 | 6008 | = | 00005008 | ||
600C | = | 600C | = | FF |
Neka su nam dana 2 stringa. Početna adresa stringova sadržana je u varijablama START1 i START2 s adresa $6000 i $6004. Početni bajt stringa označava njegovu duljinu. Dodajte drugi string prvome i zapišite novi string na adresu $6010. (Ne zaboravite i za novi string postavati prvi bajt na njegovu duljinu).
Ulaz: | 5000 | = | 03 | Izlaz: | 5000 | = | 03 |
5001 | = | 31 ('1') | 5001 | = | 31 ('1') | ||
5002 | = | 2E ('.') | 5002 | = | 2E ('.') | ||
5003 | = | 32 ('2') | 5003 | = | 32 ('2 ') | ||
5004 | = | 04 | 5004 | = | 04 | ||
5005 | = | 33 ('3') | 5005 | = | 33 ('3') | ||
5006 | = | 35 ('5') | 5006 | = | 35 ('5') | ||
5007 | = | 33 ('3') | 5007 | = | 33 ('3') | ||
5008 | = | 33 ('3') | 5008 | = | 33 ('3') | ||
6000 | = | 00005000 | 6000 | = | 00005000 | ||
6004 | = | 00005004 | 6004 | = | 00005004 | ||
6010 | = | 6010 | = | 07 | |||
6011 | = | 6011 | = | 31 ('1') | |||
6012 | = | 6012 | = | 2E ('.') | |||
6013 | = | 6013 | = | 32 ('2 ') | |||
6014 | = | 6014 | = | 33 ('3') | |||
6015 | = | 6015 | = | 35 ('5') | |||
6016 | = | 6016 | = | 33 ('3') | |||
6017 | = | 6017 | = | 33 ('3') |
Provjerite koji je, od dana 2 stringa, leksikografski veći. Početna adresa stringova sadržana je u varijablama START1 i START2 s adresa $6000 i $6004. Stringovi imaju jednaku duljinu koja je sadržana u 16 bitnoj varijabli LENGTH s adrese $6008. Ako je prvi string veći postavite 1 na adresu $6010. Ako su stringovi jednaki postavite 0 na adresu $6010. Inače, postavite -1 na adresu $6010.
Ulaz: | 5000 | = | 43 ('C') | Izlaz: | 5000 | = | 43 ('C') |
5001 | = | 41 ('A') | 5001 | = | 41 ('A') | ||
5002 | = | 54 ('T') | 5002 | = | 54 ('T') | ||
5003 | = | 42 ('B') | 5003 | = | 42 ('B') | ||
5004 | = | 41 ('A') | 5004 | = | 41 ('A') | ||
5005 | = | 54 ('T') | 5005 | = | 54 ('T') | ||
6000 | = | 00005000 | 6000 | = | 00005000 | ||
6004 | = | 00005003 | 6004 | = | 00005003 | ||
6008 | = | 0003 | 6008 | = | 0003 | ||
6010 | = | 6010 | = | 01 |
Konvertirajte vrijednost varijable ADIGIT s adrese $6000 iz ASCII znaka u odgovarajući heksadekadski broj i spremite rezultat u varijablu HDIGIT s adrese $6001.
Ulaz: | 6000 | = | 43 ('C') | Izlaz: | 6000 | = | 43 ('C') |
6001 | = | 6001 | = | 0C |
Konvertirajte vrijednost varijable CODE s adrese $6000 iz sedmosegmentnog oblika (pogledati vježbe za objašnjenje) u decimalan broj te spremite rezultat na adresu $6010.
Ulaz: | 6000 | = | 4F | Izlaz: | 6000 | = | 4F |
6010 | = | 6010 | = | 03 |
Konvertirajte vrijednost varijable NUMBER s adrese $6000 u BCD oblik te spremite rezultat na adresu $6010. Možete pretpostaviti da je vrijednost prirodan broj manji od 10000.
Ulaz: | 6000 | = | 1C52 | Izlaz: | 6000 | = | 1C52 |
6010 | = | 6010 | = | 72 | |||
6011 | = | 6011 | = | 50 |
Oduzmite dva 56-bitna broja. Prvi se broj nalazi na adresama 6000-6006, a drugi na adresama 6010-6016. Spremite sumu na adrese 6000-6006. Možete pretpostaviti da je prvi broj veći ili jednak drugom.
Ulaz: | 6000 | = | 12 | Izlaz: | 6000 | = | 00 |
6001 | = | 34 | 6001 | = | 00 | ||
6002 | = | 56 | 6002 | = | 00 | ||
6003 | = | 78 | 6003 | = | 00 | ||
6004 | = | 9A | 6004 | = | 00 | ||
6005 | = | BC | 6005 | = | 00 | ||
6006 | = | DE | 6006 | = | 00 | ||
6010 | = | 12 | 6010 | = | 12 | ||
6011 | = | 34 | 6011 | = | 34 | ||
6012 | = | 56 | 6012 | = | 56 | ||
6013 | = | 78 | 6013 | = | 78 | ||
6014 | = | 9A | 6014 | = | 9A | ||
6015 | = | BC | 6015 | = | BC | ||
6016 | = | DE | 6016 | = | DE |
Oduzmite dva BCD broja. Duljina (u bajtovima) dana je varijablom LENGTH s adrese $6000. Najznačajniji bajt prvog broja nalazi se na adresi $6010, a najznačajniji bajt drugog broja nalazi se na adresi $6020. Spremite sumu na adresu $6010.
Ulaz: | 6000 | = | 02 | Izlaz: | 6000 | = | 02 |
6010 | = | 12 | 6010 | = | 00 | ||
6011 | = | 34 | 6011 | = | 00 | ||
6020 | = | 12 | 6020 | = | 12 | ||
6021 | = | 34 | 6021 | = | 34 |
Izračunajte najveći zajednički dijelitelj 16-bitnog cijelog broja s adrese $6000 i 16-bitnog cijelog broja s adrese $6010. Rezultat spremite na adresu $6020 kao 16-bitni broj.
Ulaz: | 6000 | = | 000F (15) | Izlaz: | 6000 | = | 000F (15) |
6010 | = | 000C (12) | 6010 | = | 000C (12) | ||
6020 | = | 6020 | = | 0003 (3) |
Pretvorite 32-bitni nenegativni broj s adrese $6000 u binarni ASCII prikaz te spremite rezutat na adresu $6020. Početne nule zanemarite, a duljinu preostalog ASCII niza zapišite na adresu $6010 kao 32-bitnu vrijednost.
Ulaz: | 6000 | = | 0000000A | Izlaz: | 6000 | = | 0000000A |
6010 | = | 6010 | = | 00000004 | |||
6020 | = | 6020 | = | 31 ('1') | |||
6021 | = | 6021 | = | 30 ('0') | |||
6022 | = | 6022 | = | 31 ('1') | |||
6023 | = | 6023 | = | 31 ('0') |
Izbacite vrijednost, ako se vec nalazi u listi, 16 bitne varijable ITEM s adrese $6000 iz liste 16 bitnih vrijednosti. Adresa prvog elementa liste nalazi se na adresi $6010, a prvi element sadrži duljinu liste. Lista može imat više istih elemenata. U tom slučaju izbacite sve odgovarajuće.
Ulaz: | 6000 | = | D010 | Izlaz: | 6000 | = | D010 |
6010 | = | 00006020 | 6010 | = | 00006020 | ||
6020 | = | 0002 | 6020 | = | 0001 | ||
6022 | = | D010 | 6022 | = | 3F3F | ||
6024 | = | 3F3F | 6024 | = | 3F3F |
Dodajte vrijednost 16 bitne varijable ITEM s adrese $6000 u uzlazno sortiranu listu nenegativnih 16 bitnih vrijednosti tako da se sortiranost očuva. Ako se broj već nalazio u listi onda ga ne treba dodavati još jednom. Adresa prvog elementa liste nalazi se na adresi $6010, a prvi element liste sadrzi duljinu liste.
Ulaz: | 6000 | = | 0002 | Izlaz: | 6000 | = | 0002 |
6010 | = | 00006020 | 6010 | = | 00006020 | ||
6020 | = | 0002 | 6020 | = | 0003 | ||
6022 | = | 0001 | 6022 | = | 0001 | ||
6024 | = | 0003 | 6024 | = | 0002 | ||
6026 | = | 6026 | = | 0003 |
Sortirajte listu 4 bitnih vrijednosti (broj se nalazi u 4 najmanje značajna bita danog bajta) uzlazno pomoću "bubble" sorta. Adresa prvog elementa liste dana je varijablom LIST s adrese $6000, a prvi element sadrzi duljinu liste (bez početnog člana koji predstavlja duljinu). Mozete pretpostaviti da će lista imati barem 2 elementa.
Ulaz: | 6000 | = | 00006010 | Izlaz: | 6000 | = | 00006010 |
6010 | = | 03 | 6010 | = | 03 | ||
6011 | = | 03 | 6011 | = | 11 | ||
6012 | = | 11 | 6012 | = | 02 | ||
6013 | = | 02 | 6013 | = | 03 |
Zbrojite sve 16 bitne vrijednosti u danoj, uzlazno sortiranoj, vezanoj listi cijelih brojeva i sumu dodajte u vezanu liste na odgovarajuće mjesto. Adresa prvog člana vezane liste nalazi se na adresi $6000. Element vezane liste sastoji se od 16 bita (vrijednost) i 32 bita (adresa sljedećeg člana). Kao NULL pokazivač možete koristiti adresu $FFFFFFFF.
Sortirajte dvostruko vezanu listu 16 bitnih cijelih brojeva uzlazno. Adresa prvog člana vezane liste nalazi se na adresi $6000. Element vezane liste sastoji se od 16 bita (vrijednost), 32 bita (adresa prethodnog člana) i još 32 bita (adresa sljedećeg člana). Kao NULL pokazivač možete koristiti adresu $FFFFFFFF.