nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 17 Jan 2021 07:03



Reply to topic  [ 2 posts ] 
Простой синтаксис ассемблера i8080 
Author Message
Maniac
User avatar

Joined: 12 Apr 2011 21:43
Posts: 218
Location: Tashkent
Reply with quote
Кстaти, извиняюсь, если не в тему.
Вот подумал недавно, почему под разные процессоры можно найти множество диалектов тех же Бейсиков, тогда как ассемблер - всегда один и жёстко завязан на документации процессора.
Ведь под тот же x86 имеется как Intel-синтаксис, так и AT&T.
Вот и посмотрел я в сторону процессора 6502 с его синтаксисом. Ведь i8080 не так уж сильно отличается от 6502, чтобы их ассемблеры совсем не совмещались…
То есть, вместо «mov b,a» можно было писать кратко «tab». Но, я пошёл дальше и ещё сильнее упростил синтаксис…
Вместо «mov b,a» пишешь просто «ab». Вместо «stax d» - просто «dea»… Сейчас поясню, почему…
Так, синтаксис коменды можно условно разбить на форматы «WXYZ», «XYZ»/«ZXY», «XY» и «X»/«Y».
  • «WXYZ»: HLBC (DAD B), HLDE (DAD D), HLHL (DAD H), HLSP (DAD SP);
  • «XYZ»: BCA (LDAX B), DEA (LDAX D), HLA (MOV A,M);
  • «ZXY»: ABC (STAX B), ADE (STAX D), AHL (MOV M,A);
  • «XY»: AB (MOV B,A), AC (MOV C,A)… MA (MOV A,M);
  • «X»: B (PUSH B), D (PUSH D), H (PUSH H), A (PUSH PSW);
  • «Y»: C (POP B), E (POP D), L (POP H), F (POP PSW)…

Главная особенность такого синтаксиса в том, что в одной строке можно разместить ряд инструкций, разделяя их пробелом. А если использовать и верхний регистр, то можно обойтись без пробела.
Так:
Code:
mov a,c
add l
mov c,a
mov a,b
adc h
mov b,a
можно записать:
  • Либо как «ca +l ac ba #h ab»;
  • Либо как «Ca+lAcBa#hAb»;
  • Либо как «(c+l b#h)»…
Как уже догадываетесь, «add l» обозначается как «+l», а вот «adc h» от обозначения «++h» сократился до «#h»… Соответственно, «sub e» - это «-e», а вот «sbb d» - от «--d» сокращён до «=d»…
 "Например"
Code:
  __0__ __1__ __2__ __3__ __4__ __5__ __6__ __7__ __8__ __9__ __A__ __B__ __C__ __D__ __E__ __F__
0|Nop  |Bci  |Bca  |++Bc |++B  |--B  |Bi   |<    |+Bc  |     |Abc  |--Bc |++C  |--C  |Ci   |>    |
 |_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|
1|     |Dei  |Dea  |++De |++D  |--D  |Di   |*    |+De  |     |Ade  |--De |++E  |--E  |Ei   |/    |
 |_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|
2|     |Hli  |     |++Hl |++H  |--H  |Hi   |     |+Hl  |     |     |--Hl |++L  |--L  |Li   |     |
 |_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|
3|     |Spi  |     |++Sp |++M  |--M  |Mi   |     |+Sp  |     |     |--Sp |++A  |--A  |Ai   |     |
 |_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|
4|Bb   |Bc   |Bd   |Be   |Bh   |Bl   |Bm   |Ba   |Cb   |Cc   |Cd   |Ce   |Ch   |Cl   |Cm   |Ca   |
 |_____|_____|_____|_____|_____|_____|/Bhl_|_____|_____|_____|_____|_____|_____|_____|/Chl_|_____|
5|Db   |Dc   |Dd   |De   |Dh   |Dl   |Dm   |Da   |Eb   |Ec   |Ed   |Ee   |Eh   |El   |Em   |Ea   |
 |_____|_____|_____|_____|_____|_____|/Dhl_|_____|_____|_____|_____|_____|_____|_____|/Ehl_|_____|
6|Hb   |Hc   |Hd   |He   |Hh   |Hl   |Hm   |Ha   |Lb   |Lc   |Ld   |Le   |Lh   |Ll   |Lm   |La   |
 |_____|_____|_____|_____|_____|_____|/HHl_|_____|_____|_____|_____|_____|_____|_____|/Lhl_|_____|
7|Mb   |Mc   |Md   |Me   |Mh   |Ml   |Hlt  |Ma   |Ab   |Ac   |Ad   |Ae   |Ah   |Al   |Am   |Aa   |
 |/Hlb_|/Hlc_|/Hld_|/Hle_|/Hlh_|/Hll_|_____|/Hla_|_____|_____|_____|_____|_____|_____|/Ahl_|_____|
8|+B   |+C   |+D   |+E   |+H   |+L   |+M   |+A   |#B   |#C   |#D   |#E   |#H   |#L   |#M   |#A   |
 |_____|_____|_____|_____|_____|_____|/+hl_|_____|_____|_____|_____|_____|_____|_____|/#hl_|_____|
9|-B   |-C   |-D   |-E   |-H   |-L   |-M   |-A   |=B   |=C   |=D   |=E   |=H   |=L   |=M   |=A   |
 |_____|_____|_____|_____|_____|_____|/-hl_|_____|_____|_____|_____|_____|_____|_____|/=hl_|_____|
A|&B   |&C   |&D   |&E   |&H   |&L   |&M   |&A   |^B   |^C   |^D   |^E   |^H   |^L   |^M   |^A   |
 |_____|_____|_____|_____|_____|_____|/&hl_|_____|_____|_____|_____|_____|_____|_____|/^hl_|_____|
B||B   ||C   ||D   ||E   ||H   ||L   ||M   ||A   |?B   |?C   |?E   |?E   |?H   |?L   |?M   |?A   |
 |_____|_____|_____|_____|_____|_____|/|hl_|_____|_____|_____|_____|_____|_____|_____|/?hl_|_____|
C|     |C    |Jf   |Jmp  |     |B    |     |     |     |     |Jz   |     |     |     |     |     |
 |_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|
D|     |E    |Jd   |     |     |D    |     |     |     |     |Jc   |     |     |     |     |     |
 |_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|
E|     |L    |Je   |     |     |H    |     |     |     |     |Jo   |     |     |     |     |     |
 |_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|
F|     |F    |Jp   |     |     |A    |     |     |     |     |Jm   |     |     |     |     |     |
 |_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|

P.S.: Извиняюсь за флуд…
Если идея привлечёт положительное внимание и если на досуге проработаю всё более детально (в голове), то создам отдельную тему.


18 Mar 2018 00:00
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
На мой взгляд, ассемблер как раз изобрели, чтобы очеловечить машинные коды...

А так-то в былые времена, когда я только спаял "Специалист" и еще не было ассемблера,
а только Монитор, так я наизусть помнил, что C9 - это RET (и код - короче этого слова!
и коды можно писать по 16 и больше штук в строку через пробел!) :roll:
Так ещё DEBUG даже в Венде 7 умеет... :)

Но потом появился компилятор ассемблера... к хорошему быстро привыкаешь... :D
Сейчас вот хочется и окно с контекстной подсветкой... и еще чтобы сплит окна попалам был! 8)

_________________
iLavr


11 Jan 2021 06:47
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 2 posts ] 

Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.