http://ci5.speccy.cz
LOAD "world"

SinDiKat

ZX Magazin

hw.speccy.cz

ShuCon

LOGOUT

Softhouse ZX Spectrum

http://ci5.speccy.cz/assembler/0dil-priprava-assembleru.php
Assembler
začínáme s assemblerem

0.díl: příprava assembleru
2. 1. 2005 13:29 – rubrika Assembler

Pro všechny naše příklady a úkoly budeme potřebovat nějak přeložit zdrojový text do spustitelné podoby. Vzhledem k tomu, že se dnes již nepoužívá metoda programování přímo na speccy, i my se budeme učit používat PC (Pomocný Computer).

Nejprve budeme potřebovat nějaký slušný textový editor. Na Linuxu je jich spousty, pro začátek stačí Kate, Kwrite nebo obyčejný mc. Windows uživatelé musí nejprve stahnout něco normálního, notepad se dá přinejhorším použít.

Pak musíme stáhnout vlastní překladač. Tady používáme AS (http://john.ccac.rwth-aachen.de:8000/as/index.html). AS vyprodukuje soubor s binárním obsahem, takže ještě musíme mít program bin2tap (http://zeroteam.sk/utils.html).

Nakonec potřebujeme slušný emulátor, na kterém si přeložený kód vyzkoušíme. Pro Windows znám jen RealSpec a pro Linux se zdá býti slušný Fuse, ale RealSpecu nešahá ani po kolena, bohužel.

Soubory se zdrojovými texty ukládáme s příponou a80, na začátek textu vkládáme toto:

          cpu  z80undoc
          relaxed on

První direktiva oznámí překladači, jaký je použitý jazyk (překladač umí více jazyků) a druhý umožní používat pro zápis hexa a binárních čísel něco podobného jako PROMETHEUS (toto se hodí hlavně při převodu zdrojáků z PROMETHEA do ASu):

      ld   hl,$25AB      ;hexa číslo
      ld   a,%10101010   ;binární číslo
      ld   a,@15         ;osmičkové číslo

Jinak lze pro zápis čísel použít tyto syntaxe:

      ld   hl,10000        ;dekadicky
      ld   de,25ABh        ;hexadecimálně
      ld   a,1001b         ;binární zápis
      ld   b,15o           ;osmičková soustava

Další odlišnost od PROMETHEA je zápis retězců:

      db  "Text1"         ;normální text
      db  "Text",'a'+128  ;text s posledním invertovaným znakem

      db  'A'             ;pouze jeden znak
      dw  65535           ;16 bitové číslo
      db  255             ;8 bitové číslo
      ds  16              ;definuje prostor 16 bytů

Zdrojový kód přeložíme příkazem takto:

Toto vyprodukuje soubor s koncovkou .p, ze kterého je třeba vyrobit binárku:

Z binárky vyrobíme pomocí bin2tap TAPku už se zaváděcím Basicem, abychom si ušetřili práci:

Pak už jen nasměrujeme emulátor na výslednou TAPku a sledujeme výplod naší usilovné práce.

Za domácu úlohu si skúste preložiť nasledujúci text:

sum.a80:

      cpu z80undoc
      relaxed on

MAIN  ld  a,h
      and 31
      ld  h,a
      ld  de,16384
      ld  bc,6144
      ldir
      ld  a,191
      in  a,(254)
      rra
      jr  c,MAIN
      ret

Tiež si vyskúšajte zapísať čísla v rôznych číselných sústavách, zapísať chybné čísla (napríklad 16384 nahraďte 16i) alebo chybné inštrukcie (ldir zameňte za ldiruj) a sledujte chybové hlásenia.

Další články v seriálu:
Vytisknout článek

Autor: SweetKomentářů: 21


Starší příspěvky:

Novější příspěvek: 1.díl: znaky – aktualizováno - 2. 1. 2005

Úplně prehistorické příspěvky najdete v archívu rubriky.


Komentáře:

[1] Logout – 2.1.2005 13:49

je to astraal masaker; mb-maniax supports seriál !!!

[2] Shrek (web) – 2.1.2005 15:11

Jen tak dal ... tesim se na dalsi dily :)

