mirror of
https://gitlab.os-k.eu/os-k-team/kvisc.git
synced 2023-08-25 14:05:46 +02:00
52 lines
1.2 KiB
Plaintext
52 lines
1.2 KiB
Plaintext
# The OS/K Team licenses this file to you under the MIT license.
|
|
# See the LICENSE file in the project root for more information.
|
|
|
|
#---------------------------------------------------------------------------#
|
|
# String manipulation instructions #
|
|
#---------------------------------------------------------------------------#
|
|
|
|
#
|
|
# Store value into string (STOSx)
|
|
#
|
|
# [%1] = $2
|
|
# IF (DF == 0) THEN
|
|
# %str = %str + sizeof(x)
|
|
# ELSE
|
|
# %str = %str - sizeof(x)
|
|
# FI
|
|
#
|
|
stosb r ri
|
|
stosw r ri
|
|
stosd r ri
|
|
stosq r ri
|
|
|
|
#
|
|
# Scan string for a particular value (SCASx)
|
|
#
|
|
# CMP([%1], $2)
|
|
#
|
|
# IF ([%1] == 0) THEN
|
|
# ZF = 1
|
|
# ELIF (ZF == 0) THEN
|
|
# IF (DF == 0) THEN
|
|
# %1 = %1 + sizeof(x)
|
|
# ELSE
|
|
# %1 = %1 - sizeof(x)
|
|
# FI
|
|
# FI
|
|
#
|
|
# Sets CF, OF and SF according to the result of the comparison
|
|
# Sets ZF according to whether [%1] and $2 are equal, OR if [%1] is null
|
|
#
|
|
# Notes:
|
|
# - Does not move past the value when found
|
|
# - 'SCASB.REP.NZ reg ch' is a short 'strchnul()'
|
|
#
|
|
scasb r ri
|
|
scasw r ri
|
|
scasd r ri
|
|
scasq r ri
|
|
|
|
#---------------------------------------------------------------------------#
|
|
|