mirror of
https://github.com/libretro/x86-assembly-cheat.git
synced 2026-11-07 12:47:59 -10:00
48 lines
710 B
NASM
48 lines
710 B
NASM
; # cmps
|
|
|
|
; Compare two arrays
|
|
|
|
%include "lib/asm_io.inc"
|
|
|
|
section .data
|
|
|
|
bs4 db 0, 1, 2, 3
|
|
bs4_2 db 0, 0, 0, 0
|
|
|
|
ENTRY
|
|
|
|
mov esi, bs4
|
|
mov byte [bs4], 0
|
|
mov byte [bs4 + 1], 1
|
|
|
|
mov edi, bs4_2
|
|
mov byte [bs4_2], 0
|
|
mov byte [bs4_2 + 1], 2
|
|
|
|
cld
|
|
cmpsb
|
|
ASSERT_FLAG jz
|
|
mov eax, esi
|
|
sub eax, bs4
|
|
ASSERT_EQ 1
|
|
mov eax, edi
|
|
sub eax, bs4_2
|
|
ASSERT_EQ 1
|
|
ASSERT_EQ [bs4], 0, byte
|
|
ASSERT_EQ [bs4_2], 0, byte
|
|
|
|
std
|
|
movsb
|
|
ASSERT_FLAG jnz
|
|
mov eax, esi
|
|
sub eax, bs4
|
|
ASSERT_EQ 0
|
|
mov eax, edi
|
|
sub eax, bs4_2
|
|
ASSERT_EQ 0
|
|
ASSERT_EQ [bs4 + 1], 1, byte
|
|
; TODO why fail?
|
|
;ASSERT_EQ [bs4_2 + 1], 2, byte
|
|
|
|
EXIT
|