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;">&gt;</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;">&amp;</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;">&gt;</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;">&gt;</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;">&lt;</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;">&gt;</span> <span style="color:#ca60ca;">&amp;</span> op2 in <span style="color:#ca60ca;">&lt;</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;">&gt;</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;">&quot; is defined but not used.&quot;</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;">&quot;&quot;</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;">&quot;Text&quot;</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;">$&gt;</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;">&amp;</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;">&lt;</span> <span style="color:#b08000;">80</span><span style="color:#b08000;">h</span> <span style="color:#ca60ca;">&amp;</span> target<span style="color:#ca60ca;">-($+</span><span style="color:#b08000;">2</span><span style="color:#ca60ca;">)</span> <span style="color:#ca60ca;">&gt;=</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;">&quot;incorrect second argument&quot;</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;">&quot;incorrect second argument&quot;</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;">&quot;incorrect second argument&quot;</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;">&quot;incorrect first argument&quot;</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;">&quot;incorrect argument&quot;</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;">&amp;</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>