lr_split

右と左にわけるのです。

numalias lr_split_l
numalias lr_split_r
numalias lr_split_str
numalias lr_split_t
numalias lr_split_len
------
------
;==============================
; lr_split
;==============================
;機能:与えられた文字列から、左からn文字までと、その残りを返す。
;引数:左側文字列を格納する文字変数、右側文字列を格納する文字変数、分割したい文字列、左から数えて何文字か
;付記:三番目の引数を0にすると、空白と与えたもの全部が戻ってくる。
 *lr_split
getparam s%lr_split_l,s%lr_split_r,$lr_split_str,%lr_split_t
len %lr_split_len,$lr_split_str
mid $%lr_split_l,$lr_split_str,0,%lr_split_t
mid $%lr_split_r,$lr_split_str,%lr_split_t,%lr_split_len-%lr_split_t
return
;==============================
; rl_split
;==============================
;機能:与えられた文字列から、右からn文字までと、その残りを返す。
;引数:左側文字列を格納する文字変数、右側文字列を格納する文字変数、分割したい文字列、右から数えて何文字か
;付記:三番目の引数を0にすると、空白と与えたもの全部が戻ってくる。
 *rl_split
getparam s%lr_split_l,s%lr_split_r,$lr_split_str,%lr_split_t
len %lr_split_len,$lr_split_str
;逆転させる。
mid $%lr_split_l,$lr_split_str,0,%lr_split_len-%lr_split_t
mid $%lr_split_r,$lr_split_str,%lr_split_len-%lr_split_t,%lr_split_t
return

文字列を左右に分割することから、lr_split/rl_splitと名づけた。

mov $0,"ながいながい文字列"
$0
lr_split $1,$2,$0,4
$1/$2
rl_split $1,$2,$0,4
$1/$2

こういうサンプルを走らせると、

ながいながい文字列
なが/いながい文字列
ながいながい文/字列

こんな風に表示される。