diff --git a/unittests/ASM/Primary/Primary_AE.asm b/unittests/ASM/Primary/Primary_AE.asm new file mode 100644 index 000000000..179cc776b --- /dev/null +++ b/unittests/ASM/Primary/Primary_AE.asm @@ -0,0 +1,43 @@ +%ifdef CONFIG +{ + "RegData": { + "RAX": "0x1200", + "RDI": "0xE0000001" + }, + "MemoryRegions": { + "0x100000000": "4096" + } +} +%endif + +mov rdx, 0xe0000000 + +mov rax, 0x4142434445464748 +mov [rdx + 8 * 0], rax +mov rax, 0x5152535455565758 +mov [rdx + 8 * 1], rax +mov rax, 0x0 +mov [rdx + 8 * 2], rax + +lea rdi, [rdx + 8 * 0] + +cld +mov rax, 0x61 +scasb +; cmp = 0x61 - 0x48 = 0x19 +; 0: CF - 00000000 +; 1: - 00000010 +; 2: PF - 00000000 +; 3: 0 - 00000000 +; 4: AF - 00010000 +; 5: 0 - 00000000 +; 6: ZF - 00000000 +; 7: SF - 00000000 +; ================ +; 00010010 +; OF: LAHF doesn't load - 0 + +mov rax, 0 +lahf + +hlt diff --git a/unittests/ASM/Primary/Primary_AE_REP.asm b/unittests/ASM/Primary/Primary_AE_REP.asm new file mode 100644 index 000000000..764228b09 --- /dev/null +++ b/unittests/ASM/Primary/Primary_AE_REP.asm @@ -0,0 +1,31 @@ +%ifdef CONFIG +{ + "RegData": { + "RCX": "5", + "RDI": "0xE0000003" + }, + "MemoryRegions": { + "0x100000000": "4096" + } +} +%endif + +mov rdx, 0xe0000000 + +mov rax, 0x4142434445466161 +mov [rdx + 8 * 0], rax +mov rax, 0x5152535455565758 +mov [rdx + 8 * 1], rax +mov rax, 0x0 +mov [rdx + 8 * 2], rax + +lea rdi, [rdx + 8 * 0] + +cld +mov rax, 0x61 +mov rcx, 8 +cmp rax, 0x61 + +rep scasb + +hlt diff --git a/unittests/ASM/Primary/Primary_AE_REPNE.asm b/unittests/ASM/Primary/Primary_AE_REPNE.asm new file mode 100644 index 000000000..9538040f0 --- /dev/null +++ b/unittests/ASM/Primary/Primary_AE_REPNE.asm @@ -0,0 +1,31 @@ +%ifdef CONFIG +{ + "RegData": { + "RCX": "1", + "RDI": "0xE0000007" + }, + "MemoryRegions": { + "0x100000000": "4096" + } +} +%endif + +mov rdx, 0xe0000000 + +mov rax, 0x4161434445464748 +mov [rdx + 8 * 0], rax +mov rax, 0x5152535455565758 +mov [rdx + 8 * 1], rax +mov rax, 0x0 +mov [rdx + 8 * 2], rax + +lea rdi, [rdx + 8 * 0] + +cld +mov rax, 0x61 +mov rcx, 8 +cmp rax, 0 + +repne scasb + +hlt diff --git a/unittests/ASM/Primary/Primary_AE_REPNE_down.asm b/unittests/ASM/Primary/Primary_AE_REPNE_down.asm new file mode 100644 index 000000000..2736c5214 --- /dev/null +++ b/unittests/ASM/Primary/Primary_AE_REPNE_down.asm @@ -0,0 +1,31 @@ +%ifdef CONFIG +{ + "RegData": { + "RCX": "5", + "RDI": "0xE000000D" + }, + "MemoryRegions": { + "0x100000000": "4096" + } +} +%endif + +mov rdx, 0xe0000000 + +mov rax, 0x4142434445464748 +mov [rdx + 8 * 0], rax +mov rax, 0x5161535455565758 +mov [rdx + 8 * 1], rax +mov rax, 0x0 +mov [rdx + 8 * 2], rax + +lea rdi, [rdx + 8 * 2] + +std +mov rax, 0x61 +mov rcx, 8 +cmp rax, 0 + +repne scasb + +hlt diff --git a/unittests/ASM/Primary/Primary_AE_REP_down.asm b/unittests/ASM/Primary/Primary_AE_REP_down.asm new file mode 100644 index 000000000..231587469 --- /dev/null +++ b/unittests/ASM/Primary/Primary_AE_REP_down.asm @@ -0,0 +1,31 @@ +%ifdef CONFIG +{ + "RegData": { + "RCX": "7", + "RDI": "0xE000000F" + }, + "MemoryRegions": { + "0x100000000": "4096" + } +} +%endif + +mov rdx, 0xe0000000 + +mov rax, 0x4142434445466161 +mov [rdx + 8 * 0], rax +mov rax, 0x5152535455565758 +mov [rdx + 8 * 1], rax +mov rax, 0x0 +mov [rdx + 8 * 2], rax + +lea rdi, [rdx + 8 * 2] + +std +mov rax, 0x61 +mov rcx, 8 +cmp rax, 0x61 + +rep scasb + +hlt diff --git a/unittests/ASM/Primary/Primary_AF_REP_dword.asm b/unittests/ASM/Primary/Primary_AF_REP_dword.asm new file mode 100644 index 000000000..b45495fe4 --- /dev/null +++ b/unittests/ASM/Primary/Primary_AF_REP_dword.asm @@ -0,0 +1,31 @@ +%ifdef CONFIG +{ + "RegData": { + "RCX": "6", + "RDI": "0xE0000008" + }, + "MemoryRegions": { + "0x100000000": "4096" + } +} +%endif + +mov rdx, 0xe0000000 + +mov rax, 0x4142434461626364 +mov [rdx + 8 * 0], rax +mov rax, 0x5152535455565758 +mov [rdx + 8 * 1], rax +mov rax, 0x0 +mov [rdx + 8 * 2], rax + +lea rdi, [rdx + 8 * 0] + +cld +mov rax, 0x61626364 +mov rcx, 8 +cmp rax, 0x61626364 + +rep scasd + +hlt diff --git a/unittests/ASM/Primary/Primary_AF_REP_qword.asm b/unittests/ASM/Primary/Primary_AF_REP_qword.asm new file mode 100644 index 000000000..5a2a09e49 --- /dev/null +++ b/unittests/ASM/Primary/Primary_AF_REP_qword.asm @@ -0,0 +1,32 @@ +%ifdef CONFIG +{ + "RegData": { + "RCX": "6", + "RDI": "0xE0000010" + }, + "MemoryRegions": { + "0x100000000": "4096" + } +} +%endif + +mov rdx, 0xe0000000 + +mov rax, 0x6162636465666768 +mov [rdx + 8 * 0], rax +mov rax, 0x5152535455565758 +mov [rdx + 8 * 1], rax +mov rax, 0x0 +mov [rdx + 8 * 2], rax + +lea rdi, [rdx + 8 * 0] + +cld +mov rax, 0x6162636465666768 +mov rbx, 0x6162636465666768 +mov rcx, 8 +cmp rax, rbx + +rep scasq + +hlt diff --git a/unittests/ASM/Primary/Primary_AF_REP_word.asm b/unittests/ASM/Primary/Primary_AF_REP_word.asm new file mode 100644 index 000000000..2fea40b86 --- /dev/null +++ b/unittests/ASM/Primary/Primary_AF_REP_word.asm @@ -0,0 +1,31 @@ +%ifdef CONFIG +{ + "RegData": { + "RCX": "6", + "RDI": "0xE0000004" + }, + "MemoryRegions": { + "0x100000000": "4096" + } +} +%endif + +mov rdx, 0xe0000000 + +mov rax, 0x4142434445466162 +mov [rdx + 8 * 0], rax +mov rax, 0x5152535455565758 +mov [rdx + 8 * 1], rax +mov rax, 0x0 +mov [rdx + 8 * 2], rax + +lea rdi, [rdx + 8 * 0] + +cld +mov rax, 0x6162 +mov rcx, 8 +cmp rax, 0x6162 + +rep scasw + +hlt