[3] sweet (web) – 3.1.2005 19:13

Pro Linux jsem si připravil krátký skript, co ze zdrojového textu vygeneruje TAPku i se zaváděcím Basicem:

#!/bin/sh

asl $1.a80 -L -E $1.err

p2bin $1.p -r \$-\$ -l 0

if [ "$3" = "" ]

then

bin2tap $1.bin -o $1.tap -b -a $2 -c $(($2-1)) -r $2

else

bin2tap $1.bin -o $1.tap -b -a $2 -c $3 -r $2

fi

rm -f $1.p $1.bin

První parametr je název zdrojáku bez přípony a druhý je startovní adresa, třetí parametr je nepovinný a je to adresa pro CLEAR. Pokud nebude zadán, bude adresa vypočítána (2.parametr-1).

příklad: makebas test 25000 nebo makebas test 25000 24575.

[4] mikezt (web) – 4.1.2005 21:39

domacu ulohu uz mate odskusanu?

[5] hualahyja – 6.1.2005 0:29

Super vec. Preco je koniec (Domaca uloha) v slovenskom jazyku, ked ostatny clanok je v cestine?

[6] ellvis (web) – 6.1.2005 0:45

odskusam, nastudujem a vratim sa s vysledkami. Sweet, dik za clanok, mantaci ako ja to potrebuju!

[7] mikezt (web) – 6.1.2005 0:47

domaca uloha je v slovencine preto, lebo som ju pisal ja. serial pripravuje Sweet a ja s nim spolupracujem.

[8] Shrek (web) – 8.1.2005 15:58

Tak jsem to odzkousel, ukazal babicce, vsem sousedkam, jednomu bezdomovcovi pred barakem (vyzral mi kokot flasku rumu) a vsem se to libilo :) tesim se na dalsi priklady :)

[9] sweet (web) – 3.2.2005 14:34

Tak doufam, ze ukazujes babicce, vsem sousedkam, jednomu bezdomovcovi pred barakem vsechny ostatni dily, kdyz se jim to tak libi.

[10] pospa – 16.2.2005 15:45

Chlapi, to snad nemyslíte vážně. Zkoušet programovat spektrum na emulátoru? To je jako honit si péro u časopisu, žrát jogurt bez tuku nebo chlemtat kafe bez kofeinu. Styďte se.

Skočte si k babičce na půdu, opraště Merkura nbo Oravan (barevnej) zapněte ZX, loudněte (zásadně z magneťáku, běda jak někdo použije flašku) GENS a MONS, a tak po týdnu probdělých večerů můžete mluvit o tom, že jste začali programovat ZX. :)))))))

[11] mikezt (web) – 17.2.2005 17:09

pospa: strasne rychlo sa odjeb do pyce. nemam rad totalitu, aby nam nejaky niemand prikazoval ako mame programovat.

a ked uz nahravat do zx, tak jedine klincom: http://www.zeroteam.sk/gfx/photos/kliniec.jpg

[12] pospa – 17.2.2005 23:29

to mikez:

1) Tvoji první větu jsem nepochopil. Opravdu.

2) Jestli ti někdo cokoli přikazuje proti tvé vůli, je to především věc vás dvou. Já Vám nic nepřikazoval.

3) Třetí věta mi taky nic neříká.

Shrnuto mi vychází obrázek o tobě jako nuly z nulotýmu.

to all:

Pokud můj příspěvek zde někoho urazil, omlouvám se. Příště se zdržím vulgarizmů. Snažil jsem se použít smajlíků pro zlehčení příspěvku.

