Rozdíl mezi ASM a strojovým kódem

dan67

Rozdíl mezi ASM a strojovým kódem
« kdy: 07. 03. 2026, 10:40:29 »
Ahoj všem,
mám volnější "víkendový" dotaz. V souvislostí znovuobjeveného ATARI 130XE (nedávný článek od M.Tauchmana) a  o programování pro ATARI 8bity (od P.Tišnovského).

Zavzpomínal jsem na své pozdně pubertální hrátky s Atari, pokusy o něco jako programování...

Assembler a strojový kod vnímám jako jedno a to samé. Stroják jsou jen čísla, ASM jsou místo "některých čísel" zkratky instrukcí procesoru. Jinak v tom zásadní rozdíl nevidím.
Kromě ulehčení v ASM editoru, který pomáhá se skoky, resp. adresací skoků. Což bych si mohl spočítat taky sám, stejně jako jsem si časem zapamatoval kody ASM instrukcí.
Případně přenositelnost, kdy stejná instrukce na jiném procesoru má jiný kod.

Nebo mi, jako laikovi, ještě něco uniká? V souvoslosti s 8bity, moderní procesory jsou jiná liga.
Nechystám se začít programovat, jen tak vzpomínám.
« Poslední změna: 07. 03. 2026, 10:44:32 od dan67 »


Re:ASM a strojový kod
« Odpověď #1 kdy: 07. 03. 2026, 11:06:33 »
Záleží na "kompilátoru". Některý uměly i složitější věci jako například makra. Ale jinak to víceméně vidím podobně - je to strojový kód v "lehce čitelnější" podobě.

Re:ASM a strojový kod
« Odpověď #2 kdy: 07. 03. 2026, 11:07:02 »
Divna otazka. I Photoshop muzete napsat ve strojovem kodu (pokud se predtim zasobite dostatecnym mnozstvim elixiru mladi nebo si poridite poradnej autismus). Jestli mezi psanim v assembleru a strojovem kodu nevidite rozdil, tak jste asi nepsal rozsahlejsi veci.

Re:Rozdíl mezi ASM a strojovým kódem
« Odpověď #3 kdy: 07. 03. 2026, 12:22:00 »
Assembler je program, který překládá zdrojový kód v jazyce symbolických adres. Přeneseně, ale chybně, se tak nazývá i ten jazyk.

Takže ty si ty adresy klidně můžeš spočítat ručně a nacvakat binární program přímo do paměti, jako se to dělalo třeba na tom PMI-80, nebo si je pojmenuješ slovy a on ti jejich hodnoty spočítá sám. Jinak ten kód píšeš pořád ve strojáku, akorát s pomocí mnemotechnických zkratek názvů instrukcí, a ne jejich číselného vyjádření. Viz Bowen's Cards: http://www.textfiles.com/programming/CARDS/

Re:Rozdíl mezi ASM a strojovým kódem
« Odpověď #4 kdy: 07. 03. 2026, 18:16:24 »
Radovan ma pravdu tak s polovice. Zabudol na tu najdolezitejsiu cast a pritom ju ma priamo pred ocami:

Jedna sa o JAZYK SYMBOLICKYCH ADRES.

To je ten zasadny rozdiel medzi strojakom a "assemblerom" (teda spravne jazykom symbolickych adres)

STROJAK: je jedno ci ho pisete rovno v hex kodoch alebo pouzivate mnemonicke pomocky (nazvy instrukcii). Pointa je, ze mate pevne vypocitane adresy skokov, podprogramov, dat, atd...
V pripade akejkolvek upravy kodu ste v riti a musite to prepocitat znova.

JAZYK SYMBOLICKYCH ADRES: Kludne mozete pouzit aj hex kody (tam, kde adresa nieje pevne "zasita" v kode instrukcie). Podstatne je, ze skoky su dane symbolickymi navestiami (a nie len skoky, ale v podstate vsetky adresy).
Realne adresy sa vypocitaju az pri preklade. A nerobite to rucne, ale prekladac sa postara.
Upravy kodu su easy...


