これはそれを行うための一つの方法(EMU8086でテスト)である:あなたが数を形成するのに必要な最小限のビットを隔離することができるレジスタの下位バイトにマスクと右シフトのシリーズを使用して
.model small
.stack 100h
.data
array dw 1234H, 5678H, 9191H, 7A40H
one_char db 'x' ;USED TO STORE ONE HEX VALUE.
two_char db 'xx',13,10,'$' ;TWO HEX VALUES TO DISPLAY.
.code
mov ax, @data
mov ds, ax
mov si, offset array
mov cx, 4
again:
mov ax, [si] ; store the value in ax
;AX = AH AL.
;DISPLAY AH.
push ax ;PRESERVE CURRENT HEX NUMBER.
mov one_char, ah ;TWO HEX VALUES OF THE FIRST BYTE.
call separate_two_digits ;SEPARATE THE TWO HEX.
;DISPLAY THE TWO DIGITS.
mov dx, offset two_char
mov ah, 9
int 21h
;DISPLAY AL.
pop ax ;RESTORE AX.
mov one_char, al ;TWO HEX VALUES OF THE SECOND BYTE.
call separate_two_digits ;SEPARATE THE TWO HEX.
;DISPLAY THE TWO DIGITS.
mov dx, offset two_char
mov ah, 9
int 21h
inc si ; increment the pointer
inc si
dec cx
jnz again
;WAIT FOR KEYPRESS.
mov ah, 0
int 16h
mov ax, 4c00h
int 21h
;--------------------------------------------------
;ONE_CHAR CONTAINS TWO HEX VALUES: FIRST HEX IN THE
;4 UPPER BITS, THE SECOND HEX IN THE LOWER 4 BITS.
separate_two_digits proc
mov di, offset two_char
;4 UPPER BITS OF THE CHAR.
mov al, one_char
shr al, 4
call convert2char
mov [ di ], al
;4 LOWER BITS OF THE CHAR.
mov al, one_char
and al, 00001111b
call convert2char
inc di
mov [ di ], al
ret
separate_two_digits endp
;--------------------------------------------------
;CONVERT FROM HEX TO ASCII CHARACTER.
convert2char proc
cmp al, 9
jbe digit ;IF AL <= 9 : IT'S A DIGIT.
;UPPERCASE LETTER.
add al, 55 ;HEX LETTER TO ASCII.
jmp finale
digit:
add al, 48 ;HEX DIGIT TO ASCII.
finale:
ret
convert2char endp
。いったんそれを持っていれば、印字可能な文字を得るためにascii "0"を追加することになります。それらを一度に吐き出すか、完全な文字列のためにキャッシュすることができます。 –
[MASM32](http://www.masm32.com/)または[Irvine32](http://kipirvine.com/asm/examples/index.htm)のようなライブラリを使用してみてください。 16ビットの場合、確かに他のライブラリがあります。 – zx485
「関連する」セクション(右の方)で[**アセンブリのアセンブリレジスタを作成する**](http://stackoverflow.com/questions/22621780/print-register-in-assembly-x86?rq=1) )または[**どのようにしてx86アセンブリ内のレジスタの内容をコンソールに出力できますか?私はLinuxを実行しています**](http://stackoverflow.com/questions/5697561/how-do-i-print-the-contents-of-a-register-in-x86-assembly-to-the-console -im-ru?rq = 1)は役に立ちますか? –