From 8f100ef3a05452711c45948421e9af983510eeeb Mon Sep 17 00:00:00 2001 From: Rokas Puzonas Date: Thu, 13 Apr 2023 17:26:28 +0300 Subject: [PATCH] remove completionist_decode.asm --- examples/completionist_decode.asm | 451 ------------------------------ 1 file changed, 451 deletions(-) delete mode 100644 examples/completionist_decode.asm diff --git a/examples/completionist_decode.asm b/examples/completionist_decode.asm deleted file mode 100644 index e5ce78b..0000000 --- a/examples/completionist_decode.asm +++ /dev/null @@ -1,451 +0,0 @@ -; ======================================================================== -; -; (C) Copyright 2023 by Molly Rocket, Inc., All Rights Reserved. -; -; This software is provided 'as-is', without any express or implied -; warranty. In no event will the authors be held liable for any damages -; arising from the use of this software. -; -; Please see https://computerenhance.com for further information -; -; ======================================================================== - -; ======================================================================== -; LISTING 42 -; ======================================================================== - -; -; NOTE(casey): This is not meant to be a real compliance test for 8086 -; disassemblers. It's just a reasonable selection of opcodes and patterns -; to use as a first pass in making sure a disassembler handles a large -; cross-section of the encoding. To be absolutely certain you haven't -; missed something, you would need a more exhaustive listing! -; - -bits 16 - -mov si, bx -mov dh, al -mov cl, 12 -mov ch, -12 -mov cx, 12 -mov cx, -12 -mov dx, 3948 -mov dx, -3948 -mov al, [bx + si] -mov bx, [bp + di] -mov dx, [bp] -mov ah, [bx + si + 4] -mov al, [bx + si + 4999] -mov [bx + di], cx -mov [bp + si], cl -mov [bp], ch -mov ax, [bx + di - 37] -mov [si - 300], cx -mov dx, [bx - 32] -mov [bp + di], byte 7 -mov [di + 901], word 347 -mov bp, [5] -mov bx, [3458] -mov ax, [2555] -mov ax, [16] -mov [2554], ax -mov [15], ax - -push word [bp + si] -push word [3000] -push word [bx + di - 30] -push cx -push ax -push dx -push cs - -pop word [bp + si] -pop word [3] -pop word [bx + di - 3000] -pop sp -pop di -pop si -pop ds - -xchg ax, [bp - 1000] -xchg [bx + 50], bp - -xchg ax, ax -xchg ax, dx -xchg ax, sp -xchg ax, si -xchg ax, di - -xchg cx, dx -xchg si, cx -xchg cl, ah - -in al, 200 -in al, dx -in ax, dx - -out 44, ax -out dx, al - -xlat -lea ax, [bx + di + 1420] -lea bx, [bp - 50] -lea sp, [bp - 1003] -lea di, [bx + si - 7] - -lds ax, [bx + di + 1420] -lds bx, [bp - 50] -lds sp, [bp - 1003] -lds di, [bx + si - 7] - -les ax, [bx + di + 1420] -les bx, [bp - 50] -les sp, [bp - 1003] -les di, [bx + si - 7] - -lahf -sahf -pushf -popf - -add cx, [bp] -add dx, [bx + si] -add [bp + di + 5000], ah -add [bx], al -add sp, 392 -add si, 5 -add ax, 1000 -add ah, 30 -add al, 9 -add cx, bx -add ch, al - -adc cx, [bp] -adc dx, [bx + si] -adc [bp + di + 5000], ah -adc [bx], al -adc sp, 392 -adc si, 5 -adc ax, 1000 -adc ah, 30 -adc al, 9 -adc cx, bx -adc ch, al - -inc ax -inc cx -inc dh -inc al -inc ah -inc sp -inc di -inc byte [bp + 1002] -inc word [bx + 39] -inc byte [bx + si + 5] -inc word [bp + di - 10044] -inc word [9349] -inc byte [bp] - -aaa -daa - -sub cx, [bp] -sub dx, [bx + si] -sub [bp + di + 5000], ah -sub [bx], al -sub sp, 392 -sub si, 5 -sub ax, 1000 -sub ah, 30 -sub al, 9 -sub cx, bx -sub ch, al - -sbb cx, [bp] -sbb dx, [bx + si] -sbb [bp + di + 5000], ah -sbb [bx], al -sbb sp, 392 -sbb si, 5 -sbb ax, 1000 -sbb ah, 30 -sbb al, 9 -sbb cx, bx -sbb ch, al - -dec ax -dec cx -dec dh -dec al -dec ah -dec sp -dec di -dec byte [bp + 1002] -dec word [bx + 39] -dec byte [bx + si + 5] -dec word [bp + di - 10044] -dec word [9349] -dec byte [bp] - -neg ax -neg cx -neg dh -neg al -neg ah -neg sp -neg di -neg byte [bp + 1002] -neg word [bx + 39] -neg byte [bx + si + 5] -neg word [bp + di - 10044] -neg word [9349] -neg byte [bp] - -cmp bx, cx -cmp dh, [bp + 390] -cmp [bp + 2], si -cmp bl, 20 -cmp byte [bx], 34 -cmp ax, 23909 - -aas -das - -mul al -mul cx -mul word [bp] -mul byte [bx + di + 500] - -imul ch -imul dx -imul byte [bx] -imul word [9483] - -aam - -div bl -div sp -div byte [bx + si + 2990] -div word [bp + di + 1000] - -idiv ax -idiv si -idiv byte [bp + si] -idiv word [bx + 493] - -aad -cbw -cwd - -not ah -not bl -not sp -not si -not word [bp] -not byte [bp + 9905] - -shl ah, 1 -shr ax, 1 -sar bx, 1 -rol cx, 1 -ror dh, 1 -rcl sp, 1 -rcr bp, 1 - -shl word [bp + 5], 1 -shr byte [bx + si - 199], 1 -sar byte [bx + di - 300], 1 -rol word [bp], 1 -ror word [4938], 1 -rcl byte [3], 1 -rcr word [bx], 1 - -shl ah, cl -shr ax, cl -sar bx, cl -rol cx, cl -ror dh, cl -rcl sp, cl -rcr bp, cl - -shl word [bp + 5], cl -shr word [bx + si - 199], cl -sar byte [bx + di - 300], cl -rol byte [bp], cl -ror byte [4938], cl -rcl byte [3], cl -rcr word [bx], cl - -and al, ah -and ch, cl -and bp, si -and di, sp -and al, 93 -and ax, 20392 -and [bp + si + 10], ch -and [bx + di + 1000], dx -and bx, [bp] -and cx, [4384] -and byte [bp - 39], 239 -and word [bx + si - 4332], 10328 - -test bx, cx -test dh, [bp + 390] -test [bp + 2], si -test bl, 20 -test byte [bx], 34 -test ax, 23909 - -or al, ah -or ch, cl -or bp, si -or di, sp -or al, 93 -or ax, 20392 -or [bp + si + 10], ch -or [bx + di + 1000], dx -or bx, [bp] -or cx, [4384] -or byte [bp - 39], 239 -or word [bx + si - 4332], 10328 - -xor al, ah -xor ch, cl -xor bp, si -xor di, sp -xor al, 93 -xor ax, 20392 -xor [bp + si + 10], ch -xor [bx + di + 1000], dx -xor bx, [bp] -xor cx, [4384] -xor byte [bp - 39], 239 -xor word [bx + si - 4332], 10328 - -rep movsb -rep cmpsb -rep scasb -rep lodsb -rep movsw -rep cmpsw -rep scasw -rep lodsw - -; NOTE(casey): Special thanks (as always!) to Mārtiņš Možeiko for figuring out why NASM -; wouldn't compile "rep stds" instructions. It was because it was a misprint in the 8086 -; manual! It was really just "rep stos", which of course is still in x64, and NASM -; assembles it just fine. -rep stosb -rep stosw - -call [39201] -call [bp - 100] -call sp -call ax - -jmp ax -jmp di -jmp [12] -jmp [4395] - -ret -7 -ret 500 -ret - -label: -je label -jl label -jle label -jb label -jbe label -jp label -jo label -js label -jne label -jnl label -jg label -jnb label -ja label -jnp label -jno label -jns label -loop label -loopz label -loopnz label -jcxz label - -int 13 -int3 - -into -iret - -clc -cmc -stc -cld -std -cli -sti -hlt -wait - -lock not byte [bp + 9905] -lock xchg [100], al - -mov al, cs:[bx + si] -mov bx, ds:[bp + di] -mov dx, es:[bp] -mov ah, ss:[bx + si + 4] - -and ss:[bp + si + 10], ch -or ds:[bx + di + 1000], dx -xor bx, es:[bp] -cmp cx, es:[4384] -test byte cs:[bp - 39], 239 -sbb word cs:[bx + si - 4332], 10328 - -lock not byte CS:[bp + 9905] - -; -; NOTE(casey): These were not in the original homework set, but have been added since, as people -; found instruction encodings that were not previously covered. Thank you to everyone who -; submitted test cases! -; - -call 123:456 -jmp 789:34 - -mov [bx+si+59],es - -jmp 2620 -call 11804 - -retf 17556 -ret 17560 -retf -ret - -call [bp+si-0x3a] -call far [bp+si-0x3a] -jmp [di] -jmp far [di] - -jmp 21862:30600 - -; -; TODO(casey): I would like to uncomment this, but as far as I can tell, NASM doesn't recognize the ESC instruction :( -; so even if I just force the assembler to output the bits here, our disasm will fail to assemble because it will (correctly!) -; print the esc instruction and NASM will error because it doesn't know what that is. -; -; esc 938,ax -; - -; -; TODO(casey): According to NASM, "rep movsb" is "not lockable". However the 8086 manual seems to think it is, and -; even describes what happens when you you lock a rep: the lock is held for the duration of the rep operation. So... -; yeah. Not sure why this doesn't work in NASM: -; -; lock rep movsb -; \ No newline at end of file