Re:Rozdíl mezi ASM a strojovým kódem
« Odpověď #5 kdy: 07. 03. 2026, 21:40:24 »
ASM - rozumím a jsem schopen pochopit.
Strojový kód - změť hex znaků ( většinou ), kterou vím jak a kam nahrát, ale bez dalších pomůcek nechápu co dělá.

a6b

  • ***
  • 235
    • Zobrazit profil
    • E-mail
Re:Rozdíl mezi ASM a strojovým kódem
« Odpověď #6 kdy: 07. 03. 2026, 21:54:47 »
ASM - rozumím a jsem schopen pochopit.
Strojový kód - změť hex znaků ( většinou ), kterou vím jak a kam nahrát, ale bez dalších pomůcek nechápu co dělá.

ucit se hexa kody instrukci a parametru melo smysl maximalne u 8-bitovych pocitacu, dale uz to nema smysl.
ale assembler je dobre znat, zakladni smycky, podminky, nacitani dat.
assembler je dobry, ale blbeji se pracuje se strukturami. mi se spise prestava libit vysoce abstraktni kod a spise se vracim k cecku.

Re:Rozdíl mezi ASM a strojovým kódem
« Odpověď #7 kdy: Dnes v 02:37:02 »
Pointa je, ze mate pevne vypocitane adresy skokov, podprogramov, dat, atd...
Nebo také ne, pokud je to relokovatelný kód, který obsahuje relativní skoky a ostatní si počítá za běhu sám  ;)

Ale lepší, než psát tu román, bude příklad. Tohle je strojový kód:
Kód: [Vybrat]
14,31,186,10,1,180,9,205,33,195,72,101,108,108,111,32,87,111,114,108,100,33,36
Tohle je jazyk symbolických adres:
Kód: [Vybrat]
org 100h

push cs
pop ds
mov dx,text
mov ah,9
int 21h
ret

text: db 'Hello World!$'

Co je tohle?
Kód: [Vybrat]
org 100h

push cs
pop ds
mov dx,266
mov ah,9
int 21h
ret

db 'Hello World!$'

A něco na odlehčení: https://www.youtube.com/watch?v=rCuEoht4fGY

Re:Rozdíl mezi ASM a strojovým kódem
« Odpověď #8 kdy: Dnes v 11:35:49 »
Pointa je, ze mate pevne vypocitane adresy skokov, podprogramov, dat, atd...
Nebo také ne, pokud je to relokovatelný kód, který obsahuje relativní skoky a ostatní si počítá za běhu sám  ;)

Cely ten tvoj relokovatelny kod sa rozsype v momente, ked do neho vlozim dalsie instrukcie - tvoje relativne skoky budu ukazovat uplne inde ako treba.

Ale lepší, než psát tu román, bude příklad. Tohle je strojový kód:
Kód: [Vybrat]
14,31,186,10,1,180,9,205,33,195,72,101,108,108,111,32,87,111,114,108,100,33,36
Toto: "00 00 00 00 00" je tiez strojovy kod. Je lahko pochopitelny, relokovatelny, atd... Ale na zaklade tohto prikladu nebudem tvrdit, ze akykolvek strojovy kod je lahko pochopitelny, relokovatelny, atd...

Tohle je jazyk symbolických adres:
Kód: [Vybrat]
org 100h

push cs
pop ds
mov dx,text
mov ah,9
int 21h
ret

text: db 'Hello World!$'

To je ukazka, ako ma vyzerat kod, ktory bude funkcny a pouzitelny

Co je tohle?
Kód: [Vybrat]
org 100h

push cs
pop ds
mov dx,266
mov ah,9
int 21h
ret

db 'Hello World!$'

To je ukazka, ako to nerobit. Lebo potom pride niekto kto medzi "ret" a "db 'Hello World!$'" vlozi cokolvek (dalsie data, iny podprogram...) a si v riti.

A něco na odlehčení: https://www.youtube.com/watch?v=rCuEoht4fGY