0

XTHLの機能は理解していますが、実際にそれを使用するシナリオの例を誰かが挙げることができますか? また、可能であれば、アプリケーションのコードも共有してください。

4

1 に答える 1

0

1 つの用途には、次のようなアセンブリ関数に引数を渡すことが含まれます。

    CALL function_name
    DB   1,2,3 ;arguments
...
function_name:
    XTHL
    MOV A,M ;get argument
    INX H ;move to next argument
    ...
    XTHL ;now return modified return address to stack,
         ;also restoring HL contents as well

その他の用途として、スタックの一番上に HL のシャドウ コピーを配置することもできます。次に例を示します。

    DAD   B ;hl=hl+bc
    XTHL  ;'shadow' hl swapped in
    JNC   no_inc
    INX   H
no_inc:
    DAD   D ;hl=hl+de
    XTHL
    ;so we just added 32-bit number in DE:BC to HL:(TOS)

同様に、スタックにプッシュされた単語をジャグリングします。

一部の虐待にはこれも含まれます。

    LXI SP,addr1
    XTHL
    LXI SP,addr2
    XTHL
    ...

このコードは、一連のデータ ワードを連続するLXI SP,addrコマンドが指す位置に移動します。もちろん、これには割り込みを無効にする必要がありますが、ゲインは速度です。

于 2016-02-18T18:31:34.430 に答える