[an error occurred while processing this directive]
|
комментариями, а не коменнтариями ;)
mov r0, #low(10000)
mov r1, #high(10000)
#define NUM 100000
mov r0, #NUM/10000h
mov r1, #(NUM - NUM/10000h)/100h
mov r3, #(NUM - NUM/10000h).mod.100h
mov r1, #((NUM - (NUM/10000h)*10000h)\100h)
mov r1, #((NUM - (NUM/10000h)*10000h).mod.100h)
Теперь попробую воспроизвести для четырехбайтный вариант:
mov r0, #NUM/1000000h
mov r1, #((NUM-(NUM/1000000h)*1000000h)/10000h)
mov r2, #((NUM-(NUM/1000000h)*1000000h-(NUM/10000h)*10000h)/100h)
mov r3, #((NUM-(NUM/1000000h)*1000000h-(NUM/10000h)*10000h).mod.100h)
#define HIGHHIGH(num) (num/1000000h)
#define HIGHLOW(num) ((num-(num/1000000h)*1000000h)/10000h)
#define LOWHIGH(num) ((num-(num/1000000h)*1000000h-(num/10000h)*10000h)/100h)
#define LOWLOW(num) ((num-(num/1000000h)*1000000h-(num/10000h)*10000h).mod.100h)
mov r0, #HIGHHIGH(YouNumber)
mov r1, #HIGHLOW(YouNumber)
mov r2, #LOWHIGH(YouNumber)
mov r3, #LOWLOW(YouNumber)
mov r0, #HIGHLOW(YouNumber)
mov r1, #LOWHIGH(YouNumber)
mov r2, #LOWLOW(YouNumber)
Но следует учесть, что не все компиляторы 51-го смогут так раскидать
большое число. На три байта еще могут, а на четыре пробовать надо.
Посмотри в доке на комилятор (если такую вдруг найдешь) ограничение на константу. Как правило это двойное слово (4 байта), но может быть
и меньше.
E-mail: info@telesys.ru