Всё.....я уже ни чё не понимаю......(((((((((( как преобразовать двоичное число в десятичное(BCD)?размер двоичного 6 байт.....процессор 16разрядный..сопроцессор не использовать......
xds
12.11.2006 9:53
Цитата
в десятичное(BCD)
В упакованное (две цифры в байте, например 23d -> 23h) или неупакованное (одна цифра в байте, 23d -> 02h, 03h)?
F0b0s
12.11.2006 14:20
В упакованное
xds
12.11.2006 19:42
В виде вставок пойдёт?
Первый вариант (развёрнутые циклы):
program _bcd;
{$G+}
const Hex: array[0..15] of Char = '0123456789ABCDEF';
var bin: array[0..5] of Byte; bcd: array[0..7] of Byte;
@@div10: mov dl,10 xor ax,ax lea si,bin[5] mov cx,6 @@div: lodsb div dl mov [si+1],al loop @@div ret
@@exit: pop di pop si end;
for i := 0 to 7 do Write(Hex[bcd[i] shr 4], Hex[bcd[i] and $F]); Writeln; end.
F0b0s
12.11.2006 21:09
Я так понял что суть твоего решения заключается в том что ты каждый байт двоичного числа поочереди делишь на десятичное 10, тем самым остаток и является десятичным разрядом...но результат будет не один и тот же если делить побайтно и делить все 6 байт сразу на 10....или я не прав???? Расскажи мне лучше как мне разделить вс 6 байт сразу на 10d
xds
12.11.2006 21:20
Цитата
но результат будет не один и тот же если делить побайтно и делить все 6 байт сразу на 10....или я не прав????
Все зависит от того, что подразумевается под словом "побайтно"
Здесь реализовано полноценное деление 48-битного двоичного числа на 10 (перенос осуществляется через ah). Оно выполняется побайтно за 6 интераций.
Цитата
Расскажи мне лучше как мне разделить вс 6 байт сразу на 10d
Это возможно только в 48-и и более разрядной архитектуре
F0b0s
12.11.2006 21:58
ВСЁ понял.....спасибо
Это ещё возможно с использованием сопроцессора
М
невозможно, если читать первый пост
xds
12.11.2006 22:03
Цитата(F0b0s @ 13.11.2006 0:58)
ВСЁ понял.....спасибо
Это ещё возможно с использованием сопроцессора
Ага Можно ещё использовать 16-битное деление.
F0b0s
17.11.2006 23:07
Вот сам тут кое чё написал.....тока преобразование не в BCD а в ASCII....то из одного другое сделать не сложно.....
NAME
;........................................... Data SEGMENT X1 DQ 000012345678ABCDh R DB 15 DUP(0) Data ENDS