From ec3fe0e07d81c58ae405820972673bf5c57dafbc Mon Sep 17 00:00:00 2001 From: Paul Mathieu Date: Mon, 6 Oct 2025 22:40:10 +0200 Subject: [PATCH] Old crc16 is now a .asm --- src/crc16.asm | 45 ++++++++++++++++++++++++++++++++++++++++ src/crc16.s | 57 --------------------------------------------------- 2 files changed, 45 insertions(+), 57 deletions(-) create mode 100644 src/crc16.asm delete mode 100644 src/crc16.s diff --git a/src/crc16.asm b/src/crc16.asm new file mode 100644 index 0000000..c08b261 --- /dev/null +++ b/src/crc16.asm @@ -0,0 +1,45 @@ +CPU 8086 + +_start: + push bp + mov bp, sp + mov si, [bp+8] + push word [si] + mov si, [bp+10] + push word [si] + call crc16 + mov di, [bp+6] + mov [di], ax + mov sp, bp + pop bp + retf 6 + +crc16: + push bp + mov bp, sp + mov bx, [bp+4] + add [bp+6], bx + mov ax, -1 +.L2: + cmp bx, [bp+6] + jne .L5 + pop bp + ret +.L5: + mov dl, [bx] + mov cl, 0x8 + shl dx, cl + xor ax, dx + mov dl, cl +.L4: + mov cx, ax + shl cx, 1 + test ax, ax + xchg cx, ax + jge .L3 + xor ax, 4129 +.L3: + dec dl + jne .L4 + inc bx + jmp .L2 diff --git a/src/crc16.s b/src/crc16.s deleted file mode 100644 index 5ac8d68..0000000 --- a/src/crc16.s +++ /dev/null @@ -1,57 +0,0 @@ - .arch i8086,jumps - .code16 - .att_syntax prefix -#NO_APP -#APP - .section .text.init - .global _start -_start: - - .section .text.main - .global main -main: - push %bp - mov %sp, %bp - mov 8(%bp), %si - push (%si) - call crc16 - add $0x2, %sp - mov 6(%bp), %di - mov %ax, (%di) - pop %bp - lret $4 - -#NO_APP - .text - .global crc16 - .type crc16, @function -crc16: - pushw %bp - movw %sp, %bp - xorw %bx, %bx - movw $-1, %ax -.L2: - cmpw 4(%bp), %bx - jne .L5 - popw %bp - ret -.L5: - movb %cs:(%bx), %dl - movb $8, %cl - shlw %cl, %dx - xorw %dx, %ax - movb %cl, %dl -.L4: - movw %ax, %cx - shlw $1, %cx - testw %ax, %ax - xchgw %ax, %cx - jge .L3 - xorw $4129, %ax -.L3: - decb %dl - jne .L4 - incw %bx - jmp .L2 - .size crc16, .-crc16 - .ident "GCC: (GNU) 6.3.0"