Другие языки программирования и технологии

кто умеет переводить с 16-ричной на десятичную и наоборот также на двочные каким образом

Вова =))
Вова =))
2 104
Тебе на печать чтоле? Ну лови.

PUBLICL2S

COMMENT |

Подпрограмма преобразования числа в строку. Числа - длинные целые
(LongInt в Паскале, long в Cи, DWORD в ассемблере) . Для работы с числами
меньшей длины нужно явно преобразовывать их в формат DWORD
(по-разному для знаковых и беззнаковых) :

Байт со знаком:

MOVAL, [Байт]
CBW
CWD

Беззнаковый байт:

MOVAL, [Байт]
XORAH, AH
CWD

Слово со знаком:

MOVAX, [Слово]
CWD

Беззнаковое слово:

MOVAX, [Слово]
XORDX, DX

(C) 1992 A.Ilin
|

;==============================================================================
L2Sprocnear

COMMENT |

Преобразует знаковое длинное целое (DWORD) в текстовое представление без
ведущих нулей (со знаком "минус" перед числом, если оно отрицательное и
основание системы счисления равно 10).

Вход: DX:AX = преобразуемое число,
CX = основание системы счисления (от 2 до 16),
ES:DI = адрес начала буфера для результата (до 12 байтов) .

Выход: ES:DI = не изменяется,
AL = длина строки-результата (в байтах) .

Портит: AX, BX, CX, DX, SI;
очищает флаг Direction.

Ограничения: Правильность задания основания системы счисления не
проверяется, для значения вне диапазона 2..16 результат
не гарантируется.
|
pushds
movbl, 1
pushdi
cld
xchgbx, ax
oral, al
jzL2S@1
cmpcx, 10
jneL2S@1
ordx, dx; negative (only for radix = 10) ?
jnsL2S@1
moval, '-'; store 'minus' sign for decimal negative
stosb
negbx
adcdx, 0; convert to positive
negdx
L2S@1:
movsi, di; beginning of number image
L2S@4:
xchgdx, ax
xordx, dx
orax, ax
jzL2S@2
divcx
L2S@2:
xchgbx, ax
divcx
xchgdx, ax
xchgbx, dx
addal, '0'
cmpal, '9'; is it numeric char ?
jbeL2S@3
addal, 'A'-'0'-10; no - convert to hex digit A..F
L2S@3:
stosb; store digits in reverse order
movax, dx
orax, bx
jnzL2S@4; convert next digit
movcx, di
pushes
popds
L2S@5:; end of conversion - reverse string
decdi; advance end index to previous character
lodsb; load char from beginning and advance addr.
xchg[di], al
mov[si-1], al; exchange ends of string
leaax, [si+1]
cmpax, di; done ?
jbL2S@5; no - continue reversing
popdi; yes - restore string starting address
subcx, di
moval, cl; AL = string length
popds
ret

L2Sendp

Это под дос ессно. Под Flat сам переделывай.
Олег Юшин
Олег Юшин
40 192
вас интересует вручную или на калькуляторе?
Антон Евсеев
Антон Евсеев
15 196
Здесь гляньте - http://www.arbinada.com/pmk/node/39
Азамат
Азамат
763
Я умею. :) Зайди в калькулятор, выбери инженерный, Dec - десятичный, hex - шеснадцатиричный

Похожие вопросы