Jsem velmi rád, že vidím žijící web o fenoménu ZX. Já sám jsem svoje první Spectrum postavil v roce 1987 o rok dřív to byl osmibit s I8080 vybavený mikrobasicem bratří Smutných. Rád bych vám zde přispěl, ale zásoby kazet s "úžasnými projekty" jsou nenávratně pryč, jediné co mi zbylo jsou zásoby HW: můj první ZX postavený na kopii desky Issue2, originál ZX48 s crackerem Lamač - Troler - Císař, PLUSko, 81 a nějaké díly. :)

Pokud budu k nějakému probíranému tématu něco vědět, ozvu se.

Omlouvám se za off topic.

P.S. nemáte (snad) někdo k okopírování komentovaný výpis MikroBasicu ? :)

[13] Kazatel Logout – 18.2.2005 13:13

ja, Kazatel Logout, pravy hlas Jedine a Vecne Symbiozy pravim: odstup Satane, jehoz jmeno budiz prokleto a zapomenuto, a neber nam vymozenosti doby, k nim ZX Spectrum diky sve Genialni Nesmrtelnosti evolvovalo ! CompactFlash jest Mediem Posvatnym, divIDE Zarizenim Jedinecnym a AS Nastrojem Bozim; Cokoliv co napomaha Developmentu Svatemu budiz Blahoreceno !!!

[14] Shrek (web) – 18.2.2005 13:23

Mily pospo (nabo jak se to sklonuje), tvoje prirovnani programovani na ZX s jezenim nizkotucneho jogurtu je velmi z cestne. Jelikoz jezeni nizkotucnych jogurtu je ouplne na kokot a neprispiva to zdravi (nebot kazdej vi, ze spravne jidlo, ma bejt pripalene, tucne a plne cholesterolu), kdezto programovani na ZXku je velmi navykove a jedine a prave programovani.

To co jsi napsal beru spise jako ulet retardovaneho jedince a jedine co te zachranilo pred osobni navstevou me malickosti byl nasledujici prispevek ktery jsi napsal :-)

Vez ze ZX Spectrum je ten jediny a pravy pocitac.

Hawg domluvil jsem :)

[15] +GAMA – 25.2.2005 12:58

No tak, nebudte na nej zli.

Chtel jen rict, ze lepsi, nez pouzivat Ass, je kodovat rovnou na Spectru.

A vite prece, ze ani ja Ass nepouzivam - snad nebudu kvuli tomu zatracen :o)

dex of MB-Maniax

[16] sweet – 25.2.2005 13:01

Nebudes zatracen, protoze nam as nevymlouvas. Neprikazujes nam nahravat z tape.

sweet of ci5

[17] Noby – 5.3.2006 18:43

Mno tak hlásím, že úkol konečně splněn. (více než po roce, haňba na mne!)

[18] Martin (web) – 12.8.2007 10:33

teda napsat sem prispevek je peklo, porad to pise, ze je vyhodnocen jako spam! :)

[19] sweet – 12.8.2007 14:35

[18] Napiš mi, ať přijdem na slovo, které nám tam hapruje.

[20] Martin – 9.9.2007 11:48

mam takovej dotaz ;-)

bin2tap soubor.bin -a adresa_zacatku -b

jak poznat co mam zadat misto_adresa zacatek?

dik

[21] sweet (web) – 17.9.2007 7:39

Adresa zacatku je ta, kde ten kod zacina. Ve zdrojaku by melo byt oznaceno jako org. Pred vlastni zdrojak zadej org "adresa" a tu pak dej jako adresu zacatku.


Přidání komentáře
Identifikace autora

Váš komentář

Nepoužívejte HTML značky ani entity, pouze text. URL začínající http:// nebo ftp:// budou zobrazeny jako odkazy (za URL nechejte mezeru, aby byl rozpoznán konec). Vložit můžete maximálně tři odkazy, jinak bude rozpoznán jako spam. Na jiné komentáře se odkazujte zápisem [XX], kde XX je číslo příspěvku. Jeden enter se zformátuje jako nový řádek, více enterů za sebou jako nový odstavec.