このコードで読み取った文字列をバイナリとヘキサに変換しようとしています。アセンブリ文字列の2進数とHexaへの小数点8086
READ_STRING:
MOV DX, offset buffer
MOV AH, 0Ah
INT 21h
MOV SI, 1d
MOV AX, 0
XOR CX, CX
MOV CL, buffer[SI]
INC SI
LOOP_1:
MOV DX, 10
MUL DX
MOV DL, buffer[SI]
SUB DL, 30h
MOV DH, 0
ADD AX, DX
INC SI
LOOP LOOP_1
RET
これまでのところ私は、バイナリ出力のためにこのコードを持っていますが、それは常に版画 "1001"(10進数で9):
NEXT:
XOR AX, AX
XOR BX, BX
XOR CX, CX
MOV CL, 2
MOV AL, byte ptr[nombre]
MOV DI, offset binaire
; DIV : divide AX by CL. Remainder in AH and result in AL
LOOP:
DIV CL ; remainder in AH, quotient in AL
ADD AH, '0' ; 0 -> '0' , 1 -> '1'
MOV [DI], AH ; Saves the remainder in the array
INC DI
MOV AH, 0 ; reset AH for next division
CMP AL, 0 ; if result is 0, end
JNE LOOP
;Prints the binary number
MOV DX, offset binaire
CALL WRITE_STRING
ありがとう!他に何かが必要な場合は、尋ねてください。
複雑なアルゴリズムをアセンブラで直接実行しないでください。最初に高水準言語でアルゴリズムを開発し、それを翻訳します。 –
...コンパイラに翻訳させてもらいます。 –
アセンブラを学ぶなら、8086を学ばないでください。80x86、MIPS、ARM - *何でも16ビットDOS 808x;)良い参考資料、興味があれば:http://savannah.nongnu.org/projects/pgubook/ – paulsm4