 |
nedoPC.orgCommunity of electronics hobbyists established in 2002 |
 |
...
Author |
Message |
Lavr
Supreme God
Joined: 21 Oct 2009 09:08 Posts: 7777 Location: Россия
|
Джентльмены, а кто умеет написать редактор с разделяющимся окном, как у M$ ? Много я пользовал разных ассемблерных редакторов с подсветкой и прочими "блэкджеками", но чтобы было разделение окна - такого не встречалось... А между тем для программирования это очень удобно! У M$ даже под ДОС у Edit-a экран делился... Сегодня "пошпионил" как это сделано у Ворда: судя по ID окон, как я и предполагал, это два отдельных RichEdit-a, и "палка"-разделитель - это тоже "окно" со своим ID. Но как-то эти RichEdit-ы должны синхронизироваться, т.к. текст в них изменяется синхронно...
_________________ iLavr
|
28 Nov 2017 00:01 |
|
 |
Paguo-86PK
Fanat
Joined: 12 Apr 2011 21:43 Posts: 64 Location: Tashkent
|

Кст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)…
Главная особенность такого синтаксиса в том, что в одной строке можно разместить ряд инструкций, разделяя их пробелом. А если использовать и верхний регистр, то можно обойтись без пробела. Так: можно записать: - Либо как «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»… "Например" P.S.: Извиняюсь за флуд… Если идея привлечёт положительное внимание и если на досуге проработаю всё более детально (в голове), то создам отдельную тему.
|
18 Mar 2018 00:00 |
|
 |
Shaos
Admin
Joined: 09 Jan 2003 00:22 Posts: 17381 Location: Colorado
|
Вроде был какой-то ассемблер для 8080, где можно было просто писать A=B
|
18 Mar 2018 03:31 |
|
 |
shoorick
Doomed
Joined: 05 Nov 2007 06:08 Posts: 411 Location: Украина
|
|
18 Mar 2018 08:03 |
|
 |
Paguo-86PK
Fanat
Joined: 12 Apr 2011 21:43 Posts: 64 Location: Tashkent
|
Этo наверное аналог Sphinx C-- типа был? Но я говорю о мнемониках, а не о языке. Т.е. если мнемоники переименовать и дополнить арифметическими знаками, то можно из них выстраивать мнемо-формулы (а не математические формулы переводить в код). Вот, моя первая попытка: Выглядит ужасно  , но гораздо компактнее ассемблера. Здесь требуется основательнее продумать синтаксис P.S.: Попробовал дизассемблером заняться… "«МОНИТОР»"
|
19 Mar 2018 03:12 |
|
 |
shoorick
Doomed
Joined: 05 Nov 2007 06:08 Posts: 411 Location: Украина
|

