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