指定-あるアドレスのメモリにあるヌル終了文字列 。 kukaga、0x0hとしましょう。
タスクは、逆に「agakuk」、0x0hの出力を取得することです
より正確には、反転された線があるメモリ領域へのポインタ
i 8080アーキテクチャに基づくソリューションを見てみましょう。
非x86アーキテクチャのアセンブラーの鑑定家へのリクエスト-おなじみのアーキテクチャのアセンブラーでこのタスクの例を示します。 比較するだけで純粋に興味深い。
最初のオプションはループアルゴリズムです。 空きメモリを逆さまにします。 最も重要なことは、記憶を超えないことです。 境界線の処理は、この例の範囲を超えています。
DE-文字列へのポインター
プッシュD
ポップh
DCX H
MVI M、0
ラベル1:
Xchg
MOV A、M
Xchg
MOV M、A
DCX H
Inx d
JNZ LABEL1
Inx h
HLでは、反転文字列へのポインター
2番目のオプション:
プッシュD
ポップh
DCX H
MVI M、0
ラベル1:
Xchg
MOV A、M
JZ LABEL2
Xchg
MOV M、A
DCX H
Inx d
JMP LABEL1
LABEL2:
DEでは、反転文字列へのポインター
何らかの再帰を伴うバリアント。 登録BC-行ごと。 ここでは、スタックがメモリ領域に登らないことも必要です。 また、境界は例の範囲を超えています。
プッシュB
ポップd
DCX D
Xchg
MVI M、0
Xchg
ラベル1:
LXI H、LABEL1
プッシュH
LDAX B
Inx b
DCX D
STAX D
CMP A
Rnz
ポップh
Inx d
DEでは、ラインナップへのポインター
尋ね、助言し、批判する
i8086のソリューションは、scasb、rep、movsbにすべて集約されるため、持ち込みませんでした。 簡単すぎる。 しかし、あなたが望むなら、私は書くことができます