fasmg довольно мощьнъ: на нем вполне можно значительно повысить уровень, хотя вряд ли будет легко реализовать синтаксис подобный С или Васику, но существенный комфорт можно достичь. Был еще язык такой: PL/M-80 - я на нем не писал, но попадалась мне книжка о нем, листал с удовольствием. Сложилось у меня впечатление, что сквозь процедурный внешний вид просматривается нечто вроде высокоуровневого ассемблера  fasmg - реализация некоторых 16/32-битных команд для 8080: "extra85.inc" |  |  |  | Code: ;======================================================================= ; extra commands for 8080/8085 as existing commands combinations ;======================================================================= include "warn.inc" ;----------------------------------------------------------------------- ;element register ;element B? : register + 0000h ;element C? : register + 0FF1h ;element D? : register + 0112h ;element E? : register + 0FF3h ;element H? : register + 0224h ;element L? : register + 0FF5h ;element M? : register + 0FF6h ;element A? : register + 0FF7h ;element SP? : register + 0F3Fh ;element PSW? : register + 03FFh ;; ||| ;; ||\- any 8-bit register operation ;; |\-- any 16-bit operation, except push&pop ;; \--- push&pop operations ;----------------------------------------------------------------------- macro MOVX? r1,r2 ; r1h:r1l <- r2h:r2l reg16 dest,r1 reg16 src,r2 if dest = 3 | src = 3 err "Bad register pair" else db 040h or dest shl 4 or src shl 1 db 040h or dest shl 4 or src shl 1 or 9 end if end macro ;----------------------------------------------------------------------- macro ADDX? r1,r2 ; r1h:r1l = r1h:r1l + r2h:r2l reg16 dest,r1 reg16 src,r2 if dest = 3 | src = 3 err "Bad register pair" else if dest = 2 warn 'Usage of ADDX H,X (DAD possible)' end if db 040h or 7 shl 3 or dest shl 1 or 1 ; mov a,r1l db 080h or src shl 1 or 1 ; add r2l db 040h or dest shl 4 or 8 or 7 ; mov r1l,a db 040h or 7 shl 3 or dest shl 1 ; mov a,r1h db 088h or src shl 1 ; adc r2h db 040h or dest shl 4 or 7 ; mov r1h,a end if end macro ;----------------------------------------------------------------------- macro ADCX? r1,r2 ; r1h:r1l = r1h:r1l + r2h:r2l reg16 dest,r1 reg16 src,r2 if dest = 3 | src = 3 err "Bad register pair" else db 040h or 7 shl 3 or dest shl 1 or 1 ; mov a,r1l db 088h or src shl 1 or 1 ; adc r2l db 040h or dest shl 4 or 8 or 7 ; mov r1l,a db 040h or 7 shl 3 or dest shl 1 ; mov a,r1h db 088h or src shl 1 ; adc r2h db 040h or dest shl 4 or 7 ; mov r1h,a end if end macro ;----------------------------------------------------------------------- macro SUBX? r1,r2 ; r1h:r1l = r1h:r1l - r2h:r2l reg16 dest,r1 reg16 src,r2 if dest = 3 | src = 3 err "Bad register pair" else db 040h or 7 shl 3 or dest shl 1 or 1 ; mov a,r1l db 090h or src shl 1 or 1 ; sub r2l db 040h or dest shl 4 or 8 or 7 ; mov r1l,a db 040h or 7 shl 3 or dest shl 1 ; mov a,r1h db 098h or src shl 1 ; sbb r2h db 040h or dest shl 4 or 7 ; mov r1h,a end if end macro ;----------------------------------------------------------------------- macro SBBX? r1,r2 ; r1h:r1l = r1h:r1l - r2h:r2l reg16 dest,r1 reg16 src,r2 if dest = 3 | src = 3 err "Bad register pair" else db 040h or 7 shl 3 or dest shl 1 or 1 ; mov a,r1l db 098h or src shl 1 or 1 ; sbb r2l db 040h or dest shl 4 or 8 or 7 ; mov r1l,a db 040h or 7 shl 3 or dest shl 1 ; mov a,r1h db 098h or src shl 1 ; sbb r2h db 040h or dest shl 4 or 7 ; mov r1h,a end if end macro ;----------------------------------------------------------------------- macro RALX? r1 reg16 dest,r1 if dest = 3 err "Bad register pair" else if dest = 2 warn "Usage of RALX H (DAD possible)" end if db 040h or 7 shl 3 or dest shl 1 or 1 ; mov a,r1l db 017h ; ral db 040h or dest shl 4 or 8 or 7 ; mov r1l,a db 040h or 7 shl 3 or dest shl 1 ; mov a,r1h db 017h ; ral db 040h or dest shl 4 or 7 ; mov r1h,a end if end macro ;----------------------------------------------------------------------- macro RARX? r1 reg16 dest,r1 if dest = 3 err "Bad register pair" else db 040h or 7 shl 3 or dest shl 1 ; mov a,r1h db 01Fh ; rar db 040h or dest shl 4 or 7 ; mov r1h,a db 040h or 7 shl 3 or dest shl 1 or 1 ; mov a,r1l db 01Fh ; rar db 040h or dest shl 4 or 8 or 7 ; mov r1l,a end if end macro ;----------------------------------------------------------------------- ; ;----------------------------------------------------------------------- macro PUSHX? push b push d push h end macro ;----------------------------------------------------------------------- macro POPX? pop h pop d pop b end macro ;----------------------------------------------------------------------- macro PUSHA? push psw pushx end macro ;----------------------------------------------------------------------- macro POPA? popx pop psw end macro ;----------------------------------------------------------------------- ; ;----------------------------------------------------------------------- macro SHLD32? addr ; DEHL -> addr shld addr xchg shld addr+2 xchg end macro macro LHLD32? addr ; DEHL <- addr lhld addr+2 xchg lhld addr end macro ;----------------------------------------------------------------------- macro LXI32? data ; DEHL = data lxi h,data and 65535 lxi d,data shr 16 end macro ;----------------------------------------------------------------------- |  |  |  |  |
немного не по теме, но можно, например, взять реализацию команд Z80 для fasmg и, подкорректировав специфичные команды, сделать кроссассемблер с Z80 на 8080 ну и т.д. - полет фантазии ограничен наличием времени и желания 
|
20 Mar 2018 01:56 |
|
|
Who is online |
Users browsing this forum: No registered users and 2 guests |
|
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
|
|