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