;Macros.asm: ; Файл макросів для EnotVM32 ;Довга назва регістрів AA=0 AB=1 AC=2 AD=3 AE=4 AF=5 AG=6 AH_=7 AI=8 AJ=9 AK=10 AL_=11 AM=12 AN=13 AO=14 AP=15 AQ=16 AR=17 AS_=18 AT_=19 AU=20 AV=21 AW=22 AX_=23 AY=24 AZ=25 BA=26 BB=27 BC=28 BD=29 BE=30 BF=31 BG=32 BH_=33 BI=34 BJ=35 BK=36 BL_=37 BM=38 BN=39 BO=40 BP_=41 BQ=42 BR=43 BS=44 BT_=45 BU=46 BV=47 BW=48 BX_=49 BY=50 BZ=51 CA=52 CB=53 CC=54 CD=55 CE=56 CF=57 CG=58 CH_=59 CI=60 CJ=61 CK=62 CL_=63 CM=64 CN=65 CO=66 CP=67 CQ=68 CR=69 CS_=70 CT=71 CU=72 CV=73 CW=74 CX_=75 CY=76 CZ=77 DA=78 DB_=79 DC=80 DD_=81 DE=82 DF_=83 DG=84 DH_=85 DI_=86 DJ=87 DK=88 DL_=89 DM=90 DN=91 DO=92 DP_=93 DQ_=94 DR=95 DS_=96 DT_=97 DU_=98 DV=99 DW_=100 DX_=101 DY=102 DZ=103 EA=104 EB=105 EC=106 ED=107 EE=108 EF=109 EG=110 EH=111 EI=112 EJ=113 EK=114 EL=115 EM=116 EN=117 EO=118 EP=119 EQ_=120 ER=121 ES_=122 ET=123 EU=124 EV=125 EW=126 EX=127 EY=128 EZ=129 FA=130 FB=131 FC=132 FD=133 FE=134 FF=135 FG=136 FH=137 FI=138 FJ=139 FK=140 FL=141 FM=142 FN=143 FO=144 FP=145 FQ=146 FR=147 FS_=148 FT=149 FU=150 FV=151 FW=152 FX=153 FY=154 FZ=155 GA=156 GB=157 GC=158 GD=159 GE=160 GF=161 GG=162 GH=163 GI=164 GJ=165 GK=166 GL=167 GM=168 GN=169 GO=170 GP=171 GQ=172 GR=173 GS_=174 GT=175 GU=176 GV=177 GW=178 GX=179 GY=180 GZ=181 HA=182 HB=183 HC=184 HD=185 HE=186 HF=187 HG=188 HH=189 HI=190 HJ=191 HK=192 HL=193 HM=194 HN=195 HO=196 HP=197 HQ=198 HR=199 HS=200 HT=201 HU=202 HV=203 HW=204 HX=205 HY=206 HZ=207 IA=208 IB=209 IC=210 ID=211 IE=212 IF_=213 IG=214 IH=215 II=216 IJ=217 IK=218 IL=219 IM=220 IN_=221 IO=222 IP=223 IQ=224 IR=225 IS=226 IT=227 IU=228 IV=229 IW=230 IX=231 IY=232 IZ=233 JA_=234 JB_=235 JC_=236 JD=237 JE_=238 JF=239 JG_=240 JH=241 JI=242 JJ=243 JK=244 JL_=245 JM=246 JN=247 JO_=248 JP_=249 JQ=250 JR=251 JS_=252 JT=253 JU=254 JV=255 ; коротка назва регістрів A=0 B=1 C=2 D=3 E=4 F=5 G=6 H=7 I=8 J=9 K=10 L=11 M=12 N=13 O=14 P=15 Q=16 R=17 S=18 T=19 U=20 V=21 W=22 X=23 Y=24 Z=25 ;{232-239}{EXTR вход.дан.} YA=232 YB=233 YC=234 YD=235 YE=236 YF=237 YG=238 YH=239 ;{240-247}{EXTR виход.дан.} ZA=240 ZB=241 ZC=242 ZD=243 ZE=244 ZF=245 ZG=246 ZH=247 ;{248-255}{резерв} та CMP CMP1=254 CMP2=255 ; команди процесора Енот Macro nop_ {db $00} ;{NOP} Macro MOVrv Rg1,V { ; {mov Rg32,V} db $01 db Rg1 dd V} Macro MOVrr Rg1,Rg2 { ;{mov Rg32,Rg32} db $02 db Rg1 db Rg2} Macro MOVrm Rg1,DWA1 {;{mov Rg32,[DWA1]} db $03 db Rg1 dd DWA1} Macro MOVrmr Rg1,Rg2 { ;{mov Rg32,[Rg32]} db $04 db Rg1 db Rg2} Macro MOVmr DWA1,Rg1 { ;{mov [DWA1],Rg32} db $05 dd DWA1 db Rg1} Macro MOVmrr Rg1,Rg2 { ;{mov [Rg32],Rg32} db $06 db Rg1 db Rg2} Macro MOV2rm Rg1,DWA1 {;{mov Rg32, word [DWA1]} db $07 db Rg1 dd DWA1} Macro MOV2mr DWA1,Rg1 { ;{mov [DWA1], word Rg32;} db $08 dd DWA1 db Rg1} Macro MOV1rm Rg1,DWA1 { ;{mov Rg32, byte [DWA1]} db $09 db Rg1 dd DWA1} Macro MOV1mr DWA1,Rg1 { ;{mov [DWA1],byte Rg32} db $0A dd DWA1 db Rg1} Macro CALLa DWA1 { db $0B dd DWA1} Macro CALLr Rg1 { db $0C db Rg1} Macro RET_ {db $0D} Macro GOTOa DWA1 { db $0E dd DWA1} Macro GOTOr Rg1 { db $0F db Rg1} ; ЗНАКОВІ ПОРІВНЯННЯ Macro GOTOsaIs DWA1 { ; Якщо CMP1=CMP2 то перехід, на адресу DWA1 db $10 dd DWA1} Macro GOTOsaNotIs DWA1 {; Якщо CMP1<>CMP2 то перехід, на адресу DWA1 db $11 dd DWA1} Macro GOTOsaMoreIs DWA1 { ; Якщо CMP1>=CMP2 то перехід, на адресу DWA1 db $12 dd DWA1} Macro GOTOsaLess DWA1 { ; Якщо CMP1CMP2 то перехід, на адресу, яка вказана в Rg1 db $15 db Rg1} Macro GOTOsrMoreIs Rg1 {; Якщо CMP1>=CMP2 то перехід, на адресу, яка вказана в Rg1 db $16 db Rg1} Macro GOTOsrLess Rg1 { ; Якщо CMP1=CMP2 то перехід, на адресу DWA1 EXTR 768 dd DWA1 } Macro GOTOuaLess DWA1 { ; Якщо CMP1=CMP2 то перехід, на адресу, яка вказана в Rg1 EXTR 770 db Rg1} Macro GOTOurLess Rg1 { ; Якщо CMP1