Warning, file /frameworks/syntax-highlighting/autotests/html/highlight.asm-fasm.html was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 <!DOCTYPE html> 0002 <html><head> 0003 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 0004 <title>highlight.asm-fasm</title> 0005 <meta name="generator" content="KF5::SyntaxHighlighting - Definition (Intel x86 (FASM)) - Theme (Breeze Light)"/> 0006 </head><body style="background-color:#ffffff;color:#1f1c1b"><pre> 0007 <span style="font-weight:bold;">jmp</span> <span style="color:#ca60ca;">near</span> <span style="color:#0057ae;">dword</span> <span style="color:#ca60ca;">[</span><span style="color:#b08000;">0</span><span style="color:#ca60ca;">]</span> 0008 <span style="font-weight:bold;">jmp</span> <span style="color:#ca60ca;">far</span> <span style="color:#0057ae;">dword</span> <span style="color:#ca60ca;">[</span><span style="color:#b08000;">0</span><span style="color:#ca60ca;">]</span> 0009 0010 <span style="color:#644a9b;font-weight:bold;">mov</span> <span style="font-weight:bold;">bx</span><span style="color:#ca60ca;">,</span><span style="font-weight:bold;">ax</span> <span style="color:#898887;">; general register to general register</span> 0011 <span style="color:#644a9b;font-weight:bold;">mov</span> <span style="color:#ca60ca;">[</span>char<span style="color:#ca60ca;">],</span><span style="font-weight:bold;">al</span> <span style="color:#898887;">; general register to memory</span> 0012 <span style="color:#644a9b;font-weight:bold;">mov</span> <span style="font-weight:bold;">dl</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">32</span> <span style="color:#898887;">; immediate value to general register</span> 0013 <span style="color:#644a9b;font-weight:bold;">mov</span> <span style="font-weight:bold;">cr3</span><span style="color:#ca60ca;">,</span><span style="font-weight:bold;">ebx</span> <span style="color:#898887;">; general register to control register</span> 0014 0015 <span style="color:#644a9b;font-weight:bold;">xchg</span> <span style="font-weight:bold;">ax</span><span style="color:#ca60ca;">,</span><span style="font-weight:bold;">bx</span> <span style="color:#898887;">; swap two general registers</span> 0016 <span style="color:#644a9b;font-weight:bold;">xchg</span> <span style="font-weight:bold;">al</span><span style="color:#ca60ca;">,[</span>char<span style="color:#ca60ca;">]</span> <span style="color:#898887;">; swap register with memory</span> 0017 0018 <span style="color:#644a9b;font-weight:bold;">push</span> <span style="font-weight:bold;">ax</span> <span style="color:#898887;">; store general register</span> 0019 <span style="color:#644a9b;font-weight:bold;">push</span> <span style="font-weight:bold;">es</span> <span style="color:#898887;">; store segment register</span> 0020 <span style="color:#644a9b;font-weight:bold;">pushw</span> <span style="color:#ca60ca;">[</span><span style="font-weight:bold;">bx</span><span style="color:#ca60ca;">]</span> <span style="color:#898887;">; store memory</span> 0021 <span style="color:#644a9b;font-weight:bold;">push</span> <span style="color:#b08000;">1000</span><span style="color:#b08000;">h</span> <span style="color:#898887;">; store immediate value</span> 0022 0023 <span style="color:#644a9b;font-weight:bold;">imul</span> <span style="font-weight:bold;">ax</span><span style="color:#ca60ca;">,[</span><span style="font-weight:bold;">si</span><span style="color:#ca60ca;">],</span><span style="color:#b08000;">10</span> <span style="color:#898887;">; memory by immediate value to register</span> 0024 0025 <span style="color:#644a9b;font-weight:bold;">bt</span> <span style="font-weight:bold;">ax</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">15</span> <span style="color:#898887;">; test bit in register</span> 0026 <span style="color:#644a9b;font-weight:bold;">bts</span> <span style="color:#0057ae;">word</span> <span style="color:#ca60ca;">[</span><span style="font-weight:bold;">bx</span><span style="color:#ca60ca;">],</span><span style="color:#b08000;">15</span> <span style="color:#898887;">; test and set bit in memory</span> 0027 0028 <span style="color:#644a9b;font-weight:bold;">bswap</span> <span style="font-weight:bold;">edx</span> <span style="color:#898887;">; swap bytes in register</span> 0029 0030 <span style="font-weight:bold;">jmp</span> <span style="color:#b08000;">100</span><span style="color:#b08000;">h</span> <span style="color:#898887;">; direct near jump</span> 0031 <span style="font-weight:bold;">jmp</span> <span style="color:#b08000;">0FFFF</span><span style="color:#b08000;">h</span><span style="color:#ca60ca;">:</span><span style="color:#b08000;">0</span> <span style="color:#898887;">; direct far jump</span> 0032 <span style="font-weight:bold;">jmp</span> <span style="font-weight:bold;">ax</span> <span style="color:#898887;">; indirect near jump</span> 0033 <span style="font-weight:bold;">jmp</span> <span style="color:#0057ae;">pword</span> <span style="color:#ca60ca;">[</span><span style="font-weight:bold;">ebx</span><span style="color:#ca60ca;">]</span> <span style="color:#898887;">; indirect far jump</span> 0034 0035 <span style="color:#644a9b;font-weight:bold;">movs</span> <span style="color:#0057ae;">byte</span> <span style="color:#ca60ca;">[</span><span style="font-weight:bold;">di</span><span style="color:#ca60ca;">],[</span><span style="font-weight:bold;">si</span><span style="color:#ca60ca;">]</span> <span style="color:#898887;">; transfer byte</span> 0036 <span style="color:#644a9b;font-weight:bold;">movs</span> <span style="color:#0057ae;">word</span> <span style="color:#ca60ca;">[</span><span style="font-weight:bold;">es</span><span style="color:#ca60ca;">:</span><span style="font-weight:bold;">di</span><span style="color:#ca60ca;">],[</span><span style="font-weight:bold;">ss</span><span style="color:#ca60ca;">:</span><span style="font-weight:bold;">si</span><span style="color:#ca60ca;">]</span> <span style="color:#898887;">; transfer word</span> 0037 <span style="color:#644a9b;font-weight:bold;">movsd</span> <span style="color:#898887;">; transfer double word</span> 0038 0039 <span style="color:#644a9b;font-weight:bold;">cmpxchg8b</span> <span style="color:#ca60ca;">[</span><span style="font-weight:bold;">bx</span><span style="color:#ca60ca;">]</span> <span style="color:#898887;">; compare and exchange 8 bytes</span> 0040 0041 <span style="color:#644a9b;font-weight:bold;">movq2dq</span> <span style="font-weight:bold;">xmm0</span><span style="color:#ca60ca;">,</span><span style="font-weight:bold;">mm1</span> <span style="color:#898887;">; move from MMX register to SSE register</span> 0042 <span style="color:#644a9b;font-weight:bold;">movdq2q</span> <span style="font-weight:bold;">mm0</span><span style="color:#ca60ca;">,</span><span style="font-weight:bold;">xmm1</span> <span style="color:#898887;">; move from SSE register to MMX register</span> 0043 0044 <span style="color:#644a9b;font-weight:bold;">enter</span> <span style="color:#b08000;">2048</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">0</span> <span style="color:#898887;">; enter and allocate 2048 bytes on stack</span> 0045 0046 <span style="color:#644a9b;font-weight:bold;">mov</span> <span style="color:#ca60ca;">[</span>rip<span style="color:#ca60ca;">+</span><span style="color:#b08000;">3</span><span style="color:#ca60ca;">],</span>sil <span style="color:#898887;">; manual RIP-relative addressing</span> 0047 0048 <span style="color:#644a9b;font-weight:bold;">blendvps</span> <span style="font-weight:bold;">xmm3</span><span style="color:#ca60ca;">,</span><span style="font-weight:bold;">xmm7</span><span style="color:#ca60ca;">,</span><span style="font-weight:bold;">xmm0</span> <span style="color:#898887;">; blend according to mask</span> 0049 <span style="color:#644a9b;font-weight:bold;">vgatherqps</span> <span style="font-weight:bold;">xmm0</span><span style="color:#ca60ca;">,[</span><span style="font-weight:bold;">xmm2</span><span style="color:#ca60ca;">],</span><span style="font-weight:bold;">xmm3</span> <span style="color:#898887;">; gather two floats</span> 0050 <span style="color:#644a9b;font-weight:bold;">vgatherqps</span> <span style="font-weight:bold;">xmm0</span><span style="color:#ca60ca;">,[</span><span style="font-weight:bold;">ymm2</span><span style="color:#ca60ca;">+</span><span style="color:#b08000;">64</span><span style="color:#ca60ca;">],</span><span style="font-weight:bold;">xmm3</span> <span style="color:#898887;">; gather four floats</span> 0051 <span style="color:#644a9b;font-weight:bold;">vfmsub231ps</span> <span style="font-weight:bold;">ymm1</span><span style="color:#ca60ca;">,</span><span style="font-weight:bold;">ymm2</span><span style="color:#ca60ca;">,</span><span style="font-weight:bold;">ymm3</span> <span style="color:#898887;">; multiply and subtract</span> 0052 <span style="color:#644a9b;font-weight:bold;">vfnmadd132sd</span> <span style="font-weight:bold;">xmm0</span><span style="color:#ca60ca;">,</span><span style="font-weight:bold;">xmm5</span><span style="color:#ca60ca;">,[</span><span style="font-weight:bold;">ebx</span><span style="color:#ca60ca;">]</span> <span style="color:#898887;">; multiply, negate and add</span> 0053 <span style="color:#644a9b;font-weight:bold;">vpermil2ps</span> <span style="font-weight:bold;">ymm0</span><span style="color:#ca60ca;">,</span><span style="font-weight:bold;">ymm3</span><span style="color:#ca60ca;">,</span><span style="font-weight:bold;">ymm7</span><span style="color:#ca60ca;">,</span><span style="font-weight:bold;">ymm2</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">0</span> <span style="color:#898887;">; permute from two sources</span> 0054 0055 <span style="color:#644a9b;font-weight:bold;">vscatterdps</span> <span style="color:#ca60ca;">[</span><span style="font-weight:bold;">eax</span><span style="color:#ca60ca;">+</span><span style="font-weight:bold;">xmm1</span><span style="color:#ca60ca;">]{</span><span style="font-weight:bold;">k1</span><span style="color:#ca60ca;">},</span><span style="font-weight:bold;">xmm0</span> <span style="color:#898887;">; scatter four floats</span> 0056 <span style="color:#644a9b;font-weight:bold;">vscatterdpd</span> <span style="color:#ca60ca;">[</span><span style="font-weight:bold;">ymm3</span><span style="color:#ca60ca;">*</span><span style="color:#b08000;">8</span><span style="color:#ca60ca;">]{</span><span style="font-weight:bold;">k3</span><span style="color:#ca60ca;">},</span><span style="font-weight:bold;">zmm0</span> <span style="color:#898887;">; scatter eight doubles</span> 0057 0058 <span style="color:#0057ae;">dd</span> sum 0059 x <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">1</span> 0060 x <span style="color:#ca60ca;">=</span> x<span style="color:#ca60ca;">+</span><span style="color:#b08000;">2</span> 0061 sum <span style="color:#ca60ca;">=</span> x 0062 0063 0064 <span style="color:#006e28;">if</span> count<span style="color:#ca60ca;">></span><span style="color:#b08000;">0</span> 0065 <span style="color:#644a9b;font-weight:bold;">mov</span> <span style="font-weight:bold;">cx</span><span style="color:#ca60ca;">,</span>count 0066 <span style="color:#644a9b;font-weight:bold;">rep</span> <span style="color:#644a9b;font-weight:bold;">movsb</span> 0067 <span style="color:#006e28;">end</span> <span style="color:#006e28;">if</span> 0068 0069 0070 <span style="color:#006e28;">if</span> count <span style="color:#ca60ca;">&</span> <span style="color:#ca60ca;">~</span> count <span style="color:#ca60ca;">mod</span> <span style="color:#b08000;">4</span> 0071 <span style="color:#644a9b;font-weight:bold;">mov</span> <span style="font-weight:bold;">cx</span><span style="color:#ca60ca;">,</span>count<span style="color:#ca60ca;">/</span><span style="color:#b08000;">4</span> 0072 <span style="color:#644a9b;font-weight:bold;">rep</span> <span style="color:#644a9b;font-weight:bold;">movsd</span> 0073 <span style="color:#006e28;">else</span> <span style="color:#006e28;">if</span> count<span style="color:#ca60ca;">></span><span style="color:#b08000;">4</span> 0074 <span style="color:#644a9b;font-weight:bold;">mov</span> <span style="font-weight:bold;">cx</span><span style="color:#ca60ca;">,</span>count<span style="color:#ca60ca;">/</span><span style="color:#b08000;">4</span> 0075 <span style="color:#644a9b;font-weight:bold;">rep</span> <span style="color:#644a9b;font-weight:bold;">movsd</span> 0076 <span style="color:#644a9b;font-weight:bold;">mov</span> <span style="font-weight:bold;">cx</span><span style="color:#ca60ca;">,</span>count <span style="color:#ca60ca;">mod</span> <span style="color:#b08000;">4</span> 0077 <span style="color:#644a9b;font-weight:bold;">rep</span> <span style="color:#644a9b;font-weight:bold;">movsb</span> 0078 <span style="color:#006e28;">else</span> 0079 <span style="color:#644a9b;font-weight:bold;">mov</span> <span style="font-weight:bold;">cx</span><span style="color:#ca60ca;">,</span>count 0080 <span style="color:#644a9b;font-weight:bold;">rep</span> <span style="color:#644a9b;font-weight:bold;">movsb</span> 0081 <span style="color:#006e28;">end</span> <span style="color:#006e28;">if</span> 0082 0083 <span style="color:#006e28;">repeat</span> <span style="color:#b08000;">8</span> 0084 <span style="color:#644a9b;font-weight:bold;">mov</span> <span style="color:#0057ae;">byte</span> <span style="color:#ca60ca;">[</span><span style="font-weight:bold;">bx</span><span style="color:#ca60ca;">],%</span> 0085 <span style="color:#644a9b;font-weight:bold;">inc</span> <span style="font-weight:bold;">bx</span> 0086 <span style="color:#006e28;">end</span> <span style="color:#006e28;">repeat</span> 0087 0088 0089 s <span style="color:#ca60ca;">=</span> x<span style="color:#ca60ca;">/</span><span style="color:#b08000;">2</span> 0090 <span style="color:#006e28;">repeat</span> <span style="color:#b08000;">100</span> 0091 <span style="color:#006e28;">if</span> x<span style="color:#ca60ca;">/</span>s <span style="color:#ca60ca;">=</span> s 0092 <span style="color:#006e28;">break</span> 0093 <span style="color:#006e28;">end</span> <span style="color:#006e28;">if</span> 0094 s <span style="color:#ca60ca;">=</span> <span style="color:#ca60ca;">(</span>s<span style="color:#ca60ca;">+</span>x<span style="color:#ca60ca;">/</span>s<span style="color:#ca60ca;">)/</span><span style="color:#b08000;">2</span> 0095 <span style="color:#006e28;">end</span> <span style="color:#006e28;">repeat</span> 0096 0097 <span style="color:#006e28;">repeat</span> <span style="color:#ca60ca;">$-$$</span> 0098 <span style="color:#644a9b;font-weight:bold;">load</span> a <span style="color:#0057ae;">byte</span> from <span style="color:#ca60ca;">$$+%-</span><span style="color:#b08000;">1</span> 0099 <span style="color:#644a9b;font-weight:bold;">store</span> <span style="color:#0057ae;">byte</span> a <span style="color:#ca60ca;">xor</span> c at <span style="color:#ca60ca;">$$+%-</span><span style="color:#b08000;">1</span> 0100 <span style="color:#006e28;">end</span> <span style="color:#006e28;">repeat</span> 0101 0102 GDTR <span style="color:#0057ae;">dp</span> <span style="color:#ca60ca;">?</span> 0103 <span style="color:#006e28;">virtual</span> <span style="color:#006e28;">at</span> GDTR 0104 GDT_limit <span style="color:#0057ae;">dw</span> <span style="color:#ca60ca;">?</span> 0105 GDT_address <span style="color:#0057ae;">dd</span> <span style="color:#ca60ca;">?</span> 0106 <span style="color:#006e28;">end</span> <span style="color:#006e28;">virtual</span> 0107 0108 <span style="color:#006e28;">virtual</span> <span style="color:#006e28;">at</span> <span style="color:#b08000;">0</span> 0109 <span style="color:#0057ae;">file</span> <span style="color:#bf0303;">'a.txt'</span><span style="color:#ca60ca;">:</span><span style="color:#b08000;">10</span><span style="color:#b08000;">h</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">1</span> 0110 <span style="color:#644a9b;font-weight:bold;">load</span> char from <span style="color:#b08000;">0</span> 0111 <span style="color:#006e28;">end</span> <span style="color:#006e28;">virtual</span> 0112 0113 <span style="color:#006e28;">virtual</span> <span style="color:#006e28;">at</span> <span style="color:#b08000;">0</span> as <span style="color:#bf0303;">'asc'</span> 0114 <span style="color:#006e28;">times</span> <span style="color:#b08000;">256</span> <span style="color:#0057ae;">db</span> <span style="color:#ca60ca;">%-</span><span style="color:#b08000;">1</span> 0115 <span style="color:#006e28;">end</span> <span style="color:#006e28;">virtual</span> 0116 0117 <span style="color:#006e28;">virtual</span> <span style="color:#006e28;">at</span> <span style="color:#b08000;">0</span> 0118 <span style="color:#644a9b;">hex_digits:</span>: 0119 <span style="color:#0057ae;">db</span> <span style="color:#bf0303;">'0123456789ABCDEF'</span> 0120 <span style="color:#006e28;">end</span> <span style="color:#006e28;">virtual</span> 0121 <span style="color:#644a9b;font-weight:bold;">load</span> a <span style="color:#0057ae;">byte</span> from hex_digits<span style="color:#ca60ca;">:</span><span style="color:#b08000;">10</span> 0122 0123 bits <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">16</span> 0124 <span style="color:#006e28;">display</span> <span style="color:#bf0303;">'Current offset is 0x'</span> 0125 <span style="color:#006e28;">repeat</span> bits<span style="color:#ca60ca;">/</span><span style="color:#b08000;">4</span> 0126 d <span style="color:#ca60ca;">=</span> <span style="color:#bf0303;">'0'</span> <span style="color:#ca60ca;">+</span> <span style="color:#ca60ca;">$</span> <span style="color:#ca60ca;">shr</span> <span style="color:#ca60ca;">(</span>bits<span style="color:#ca60ca;">-%*</span><span style="color:#b08000;">4</span><span style="color:#ca60ca;">)</span> <span style="color:#ca60ca;">and</span> <span style="color:#b08000;">0F</span><span style="color:#b08000;">h</span> 0127 <span style="color:#006e28;">if</span> d <span style="color:#ca60ca;">></span> <span style="color:#bf0303;">'9'</span> 0128 d <span style="color:#ca60ca;">=</span> d <span style="color:#ca60ca;">+</span> <span style="color:#bf0303;">'A'</span><span style="color:#ca60ca;">-</span><span style="color:#bf0303;">'9'</span><span style="color:#ca60ca;">-</span><span style="color:#b08000;">1</span> 0129 <span style="color:#006e28;">end</span> <span style="color:#006e28;">if</span> 0130 <span style="color:#006e28;">display</span> d 0131 <span style="color:#006e28;">end</span> <span style="color:#006e28;">repeat</span> 0132 <span style="color:#006e28;">display</span> <span style="color:#b08000;">13</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">10</span> 0133 0134 <span style="color:#006e28;">if</span> <span style="color:#ca60ca;">~</span> <span style="color:#ca60ca;">defined</span> alpha 0135 <span style="color:#644a9b;">alpha:</span> 0136 <span style="color:#006e28;">end</span> <span style="color:#006e28;">if</span> 0137 0138 <span style="color:#006e28;">if</span> <span style="color:#ca60ca;">~</span> <span style="color:#ca60ca;">defined</span> alpha <span style="color:#ca60ca;">|</span> <span style="color:#ca60ca;">defined</span> <span style="color:#644a9b;">@f</span> 0139 <span style="color:#644a9b;">alpha:</span> 0140 <span style="color:#644a9b;">@@:</span> 0141 <span style="color:#006e28;">end</span> <span style="color:#006e28;">if</span> 0142 0143 <span style="color:#644a9b;font-weight:bold;">include</span> <span style="color:#bf0303;">'macros.inc'</span> 0144 0145 d equ <span style="color:#0057ae;">dword</span> 0146 NULL equ d <span style="color:#b08000;">0</span> 0147 d equ <span style="font-weight:bold;">edx</span> 0148 0149 d equ d<span style="color:#ca60ca;">,</span><span style="font-weight:bold;">eax</span> 0150 0151 b equ <span style="color:#0057ae;">byte</span> 0152 w equ <span style="color:#0057ae;">word</span> 0153 d equ <span style="color:#0057ae;">dword</span> 0154 p equ <span style="color:#0057ae;">pword</span> 0155 f equ <span style="color:#0057ae;">fword</span> 0156 q equ <span style="color:#0057ae;">qword</span> 0157 t equ <span style="color:#0057ae;">tword</span> 0158 x equ <span style="color:#0057ae;">dqword</span> 0159 y equ <span style="color:#0057ae;">qqword</span> 0160 0161 incl fix include 0162 0163 <span style="color:#006e28;">macro</span> tst <span style="color:#ca60ca;">{</span><span style="color:#644a9b;font-weight:bold;">test</span> <span style="font-weight:bold;">al</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">0x</span><span style="color:#b08000;">FF</span><span style="color:#ca60ca;">}</span> 0164 0165 <span style="color:#006e28;">macro</span> stos0 0166 <span style="color:#ca60ca;">{</span> 0167 <span style="color:#644a9b;font-weight:bold;">xor</span> <span style="font-weight:bold;">al</span><span style="color:#ca60ca;">,</span><span style="font-weight:bold;">al</span> 0168 <span style="color:#644a9b;font-weight:bold;">stosb</span> 0169 <span style="color:#ca60ca;">}</span> 0170 0171 <span style="color:#006e28;">macro</span> align value <span style="color:#ca60ca;">{</span> <span style="color:#0057ae;">rb</span> <span style="color:#ca60ca;">(</span>value<span style="color:#ca60ca;">-</span><span style="color:#b08000;">1</span><span style="color:#ca60ca;">)-($+</span>value<span style="color:#ca60ca;">-</span><span style="color:#b08000;">1</span><span style="color:#ca60ca;">)</span> <span style="color:#ca60ca;">mod</span> value <span style="color:#ca60ca;">}</span> 0172 0173 <span style="color:#006e28;">macro</span> mov op1<span style="color:#ca60ca;">,</span>op2 0174 <span style="color:#ca60ca;">{</span> 0175 <span style="color:#006e28;">if</span> op1 in <span style="color:#ca60ca;"><</span><span style="font-weight:bold;">ds</span><span style="color:#ca60ca;">,</span><span style="font-weight:bold;">es</span><span style="color:#ca60ca;">,</span><span style="font-weight:bold;">fs</span><span style="color:#ca60ca;">,</span><span style="font-weight:bold;">gs</span><span style="color:#ca60ca;">,</span><span style="font-weight:bold;">ss</span><span style="color:#ca60ca;">></span> <span style="color:#ca60ca;">&</span> op2 in <span style="color:#ca60ca;"><</span><span style="font-weight:bold;">cs</span><span style="color:#ca60ca;">,</span><span style="font-weight:bold;">ds</span><span style="color:#ca60ca;">,</span><span style="font-weight:bold;">es</span><span style="color:#ca60ca;">,</span><span style="font-weight:bold;">fs</span><span style="color:#ca60ca;">,</span><span style="font-weight:bold;">gs</span><span style="color:#ca60ca;">,</span><span style="font-weight:bold;">ss</span><span style="color:#ca60ca;">></span> 0176 <span style="color:#644a9b;font-weight:bold;">push</span> op2 0177 <span style="color:#644a9b;font-weight:bold;">pop</span> op1 0178 <span style="color:#006e28;">else</span> 0179 <span style="color:#644a9b;font-weight:bold;">mov</span> op1<span style="color:#ca60ca;">,</span>op2 0180 <span style="color:#006e28;">end</span> <span style="color:#006e28;">if</span> 0181 <span style="color:#ca60ca;">}</span> 0182 0183 <span style="color:#006e28;">macro</span> stoschar <span style="color:#ca60ca;">[</span>char<span style="color:#ca60ca;">]</span> 0184 <span style="color:#ca60ca;">{</span> 0185 <span style="color:#644a9b;font-weight:bold;">mov</span> <span style="font-weight:bold;">al</span><span style="color:#ca60ca;">,</span>char 0186 <span style="color:#644a9b;font-weight:bold;">stosb</span> 0187 <span style="color:#ca60ca;">}</span> 0188 0189 <span style="color:#006e28;">macro</span> movstr 0190 <span style="color:#ca60ca;">{</span> 0191 <span style="color:#006e28;">local</span> move 0192 <span style="color:#644a9b;">move:</span> 0193 <span style="color:#644a9b;font-weight:bold;">lodsb</span> 0194 <span style="color:#644a9b;font-weight:bold;">stosb</span> 0195 <span style="color:#644a9b;font-weight:bold;">test</span> <span style="font-weight:bold;">al</span><span style="color:#ca60ca;">,</span><span style="font-weight:bold;">al</span> 0196 <span style="font-weight:bold;">jnz</span> move 0197 <span style="color:#ca60ca;">}</span> 0198 0199 <span style="color:#006e28;">macro</span> strtbl name<span style="color:#ca60ca;">,[</span>string<span style="color:#ca60ca;">]</span> 0200 <span style="color:#ca60ca;">{</span> 0201 <span style="color:#006e28;">common</span> 0202 <span style="color:#006e28;">label</span> name <span style="color:#0057ae;">dword</span> 0203 forward 0204 <span style="color:#006e28;">local</span> label 0205 <span style="color:#0057ae;">dd</span> label 0206 forward 0207 <span style="color:#006e28;">label</span> <span style="color:#0057ae;">db</span> string<span style="color:#ca60ca;">,</span><span style="color:#b08000;">0</span> 0208 <span style="color:#ca60ca;">}</span> 0209 0210 <span style="color:#644a9b;font-weight:bold;">push</span> <span style="color:#b08000;">3</span> 0211 <span style="color:#644a9b;font-weight:bold;">push</span> <span style="color:#b08000;">2</span> 0212 <span style="color:#644a9b;font-weight:bold;">push</span> <span style="color:#b08000;">1</span> 0213 <span style="font-weight:bold;">call</span> foo 0214 0215 <span style="color:#006e28;">macro</span> invoke proc<span style="color:#ca60ca;">,[</span>arg<span style="color:#ca60ca;">]</span> 0216 <span style="color:#ca60ca;">{</span> <span style="color:#006e28;">common</span> stdcall <span style="color:#ca60ca;">[</span>proc<span style="color:#ca60ca;">],</span>arg <span style="color:#ca60ca;">}</span> 0217 0218 <span style="color:#006e28;">macro</span> jif op1<span style="color:#ca60ca;">,</span>cond<span style="color:#ca60ca;">,</span>op2<span style="color:#ca60ca;">,</span>label 0219 <span style="color:#ca60ca;">{</span> 0220 <span style="color:#644a9b;font-weight:bold;">cmp</span> op1<span style="color:#ca60ca;">,</span>op2 0221 j<span style="color:#ca60ca;">#</span>cond label 0222 <span style="color:#ca60ca;">}</span> 0223 0224 <span style="color:#006e28;">macro</span> label name 0225 <span style="color:#ca60ca;">{</span> 0226 <span style="color:#006e28;">label</span> name 0227 <span style="color:#006e28;">if</span> <span style="color:#ca60ca;">~</span> <span style="color:#ca60ca;">used</span> name 0228 <span style="color:#006e28;">display</span> <span style="color:#ca60ca;">`</span>name <span style="color:#ca60ca;">#</span> <span style="color:#bf0303;">" is defined but not used."</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">13</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">10</span> 0229 <span style="color:#006e28;">end</span> <span style="color:#006e28;">if</span> 0230 <span style="color:#ca60ca;">}</span> 0231 0232 <span style="color:#006e28;">macro</span> message arg 0233 <span style="color:#ca60ca;">{</span> 0234 <span style="color:#006e28;">if</span> arg eqtype <span style="color:#bf0303;">""</span> 0235 <span style="color:#006e28;">local</span> str 0236 <span style="font-weight:bold;">jmp</span> <span style="color:#644a9b;">@f</span> 0237 <span style="color:#644a9b;font-weight:bold;">str</span> <span style="color:#0057ae;">db</span> arg<span style="color:#ca60ca;">,</span><span style="color:#b08000;">0D</span><span style="color:#b08000;">h</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">0A</span><span style="color:#b08000;">h</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">24</span><span style="color:#b08000;">h</span> 0238 <span style="color:#644a9b;">@@:</span> 0239 <span style="color:#644a9b;font-weight:bold;">mov</span> <span style="font-weight:bold;">dx</span><span style="color:#ca60ca;">,</span>str 0240 <span style="color:#006e28;">else</span> 0241 <span style="color:#644a9b;font-weight:bold;">mov</span> <span style="font-weight:bold;">dx</span><span style="color:#ca60ca;">,</span>arg 0242 <span style="color:#006e28;">end</span> <span style="color:#006e28;">if</span> 0243 <span style="color:#644a9b;font-weight:bold;">mov</span> <span style="font-weight:bold;">ah</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">9</span> 0244 <span style="color:#644a9b;font-weight:bold;">int</span> <span style="color:#b08000;">21</span><span style="color:#b08000;">h</span> 0245 <span style="color:#ca60ca;">}</span> 0246 0247 <span style="color:#006e28;">macro</span> ext instr 0248 <span style="color:#ca60ca;">{</span> 0249 <span style="color:#006e28;">macro</span> instr op1<span style="color:#ca60ca;">,</span>op2<span style="color:#ca60ca;">,</span>op3 0250 \<span style="color:#ca60ca;">{</span> 0251 <span style="color:#006e28;">if</span> op3 eq 0252 instr op1<span style="color:#ca60ca;">,</span>op2 0253 <span style="color:#006e28;">else</span> 0254 instr op1<span style="color:#ca60ca;">,</span>op2 0255 instr op2<span style="color:#ca60ca;">,</span>op3 0256 <span style="color:#006e28;">end</span> <span style="color:#006e28;">if</span> 0257 \<span style="color:#ca60ca;">}</span> 0258 <span style="color:#ca60ca;">}</span> 0259 0260 ext add 0261 ext sub 0262 0263 0264 <span style="color:#006e28;">macro</span> tmacro <span style="color:#ca60ca;">[</span>params<span style="color:#ca60ca;">]</span> 0265 <span style="color:#ca60ca;">{</span> 0266 <span style="color:#006e28;">common</span> macro params <span style="color:#ca60ca;">{</span> 0267 <span style="color:#ca60ca;">}</span> 0268 <span style="color:#006e28;">MACRO</span> fix tmacro 0269 ENDM fix <span style="color:#ca60ca;">}</span> 0270 0271 0272 <span style="color:#006e28;">MACRO</span> stoschar char 0273 <span style="color:#644a9b;font-weight:bold;">mov</span> <span style="font-weight:bold;">al</span><span style="color:#ca60ca;">,</span>char 0274 <span style="color:#644a9b;font-weight:bold;">stosb</span> 0275 ENDM 0276 0277 <span style="color:#006e28;">postpone</span> 0278 <span style="color:#ca60ca;">{</span> 0279 code_size <span style="color:#ca60ca;">=</span> <span style="color:#ca60ca;">$</span> 0280 <span style="color:#ca60ca;">}</span> 0281 0282 <span style="color:#006e28;">struc</span> point x<span style="color:#ca60ca;">,</span>y 0283 <span style="color:#ca60ca;">{</span> 0284 .x <span style="color:#0057ae;">dw</span> x 0285 .y <span style="color:#0057ae;">dw</span> y 0286 <span style="color:#ca60ca;">}</span> 0287 0288 <span style="color:#006e28;">struc</span> <span style="color:#0057ae;">db</span> <span style="color:#ca60ca;">[</span>data<span style="color:#ca60ca;">]</span> 0289 <span style="color:#ca60ca;">{</span> 0290 <span style="color:#006e28;">common</span> 0291 . <span style="color:#0057ae;">db</span> data 0292 .size <span style="color:#ca60ca;">=</span> <span style="color:#ca60ca;">$</span> <span style="color:#ca60ca;">-</span> <span style="color:#ca60ca;">.</span> 0293 <span style="color:#ca60ca;">}</span> 0294 0295 <span style="color:#006e28;">rept</span> <span style="color:#b08000;">5</span> <span style="color:#ca60ca;">{</span> <span style="color:#644a9b;font-weight:bold;">in</span> <span style="font-weight:bold;">al</span><span style="color:#ca60ca;">,</span><span style="font-weight:bold;">dx</span> <span style="color:#ca60ca;">}</span> 0296 0297 <span style="color:#006e28;">rept</span> <span style="color:#b08000;">3</span> counter 0298 <span style="color:#ca60ca;">{</span> 0299 byte<span style="color:#ca60ca;">#</span>counter <span style="color:#0057ae;">db</span> counter 0300 <span style="color:#ca60ca;">}</span> 0301 0302 <span style="color:#006e28;">match</span> <span style="color:#ca60ca;">+,+</span> <span style="color:#ca60ca;">{</span> <span style="color:#644a9b;font-weight:bold;">include</span> <span style="color:#bf0303;">'first.inc'</span> <span style="color:#ca60ca;">}</span> 0303 <span style="color:#006e28;">match</span> <span style="color:#ca60ca;">+,-</span> <span style="color:#ca60ca;">{</span> <span style="color:#644a9b;font-weight:bold;">include</span> <span style="color:#bf0303;">'second.inc'</span> <span style="color:#ca60ca;">}</span> 0304 <span style="color:#006e28;">match</span> a b<span style="color:#ca60ca;">,</span> <span style="color:#b08000;">1</span><span style="color:#ca60ca;">+</span><span style="color:#b08000;">2</span><span style="color:#ca60ca;">+</span><span style="color:#b08000;">3</span> <span style="color:#ca60ca;">{</span> <span style="color:#0057ae;">db</span> a <span style="color:#ca60ca;">}</span> 0305 0306 V fix <span style="color:#ca60ca;">{</span> 0307 <span style="color:#006e28;">macro</span> empty 0308 V 0309 V fix <span style="color:#ca60ca;">}</span> 0310 V 0311 0312 0313 list equ 0314 0315 <span style="color:#006e28;">macro</span> append item 0316 <span style="color:#ca60ca;">{</span> 0317 <span style="color:#006e28;">match</span> any<span style="color:#ca60ca;">,</span> list <span style="color:#ca60ca;">\{</span> list equ list<span style="color:#ca60ca;">,</span>item <span style="color:#ca60ca;">\}</span> 0318 <span style="color:#006e28;">match</span> <span style="color:#ca60ca;">,</span> list <span style="color:#ca60ca;">\{</span> list equ item <span style="color:#ca60ca;">\}</span> 0319 <span style="color:#ca60ca;">}</span> 0320 0321 define a b<span style="color:#ca60ca;">+</span><span style="color:#b08000;">4</span> 0322 define b <span style="color:#b08000;">3</span> 0323 <span style="color:#006e28;">rept</span> <span style="color:#b08000;">1</span> result<span style="color:#ca60ca;">:</span>a<span style="color:#ca60ca;">*</span>b<span style="color:#ca60ca;">+</span><span style="color:#b08000;">2</span> <span style="color:#ca60ca;">{</span> define c result <span style="color:#ca60ca;">}</span> 0324 0325 <span style="color:#006e28;">rept</span> <span style="color:#b08000;">8</span> n<span style="color:#ca60ca;">:</span><span style="color:#b08000;">0</span> <span style="color:#ca60ca;">{</span> <span style="color:#644a9b;font-weight:bold;">pxor</span> xmm<span style="color:#ca60ca;">#</span>n<span style="color:#ca60ca;">,</span>xmm<span style="color:#ca60ca;">#</span>n <span style="color:#ca60ca;">}</span> 0326 0327 0328 <span style="color:#006e28;">irps</span> reg<span style="color:#ca60ca;">,</span> <span style="font-weight:bold;">al</span> <span style="font-weight:bold;">bx</span> <span style="font-weight:bold;">ecx</span> 0329 <span style="color:#ca60ca;">{</span> <span style="color:#644a9b;font-weight:bold;">xor</span> reg<span style="color:#ca60ca;">,</span>reg <span style="color:#ca60ca;">}</span> 0330 0331 0332 <span style="color:#006e28;">if</span> <span style="color:#b08000;">0</span> 0333 a <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">1</span> 0334 b equ <span style="color:#b08000;">2</span> 0335 <span style="color:#006e28;">end</span> <span style="color:#006e28;">if</span> 0336 <span style="color:#0057ae;">dd</span> b 0337 0338 0339 <span style="color:#644a9b;font-weight:bold;">extrn</span> exit 0340 <span style="color:#644a9b;font-weight:bold;">extrn</span> <span style="color:#bf0303;">'__imp__MessageBoxA@16'</span> as MessageBox<span style="color:#ca60ca;">:</span><span style="color:#0057ae;">dword</span> 0341 0342 <span style="color:#644a9b;font-weight:bold;">extrn</span> <span style="color:#bf0303;">'printf'</span> as _printf 0343 printf <span style="color:#ca60ca;">=</span> <span style="color:#ca60ca;">PLT</span> _printf 0344 0345 tester<span style="color:#ca60ca;">?</span> <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">0</span> 0346 0347 <span style="color:#644a9b;">space:</span> 0348 space<span style="color:#ca60ca;">.</span>x <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">1</span> 0349 space<span style="color:#ca60ca;">.</span>y <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">2</span> 0350 <span style="color:#644a9b;">space.color:</span> 0351 space<span style="color:#ca60ca;">.</span>color<span style="color:#ca60ca;">.</span>r <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">0</span> 0352 space<span style="color:#ca60ca;">.</span>color<span style="color:#ca60ca;">.</span>g <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">0</span> 0353 space<span style="color:#ca60ca;">.</span>color<span style="color:#ca60ca;">.</span>b <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">0</span> 0354 0355 <span style="color:#644a9b;">space:</span> 0356 <span style="color:#006e28;">namespace</span> space 0357 x <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">1</span> 0358 y <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">2</span> 0359 <span style="color:#644a9b;">color:</span> 0360 .r <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">0</span> 0361 .g <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">0</span> 0362 .b <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">0</span> 0363 <span style="color:#006e28;">end</span> <span style="color:#006e28;">namespace</span> 0364 0365 0366 <span style="color:#644a9b;">first:</span> 0367 .child <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">1</span> 0368 ..other <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">0</span> 0369 <span style="color:#644a9b;">second:</span> 0370 .child <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">2</span> 0371 ..another <span style="color:#ca60ca;">=</span> <span style="color:#ca60ca;">..</span>other 0372 0373 0374 <span style="color:#006e28;">label</span> character<span style="color:#ca60ca;">:</span><span style="color:#0057ae;">byte</span> 0375 <span style="color:#006e28;">label</span> char<span style="color:#ca60ca;">:</span><span style="color:#b08000;">1</span> 0376 0377 <span style="color:#0057ae;">byte</span><span style="color:#ca60ca;">?</span> <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">1</span> <span style="color:#898887;">; 8 bits</span> 0378 <span style="color:#0057ae;">word</span><span style="color:#ca60ca;">?</span> <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">2</span> <span style="color:#898887;">; 16 bits</span> 0379 <span style="color:#0057ae;">dword</span><span style="color:#ca60ca;">?</span> <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">4</span> <span style="color:#898887;">; 32 bits</span> 0380 <span style="color:#0057ae;">fword</span><span style="color:#ca60ca;">?</span> <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">6</span> <span style="color:#898887;">; 48 bits</span> 0381 <span style="color:#0057ae;">pword</span><span style="color:#ca60ca;">?</span> <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">6</span> <span style="color:#898887;">; 48 bits</span> 0382 <span style="color:#0057ae;">qword</span><span style="color:#ca60ca;">?</span> <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">8</span> <span style="color:#898887;">; 64 bits</span> 0383 <span style="color:#0057ae;">tbyte</span><span style="color:#ca60ca;">?</span> <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">10</span> <span style="color:#898887;">; 80 bits</span> 0384 <span style="color:#0057ae;">tword</span><span style="color:#ca60ca;">?</span> <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">10</span> <span style="color:#898887;">; 80 bits</span> 0385 <span style="color:#0057ae;">dqword</span><span style="color:#ca60ca;">?</span> <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">16</span> <span style="color:#898887;">; 128 bits</span> 0386 <span style="color:#0057ae;">xword</span><span style="color:#ca60ca;">?</span> <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">16</span> <span style="color:#898887;">; 128 bits</span> 0387 <span style="color:#0057ae;">qqword</span><span style="color:#ca60ca;">?</span> <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">32</span> <span style="color:#898887;">; 256 bits</span> 0388 <span style="color:#0057ae;">yword</span><span style="color:#ca60ca;">?</span> <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">32</span> <span style="color:#898887;">; 256 bits</span> 0389 <span style="color:#0057ae;">dqqword</span><span style="color:#ca60ca;">?</span> <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">64</span> <span style="color:#898887;">; 512 bits</span> 0390 <span style="color:#0057ae;">zword</span><span style="color:#ca60ca;">?</span> <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">64</span> <span style="color:#898887;">; 512 bits</span> 0391 0392 element A 0393 linpoly <span style="color:#ca60ca;">=</span> A <span style="color:#ca60ca;">+</span> A <span style="color:#ca60ca;">+</span> <span style="color:#b08000;">3</span> 0394 vterm <span style="color:#ca60ca;">=</span> linpoly scale <span style="color:#b08000;">1</span> <span style="color:#ca60ca;">*</span> linpoly element <span style="color:#b08000;">1</span> <span style="color:#898887;">; vterm = 2 * A</span> 0395 0396 <span style="color:#0057ae;">db</span> <span style="color:#b08000;">4</span> dup <span style="color:#b08000;">90</span><span style="color:#b08000;">h</span> <span style="color:#898887;">; generate 4 bytes</span> 0397 <span style="color:#0057ae;">db</span> <span style="color:#b08000;">2</span> dup <span style="color:#ca60ca;">(</span><span style="color:#bf0303;">'abc'</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">10</span><span style="color:#ca60ca;">)</span> <span style="color:#898887;">; generate 8 bytes</span> 0398 0399 <span style="color:#006e28;">macro</span> measured name<span style="color:#ca60ca;">,</span>string 0400 <span style="color:#006e28;">local</span> top 0401 name <span style="color:#0057ae;">db</span> string 0402 <span style="color:#644a9b;">top:</span> name<span style="color:#ca60ca;">.</span>length <span style="color:#ca60ca;">=</span> top <span style="color:#ca60ca;">-</span> name 0403 <span style="color:#006e28;">end</span> <span style="color:#006e28;">macro</span> 0404 0405 measured hello<span style="color:#ca60ca;">,</span> <span style="color:#bf0303;">'Hello!'</span> <span style="color:#898887;">; hello.length = 6</span> 0406 0407 A equ <span style="color:#b08000;">1</span> 0408 A equ <span style="color:#b08000;">2</span> 0409 0410 drop A 0411 drop A 0412 0413 data1 <span style="color:#0057ae;">dw</span> <span style="color:#b08000;">1</span> 0414 buffer1 <span style="color:#0057ae;">rb</span> <span style="color:#b08000;">10</span><span style="color:#b08000;">h</span> <span style="color:#898887;">; zeroed and present in the output</span> 0415 0416 <span style="color:#644a9b;font-weight:bold;">org</span> <span style="color:#b08000;">400</span><span style="color:#b08000;">h</span> 0417 <span style="color:#644a9b;font-weight:bold;">data</span> <span style="color:#0057ae;">dw</span> <span style="color:#b08000;">2</span> 0418 buffer2 <span style="color:#0057ae;">rb</span> <span style="color:#b08000;">20</span><span style="color:#b08000;">h</span> <span style="color:#898887;">; not in the output</span> 0419 0420 <span style="color:#644a9b;font-weight:bold;">section</span> <span style="color:#b08000;">1000</span><span style="color:#b08000;">h</span> 0421 data3 <span style="color:#0057ae;">dw</span> <span style="color:#b08000;">3</span> 0422 buffer3 <span style="color:#0057ae;">rb</span> <span style="color:#b08000;">30</span><span style="color:#b08000;">h</span> <span style="color:#898887;">; not in the output</span> 0423 0424 <span style="color:#006e28;">virtual</span> <span style="color:#006e28;">at</span> <span style="color:#b08000;">0</span> 0425 <span style="color:#644a9b;">hex_digits:</span>: 0426 <span style="color:#0057ae;">db</span> <span style="color:#bf0303;">'0123456789ABCDEF'</span> 0427 <span style="color:#006e28;">end</span> <span style="color:#006e28;">virtual</span> 0428 <span style="color:#644a9b;font-weight:bold;">load</span> a<span style="color:#ca60ca;">:</span><span style="color:#0057ae;">byte</span> from hex_digits<span style="color:#ca60ca;">:</span><span style="color:#b08000;">10</span> <span style="color:#898887;">; a = 'A'</span> 0429 0430 <span style="color:#0057ae;">db</span> <span style="color:#bf0303;">"Text"</span> 0431 key <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">7B</span><span style="color:#b08000;">h</span> 0432 <span style="color:#006e28;">repeat</span> <span style="color:#ca60ca;">$-$$</span> 0433 <span style="color:#644a9b;font-weight:bold;">load</span> a <span style="color:#ca60ca;">:</span> <span style="color:#0057ae;">byte</span> from <span style="color:#ca60ca;">$$+%-</span><span style="color:#b08000;">1</span> 0434 <span style="color:#644a9b;font-weight:bold;">store</span> a <span style="color:#ca60ca;">xor</span> key <span style="color:#ca60ca;">:</span> <span style="color:#0057ae;">byte</span> at <span style="color:#ca60ca;">$$+%-</span><span style="color:#b08000;">1</span> 0435 <span style="color:#006e28;">end</span> <span style="color:#006e28;">repeat</span> 0436 0437 <span style="color:#644a9b;font-weight:bold;">load</span> char <span style="color:#ca60ca;">:</span> <span style="color:#0057ae;">byte</span> from const<span style="color:#ca60ca;">:</span><span style="color:#b08000;">0</span> 0438 0439 <span style="color:#006e28;">if</span> <span style="color:#ca60ca;">$></span><span style="color:#b08000;">10000</span><span style="color:#b08000;">h</span> 0440 <span style="color:#006e28;">err</span> <span style="color:#bf0303;">'segment too large'</span> 0441 <span style="color:#006e28;">end</span> <span style="color:#006e28;">if</span> 0442 <span style="color:#006e28;">calminstruction</span> please<span style="color:#ca60ca;">?</span> cmd<span style="color:#ca60ca;">&</span> 0443 <span style="color:#006e28;">match</span> <span style="color:#ca60ca;">=</span>do<span style="color:#ca60ca;">?</span> <span style="color:#ca60ca;">=</span><span style="color:#ca60ca;">not</span><span style="color:#ca60ca;">?</span> cmd<span style="color:#ca60ca;">,</span> cmd 0444 jyes done 0445 assemble cmd 0446 <span style="color:#644a9b;">done:</span> 0447 <span style="color:#006e28;">end</span> <span style="color:#006e28;">calminstruction</span> 0448 0449 please do <span style="color:#ca60ca;">not</span> display <span style="color:#bf0303;">'Bye!'</span> 0450 0451 <span style="color:#006e28;">macro</span> jmpi target 0452 <span style="color:#006e28;">if</span> target<span style="color:#ca60ca;">-($+</span><span style="color:#b08000;">2</span><span style="color:#ca60ca;">)</span> <span style="color:#ca60ca;"><</span> <span style="color:#b08000;">80</span><span style="color:#b08000;">h</span> <span style="color:#ca60ca;">&</span> target<span style="color:#ca60ca;">-($+</span><span style="color:#b08000;">2</span><span style="color:#ca60ca;">)</span> <span style="color:#ca60ca;">>=</span> <span style="color:#ca60ca;">-</span><span style="color:#b08000;">80</span><span style="color:#b08000;">h</span> 0453 <span style="color:#0057ae;">db</span> <span style="color:#b08000;">0EB</span><span style="color:#b08000;">h</span> 0454 <span style="color:#0057ae;">db</span> target<span style="color:#ca60ca;">-($+</span><span style="color:#b08000;">1</span><span style="color:#ca60ca;">)</span> 0455 <span style="color:#006e28;">else</span> 0456 <span style="color:#0057ae;">db</span> <span style="color:#b08000;">0E9</span><span style="color:#b08000;">h</span> 0457 <span style="color:#0057ae;">dw</span> target<span style="color:#ca60ca;">-($+</span><span style="color:#b08000;">2</span><span style="color:#ca60ca;">)</span> 0458 <span style="color:#006e28;">end</span> <span style="color:#006e28;">if</span> 0459 <span style="color:#006e28;">end</span> <span style="color:#006e28;">macro</span> 0460 0461 <span style="color:#006e28;">macro</span> EX<span style="color:#ca60ca;">?</span> first<span style="color:#ca60ca;">,</span>second 0462 <span style="color:#006e28;">match</span> <span style="color:#ca60ca;">(=</span><span style="font-weight:bold;">SP</span><span style="color:#ca60ca;">?),</span> first 0463 <span style="color:#006e28;">match</span> <span style="color:#ca60ca;">=</span>HL<span style="color:#ca60ca;">?,</span> second 0464 <span style="color:#0057ae;">db</span> <span style="color:#b08000;">0E3</span><span style="color:#b08000;">h</span> 0465 <span style="color:#006e28;">else</span> <span style="color:#006e28;">match</span> <span style="color:#ca60ca;">=</span>IX<span style="color:#ca60ca;">?,</span> second 0466 <span style="color:#0057ae;">db</span> <span style="color:#b08000;">0DD</span><span style="color:#b08000;">h</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">0E3</span><span style="color:#b08000;">h</span> 0467 <span style="color:#006e28;">else</span> <span style="color:#006e28;">match</span> <span style="color:#ca60ca;">=</span>IY<span style="color:#ca60ca;">?,</span> second 0468 <span style="color:#0057ae;">db</span> <span style="color:#b08000;">0FD</span><span style="color:#b08000;">h</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">0E3</span><span style="color:#b08000;">h</span> 0469 <span style="color:#006e28;">else</span> 0470 <span style="color:#006e28;">err</span> <span style="color:#bf0303;">"incorrect second argument"</span> 0471 <span style="color:#006e28;">end</span> <span style="color:#006e28;">match</span> 0472 <span style="color:#006e28;">else</span> <span style="color:#006e28;">match</span> <span style="color:#ca60ca;">=</span>AF<span style="color:#ca60ca;">?,</span> first 0473 <span style="color:#006e28;">match</span> <span style="color:#ca60ca;">=</span>AF<span style="color:#bf0303;">'?, second</span> 0474 <span style="color:#0057ae;">db</span> <span style="color:#b08000;">08</span><span style="color:#b08000;">h</span> 0475 <span style="color:#006e28;">else</span> 0476 <span style="color:#006e28;">err</span> <span style="color:#bf0303;">"incorrect second argument"</span> 0477 <span style="color:#006e28;">end</span> <span style="color:#006e28;">match</span> 0478 <span style="color:#006e28;">else</span> <span style="color:#006e28;">match</span> <span style="color:#ca60ca;">=</span>DE<span style="color:#ca60ca;">?,</span> first 0479 <span style="color:#006e28;">match</span> <span style="color:#ca60ca;">=</span>HL<span style="color:#ca60ca;">?,</span> second 0480 <span style="color:#0057ae;">db</span> <span style="color:#b08000;">0EB</span><span style="color:#b08000;">h</span> 0481 <span style="color:#006e28;">else</span> 0482 <span style="color:#006e28;">err</span> <span style="color:#bf0303;">"incorrect second argument"</span> 0483 <span style="color:#006e28;">end</span> <span style="color:#006e28;">match</span> 0484 <span style="color:#006e28;">else</span> 0485 <span style="color:#006e28;">err</span> <span style="color:#bf0303;">"incorrect first argument"</span> 0486 <span style="color:#006e28;">end</span> <span style="color:#006e28;">match</span> 0487 <span style="color:#006e28;">end</span> <span style="color:#006e28;">macro</span> 0488 0489 EX <span style="color:#ca60ca;">(</span><span style="font-weight:bold;">SP</span><span style="color:#ca60ca;">),</span>HL 0490 0491 <span style="color:#006e28;">macro</span> INC<span style="color:#ca60ca;">?</span> argument 0492 <span style="color:#006e28;">match</span> <span style="color:#ca60ca;">[:</span>r<span style="color:#ca60ca;">:],</span> argument 0493 <span style="color:#0057ae;">db</span> <span style="color:#b08000;">100</span><span style="color:#b08000;">b</span> <span style="color:#ca60ca;">+</span> r <span style="color:#ca60ca;">shl</span> <span style="color:#b08000;">3</span> 0494 <span style="color:#006e28;">else</span> <span style="color:#006e28;">match</span> <span style="color:#ca60ca;">(=</span>HL<span style="color:#ca60ca;">?),</span> argument 0495 <span style="color:#0057ae;">db</span> <span style="color:#b08000;">34</span><span style="color:#b08000;">h</span> 0496 <span style="color:#006e28;">else</span> <span style="color:#006e28;">match</span> <span style="color:#ca60ca;">(=</span>IX<span style="color:#ca60ca;">?+</span>d<span style="color:#ca60ca;">),</span> argument 0497 <span style="color:#0057ae;">db</span> <span style="color:#b08000;">0DD</span><span style="color:#b08000;">h</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">34</span><span style="color:#b08000;">h</span><span style="color:#ca60ca;">,</span>d 0498 <span style="color:#006e28;">else</span> <span style="color:#006e28;">match</span> <span style="color:#ca60ca;">(=</span>IY<span style="color:#ca60ca;">?+</span>d<span style="color:#ca60ca;">),</span> argument 0499 <span style="color:#0057ae;">db</span> <span style="color:#b08000;">0FD</span><span style="color:#b08000;">h</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">34</span><span style="color:#b08000;">h</span><span style="color:#ca60ca;">,</span>d 0500 <span style="color:#006e28;">else</span> 0501 <span style="color:#006e28;">err</span> <span style="color:#bf0303;">"incorrect argument"</span> 0502 <span style="color:#006e28;">end</span> <span style="color:#006e28;">match</span> 0503 <span style="color:#006e28;">end</span> <span style="color:#006e28;">macro</span> 0504 0505 <span style="color:#644a9b;font-weight:bold;">INC</span> <span style="color:#ca60ca;">(</span>IX<span style="color:#ca60ca;">+</span><span style="color:#b08000;">2</span><span style="color:#ca60ca;">)</span> 0506 0507 element IY<span style="color:#ca60ca;">?</span> 0508 0509 element L<span style="color:#ca60ca;">?</span> <span style="color:#ca60ca;">:</span> register <span style="color:#ca60ca;">+</span> <span style="color:#b08000;">101</span><span style="color:#b08000;">b</span> 0510 0511 <span style="color:#006e28;">macro</span> CALL<span style="color:#ca60ca;">?</span> arguments<span style="color:#ca60ca;">&</span> 0512 <span style="color:#006e28;">local</span> cc<span style="color:#ca60ca;">,</span>nn 0513 <span style="color:#006e28;">match</span> condition <span style="color:#ca60ca;">=,</span> target<span style="color:#ca60ca;">,</span> arguments 0514 cc <span style="color:#ca60ca;">=</span> condition <span style="color:#ca60ca;">-</span> CC 0515 nn <span style="color:#ca60ca;">=</span> target 0516 <span style="color:#0057ae;">db</span> <span style="color:#b08000;">0C4</span><span style="color:#b08000;">h</span> <span style="color:#ca60ca;">+</span> cc <span style="color:#ca60ca;">shl</span> <span style="color:#b08000;">3</span> 0517 <span style="color:#006e28;">else</span> 0518 nn <span style="color:#ca60ca;">=</span> arguments 0519 <span style="color:#0057ae;">db</span> <span style="color:#b08000;">0CD</span><span style="color:#b08000;">h</span> 0520 <span style="color:#006e28;">end</span> <span style="color:#006e28;">match</span> 0521 <span style="color:#0057ae;">dw</span> nn 0522 <span style="color:#006e28;">end</span> <span style="color:#006e28;">macro</span> 0523 </pre></body></html>