日立MB-S1に関する情報

メモリ空間1
ルーチン番号$37

機能

文字列領域上の文字列を転送します。

解説

変数・配列領域上のXが示すストリング・ディスクリプタの文字列領域空間上の文字列を、システム・スタック内に転送します。
実行後はXにシステム・スタック内の文字列の先頭アドレスが格納され、AccB文字列の長さが格納されます。
ストリング・ディスクリプタは、文字列領域上にある文字列の先頭アドレスと長さを管理するデータです。

入力情報

  • X:ストリング・ディスクリプタの先頭アドレス(変数配列領域(メモリ空間4))
  • U:転送先の先頭アドレス(システム・スタック領域)
    ※SP(スタック・ポインタ)より大きいアドレスを設定します。

出力情報

  • AccB:システム・スタック領域に転送された文字列の長さ
  • X:システム・スタック領域上の転送された文字列の先頭アドレス

サンプル・プログラム

内容

BASICで定義されている文字列"ABCDEF"をシステム・スタック内に転送します。
100 CLEAR ,&HC000
110 LOADM"ANTITO"
120 MLST = &HC000
130 A$ = "ABCDEF"
140 VADR = VARPTR(A$)
150 MSB = INT(VADR / 256)
160 LSB = VADR - MSB * 256
170 POKE MLST+2,MSB
180 POKE MLST+3,LSB
190 EXEC MLST
 0 C000                     ORG  $C000      --A SAMPLE OF "ANTITO" ROUTINE--
 1           C000   ANTITO  EQU  *
 2 C000   20 02             BRA  EXEC
 3 C002      0000   STADDR  FDB  $0000      STRING DESCRIPTORDDR ADDR
 4           C004   EXEC    EQU  *          --- PROGRAM START ---
 5 C004   32 76             LEAS -10,S      S:S - 10
 6 C006   CC AA55           LDD  #$AA55     D:CHECK DATA
 7 C009   34 06             PSHS B,A        CHECK DATA TO SYSTEM
 8 C00B   1F 43             TFR  S,U        U:S
 9 C00D   33 41             LEAU 1,U        U:U + 1
10 C00F   AE 8CF0           LDX  STADDR,PCR X:STRING DESCRIPTORDDR ADDR
11 C012 103F                SWI2            CALL "ANTITO" ROUTINE
12 C014      41             FCB  $41
13 C015      37             FCB  $37
14 C016   3F                SWI
15                          END

実行結果

プログラムを実行後、モニタ・コマンドでシステム・スタック内に文字列が格納されていることを確認します。
Ready
RUN
S=E223(AA41)CC=84(*Z**)A=46 B=06 DP=00 X=E224 Y=E224 U=E22B PC=C016(3FF7EF9E10)
*D E223
E223 AA 41 42 43 44 45 46 00 - 55 CF 00 C0 00 C0 00 00 (E3) ェABCDEF.Uマ.タ.タ..
*

E223       スタック情報1
E224〜E22A 文字列データ
E22B       スタック情報2

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

どなたでも編集できます