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