415A6B31のような文字列を入力したいのですが、アセンブリ関数はAZk1を返す必要があるため、2バイトごとに取得して1バイトに変換する必要があります... 41 = A 5A=zなど
組み立てでそれを作る方法は?
扱っている数字を見てください。文字列は 16 進数です。16 進値 0 ~ 9 は 0x30 ~ 0x39 であり、0xF を使用して 0 ~ 9 を取得しますか? ただし、0x41 と 0xF の AND を使用しても 0xA にはならないため、文字列の各バイトに対して
if(byte>0x39) byte = byte - 7;
byte=byte&0xF;
ニブル(ニブル)0x4、0x1、0x5、0xAなどを提供します。次に、ニブルをバイトに結合します
(0x4<<8)|0x1 = 0x41, (0x5<<4)|0xA = 0x5A, etc.
C 言語記号:
<< means shift left
& means and
| means or
- means subtract
0x means the number is in hexadecimal