File indexing completed on 2024-05-12 04:02:06

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">&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">></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">&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">></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">></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">&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">>=</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">&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>