レジスタ ebx に次の値があるとします: 30303420
それを変換して、対応する ascii 値を出力したいと思います。したがって、印刷する必要があります
004
30 == 0
30 == 0
34 == 4
20 == space character.
それを画面に印刷するにはどうすればよいですか?
これは、アセンブリ コードを使用した 80x86 アーキテクチャです。
さて、あなたの質問にはいくつかの不明確な詳細があります。
1- ebx に 30303420 の 16 進値がある場合、正確には「004」という 4 つの Ascii 文字があります。つまり、次のようになります。
mov ebx,30303420H ;is exactly the same than:
mov ebx,"004 "
10 進数の値はありません (どのような値ですか?) ため、ここでは変換は行われません。
2- ebx 値を画面に表示して「004」と表示する場合は、適切なサービスを使用するために、プログラムを実行するオペレーティング システムを指定する必要があります。たとえば、Windows の DOS ウィンドウでも実行される古いスタイルの MS-DOS INT 21H 関数を使用する場合は、このセグメントでそれを行います。
mov cx,4 ;counter = 4 characters
;
next:
rol ebx,8 ;rotate left EBX 1 byte: place next char in BL
mov dl,bl ;DL = char to show
mov ah,2 ;AH = VIDEO OUTPUT function
int 21H ;DOS kernel service Int: show the char
loop next ;repeat 4 times
ただし、プログラムが Linux で実行されている場合、ebx 値を表示する方法はまったく異なります。また、プログラムは別の方法で C ライブラリ関数を使用したり、Windows 準拠のプログラムであったり、BIOS INT 10H サービス (画面を担当) を使用したり、ビデオ回路などに直接アクセスしたりすることもできます。 ...