Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

RusFAQ.ru: программирование на языке Assembler

Выпуск № 770
от 25.09.2004, 17:50

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 5857
Отправлено ответов: 15710
Активность: 268.2 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]

ВНИМАНИЕ!
9 октября 2004 года в 17:00 (суббота) состоится встреча экспертов и подписчиков из Москвы и Области.
С собой иметь некоторое количество денежных знаков в разумных пределах для рюмочно-закусочного заведения.
Всем желающим принять участие в данном мероприятии просьба писать администратору по адресу: adm@rusfaq.ru или сбросить СМС-сообщение на номер +7-926-535-23-31, где сообщить Ваше имя и намерение присутствовать на встрече.
Место встречи будет сообщено дополнительно в начале октября персонально каждому, кто решит принять участие в тусоffке (по почте или СМС-кой соответственно).
Приглашаются все желающие!



 Список экспертов, ответы которых опубликованы в данном выпуске

Алексей
Статус: Опытный
Общий рейтинг: 152.94
[Подробней >>]
Стас
Статус: Опытный
Общий рейтинг: 122.67
[Подробней >>]
SackTap
Статус: Опытный
Общий рейтинг: 110.46
[Подробней >>]
 
Василевский Александр
Статус: Доверительный
Общий рейтинг: 116.96
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 116.29
[Подробней >>]
Евгений Иванов
Статус: Профессиональный
Общий рейтинг: 132.58
URL: Super Assembler Software
Телефон: НСС +7 831 3107039
[Подробней >>]
 
bocha
Статус: Профессиональный
Общий рейтинг: 121.02
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 5837. Люди, скажите, пожалуйста, как писать и читать из портов? Заранее спасибо за ответы ;)... (ответов: 3)
Вопрос № 5838. Здравствуйте, Эксперты! Я дисассемблировал dll, которая позволяет работать работать с CD-приводом. В... (ответов: 2)
Вопрос № 5839. Здравствуйте! Вопросик такой, можно ли под ntvdm использовать sft-таблицы? По идее, должно быть так:... (ответов: 1)
Вопрос № 5840. Pomogite plz.Ya sho to ne ochen' ponyal sho delaet ukazanie "XLAT"?I mojno li s pomosh'u &... (ответов: 4)
Вопрос № 5841. Здравствуйте! В моей программе производится запись и чтение дискеты по секторам. В свое время я напи... (ответов: 1)
Вопрос № 5843. Help! Подскажите как получить содержимое текстовой строки набраной через пробел после имени приложен... (ответов: 4)
Вопрос № 5844. I need to write an assembly-language program (IA32 code) that will do the following: 1st: read 20... (ответов: 2)
Вопрос № 5846. Я написал программу для редактирования текстовых файлов. Объясните мне пожалуйста поподробней,как со... (ответов: 1)
Вопрос № 5847. Уважаемые эксперты! Какая разница между командой mov eax,[offset buff+4] и командами mov edi,offset ... (ответов: 3)
Вопрос № 5848. Здравствуйте. Подскажите, есть ли какой-то простой и "обкатанный" способ перевести число в... (ответов: 3)

Вопросов: 10, ответов: 24


 Вопрос № 5837

Люди, скажите, пожалуйста, как писать и читать из портов?
Заранее спасибо за ответы ;)



Вопрос отправлен: 13.09.2004, 19:26
Отправитель: UKY

[Следующий вопрос >>] [Список вопросов]

Отвечает Алексей

Доброе время суток, UKY!
in <номер порта>, <регистр, куда читаем>
out <номер порта>, <регистр, откуда пишем>

Ответ отправлен: 13.09.2004, 20:08
Отправитель: Алексей


Отвечает Стас

Здравствуйте, UKY!
Что ты имеешь в виду? Вообще или в под виндами?
(Для чтения порта используется команда IN al,порт: для записи в порт OUT порт,al)

Ответ отправлен: 14.09.2004, 04:19
Отправитель: Стас


Отвечает SackTap

Приветствую Вас, UKY!
in - читать
out - писать

Ответ отправлен: 17.09.2004, 07:49
Отправитель: SackTap


 Вопрос № 5838

Здравствуйте, Эксперты!
Я дисассемблировал dll, которая позволяет работать работать с CD-приводом. Вот только я не могу разобраться с кодом:(
Не могли бы помочь, плз?
То есть, насколько я понимаю, StarBurn_GetVersion - Ord: это объявление подпрограммы. 03E8h - функция, которая позволяет выйти на com3 порт.
Далее идёт код, для 32 разрядной шины. 20040814 - функция.
Правильно ли я всё это описал? Как можно получить результат этой функции? Если вы сможете сделать маленький пример, это было бы просто отлично:)
Заранее благодарен.
С уважением,
Сергей
P.S.
Если есть у кого-нибудь доки с описания функций и работе с приводом (CD/DVD), пришлите, пожалуйста.


Приложение:


Вопрос отправлен: 14.09.2004, 14:51
Отправитель: Сергей

[Следующий вопрос >>] [Список вопросов]

Отвечает Василевский Александр

Доброе время суток, Сергей!
По поводу Вашего кода:
Exported fn(): StarBurn_GetVersion - Ord:03E8h
Эта строчка говорит, что объявлеется функция StarBurn_GetVersion, она экспортируема (её могут использовать любые другие программы) и находится по смещению 03E8h от начала файла.
:00439B98 B814080420 mov eax, 20040814
Эта команда засылает в регистр EAX какое-то число. Судя по названию процедуры, эта функция возвращает версию чего-то.
:00439B9D C3 ret
Команда выхода из процедуры.
По поводу использования.
Данную процедуру можно использовать следующим образом:
C/C++:
Обьявление в H-файле:
...
DWORD STDCALL StarBurn_GetVersion( void );
...
Использование:
...
DWORD dwVersion = StarBurn_GetVersion();
...
Assembler:
...
EXTERN StarBurn_GetVersion: PROC
...
CALL StarBurn_GetVersion
; в результате в EAX будет помещён номер версии
...
Примечание
Данная процедура является очень простой. Здесь легко проследить, что она не получает никаких данных. С другими процедурами следует быть поаккуратней. В Assembler'е непросто узнать, какие аргументы передаются процедуре, и что они из себя представляют.



Ответ отправлен: 14.09.2004, 15:30
Отправитель: Василевский Александр


Отвечает Алексей

Добрый день, Сергей!
Функция ничего не делает, просто возвращает версию, вернее, судя по цифре - это какая-то дата (14.08.2004). Дата версии dll'ки, скорее всего. Любые цифры в функциях возвращаются через регистр eax и эта не исключение...
пример простой:
call StarBurn_GetVersion ; без параметров
cmp eax, XXXX ; сравниваем полученную версию с той, под которую мы пишем программу
; далее можно применить команду условного перехода, например jge для того, чтобы сообщить пользователю, что (например) версия данной dll младше чем та, под которую написана программа, в противном случае юзаем без вопросов.

Ответ отправлен: 14.09.2004, 17:47
Отправитель: Алексей


 Вопрос № 5839

Здравствуйте!
Вопросик такой, можно ли под ntvdm использовать sft-таблицы?
По идее, должно быть так:
...
mov bx,descriptor
mov ah,1220h
int 2Fh
mov bx,es:[di]
mov ax,1216h
int 2Fh
...;че-нить поменять в sft



Вопрос отправлен: 14.09.2004, 16:36
Отправитель: iNFECTED_v0mit (infected_vomit@nc.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Алексей

Добрый день, iNFECTED_v0mit!
Чего-то у тебя ошибка во второй строчке.
почему ah? может ax :))

Ответ отправлен: 15.09.2004, 09:57
Отправитель: Алексей


 Вопрос № 5840

Pomogite plz.Ya sho to ne ochen' ponyal sho delaet ukazanie "XLAT"?I mojno li s pomosh'u "XLAT" opredelit' kakoy znak v stringe tipa:3+5(esli u menya est' massiv:
sign db '-+*/'???



Вопрос отправлен: 15.09.2004, 12:40
Отправитель: rapa

[Следующий вопрос >>] [Список вопросов]

Отвечает Стас

Добрый день, rapa!
XLAT это: AL <= ES:[BX+AL].
То есть в AL загружаем значение из таблицы ES:BX с порядковым номером AL.
Применяется обычно для перекодировки, например в AL ASCII код в кодировке DOS, по адресу ES:BX (255 байт) таблица, с кодами KOI-8R - делаем XLAT и в AL уже код KOI-8R.

Ответ отправлен: 15.09.2004, 13:24
Отправитель: Стас


Отвечает Ayl

Доброе время суток, rapa!
XLAT table:
AL = table [AL]
Т.е. эта команда выбирает значение из байтового массива, указанного в команде, с номером элемента, равного AL и помещает его в регистр AL. Нумерация элементов от 0.
Насчет определения знака XLAT вряд ли есть лучшее решение, т.к. для него потребуется описание достаточно большого массива (до элемента max (ASC ('-'), ASC ('+'), ASC ('*'), ASC ('/')), где ASC - ASCII код символа). Лучше, наверное, делать прямой поиск по строке sign. Она небольшая, т.ч. искать будет быстро.


Ответ отправлен: 15.09.2004, 13:16
Отправитель: Ayl


Отвечает Василевский Александр

Доброе время суток, rapa!
XLAT.
Данная команда была введена начиная с процессора i8086. она предполагает, что в регистр BX загружен адрес 256-ти байтовой таблицы байтов, а в регистр AL загружен индекс нужного байта. Команда возвращает (в регистре AL) байт с номером AL из таблицы адресуемй BX. Т.е. следующий код является её эквивалентом:
PUSH BX ; региср BX не должен изменяеться
PUSH AX ; аналогично для регистра AH
XOR AH, AH ; AH = 0
ADD BX, AX ; BX - адрес байта в таблице
MOV AL, [BX] ; читаем байт
POP AX
POP BX
Надеюсь понятен алгоритм работы команды. Эта команда была актуальна до процессора i80386, т.к. все предыдущие процессоры могли обращаться к памяти только через регистры BX, SI, DI, BP. Начиная с процессора i80386 к памяти можно было обращаться не только через все регистры, но и используя сумму двух регистров. Так, следующая команда эквивалентна XLAT (предполагается, что EAX был очищен перед занесением индекса в регистр AL):
MOV AL, [EBX+EAX]
Чаще всего команда XLAT использовалась для преобразования числа от 0 до 15 в эквивалентный её символ (в 16-ой с/с):
...
hex DB "0123456789ABCDEF"
...
; в регистр AL должно быть загружено число
MOV BX, OFFSET hex
XLAT
; теперь в регистре AL будет символ в формате ASCII.
Теперь о втором вопросе.
Нет. С помощью команды XLAT нельзя определить знак. Для определения знака необходимо использовать команду SCASB:
str DB "+-*/"
...
MOV AL, <символ>
MOV SI, OFFSET str
CLD
MOV CX, 4 ; количество символов в строке
REPNE SCASB
; если CX равен 0, то символ не узнан
...


Ответ отправлен: 16.09.2004, 09:04
Отправитель: Василевский Александр


Отвечает Алексей

Приветствую Вас, rapa!
Чтобы с помощю этой команды можно заменить какие-либо символы в строке. Чтобы "opredelit' kakoy znak v stringe tipa:3+5(esli u menya est' massiv: sign db '-+*/'" с использованием XLAT - нужно быть извращенцем.
Это из интеловского мануала вырезка:
XLAT/XLATB - Ассоциативная трансляция в таблице
Код | Команда | Число тактовых циклов | Описание
D7 | XLAT m8 | 4 | Установка AL равным
байту памяти
DS:[(E)BX+AL]
D7 | XLATB | 4 | Установка AL равным
байту памяти
DS:[(E)BX+AL]
Работа команды
--------------
IF AddressSize = 16
THEN
AL <- (BX + ZeroExtend(AL))
ELSE (* AddressSize = 32 *)
AL <- (EBX + ZeroExtend(AL))
FI;
Описание
--------
Команда XLAT изменяет реги стр AL с индекса таблицы на элемент таблицы. Регистр AL должен представлять собой индекс без знака для таблицы, адресуемой парой регистров DS:BX (в случае атрибута размера адреса, равного 16), или DS:EBX (в случае атрибута размера адреса 32 бита).
Операнд команды XLAT позволяет переопределение сегмента. Команда XLAT использует содержимое регистра BX даже при его отличии от смещения операнда. Смещение операнда должно быть помещено в регистр BX или EBX предыдущей командой.
Форма команды, не имеющая операнда, XLATB, может быть использована, если таблица для BX или EBX всегда находится в
сегменте DS.
Изменяемые флаги
----------------
Отсутствуют
Исключения защищенного режима
----------------------------------
#GP(0) в случае недопустимого исполнительного адреса операнда
памяти в сегментах CS, DS, ES, FS или GS; #SS(0) в случае
недопустимого адреса в сегменте SS; #PF(код сбоя) в случае
страничного сбоя; #AC для невыравненной ссылки к памят и при
текущем уровне привилегированности, равном 3.

Исключения режима реальных адресов
---------------------------------------
Прерывание 13, если какая-либо часть операнда лежит вне
пространства исполнительных адресов от 0 до 0FFFFH.
Исключения виртуального режима 8086
----------------------------------------
Те же исключения, что и для режима реальных адресов: #PF (код сбоя) для страничных сбоев. #AC для невыравненной ссылки к памяти при текущем уровне привилегированности, равном 3.


Ответ отправлен: 16.09.2004, 10:48
Отправитель: Алексей


 Вопрос № 5841

Здравствуйте! В моей программе производится запись и чтение дискеты по секторам. В свое время я написал ее под ДОС. Под ДОСом она работала. Работала также в виндах 98 и XP SP-1. Я поменял машину. Программа перестала работать. Операционная система XP SP-1 та же с которой работала прога на другой машине. Компилятор старый masm5.0. Если запускаю прогу через отладчик CodeView, то ошибки нет и программа работает как надо. Ошибка 09h возникает при вызове прерывания 13h. Подскажите что можно сделать, т.к. из отладчика прога работает.
; в начале я сбрасываю контролер
; сброс контроллера дискеты
m00: mov ah ,0
mov dl ,0
int 13h
jnc m1
затем читаю или записываю сектор дискеты с помощью прерывания 13h.



Вопрос отправлен: 15.09.2004, 15:37
Отправитель: SergL

[Следующий вопрос >>] [Список вопросов]

Отвечает Алексей

Приветствую Вас, SergL!
Не скажу на 100%, но у меня и под SP1, и под SP2 работает прекрасно. А вот под виндами вообще нет смысла контроллер сбрасывать... И еще, иногда бывает, что чтобы записать на дискету, или читать её, необходимо делать это не один раз (минимум 3 последовательные попытки), и отслеживать ошибки. Если ошибка, то повторять команду еще раз... Тяжело сказать, что не работает, не видя кода!

Ответ отправлен: 16.09.2004, 10:56
Отправитель: Алексей


 Вопрос № 5843

Help!
Подскажите как получить содержимое текстовой строки набраной через пробел после имени приложение (.COM) в командной строке ДОС



Вопрос отправлен: 16.09.2004, 16:14
Отправитель: Serg

[Следующий вопрос >>] [Список вопросов]

Отвечает Василевский Александр

Здравствуйте, Serg!
При трансляции COM-файла, как Вы помните, необходимо указать смещение начала файла:
ORG 100h
Это смещение необходимо для того, чтобы могла разместить PSP (программный префикс). И PSP сохраняются некоторые векторы прерываний и командная строка приложения. Для вашей задачи необъходимо знать, что по смещению 80h хранится длинна текстовой строки, которая была набрана вслед за именем программы минус любые символы переназначения (такие как <, > и другие). По смещению 81h командная строка.
В приложении приведён пример, печатающий командную строку. Он компилировался следующими командами:
tasm print.asm
tlink /t print.obj
Поэкспериментируйте с этой программой. Вы заметите, что выводится один пробел, отделяющий имя программы от командной строки. ,тот пробел лгко отбросить (отмените комментарий в строке со звёздочкой).


Приложение:

Ответ отправлен: 17.09.2004, 09:35
Отправитель: Василевский Александр


Отвечает Алексей

Здравствуйте, Serg!
mov ah, 62h ; получить адрес PSP
int 21h ; досовское прерывание
push bx ; es=bx
pop es ; теперь в es:[81h] находится коммандная строка длиной 7fh - там еще какой-то мусор, судя по всему. Поэтому советую вывести все байты и посмотреть, где именно!

Ответ отправлен: 16.09.2004, 16:56
Отправитель: Алексей


Отвечает Евгений Иванов

AdrCmdLine = 128 ;начало командной строки
mov si,AdrCmdLine
lodsb
or al,al
jz help
mov cl,al
sub ch,ch
push si cx ;увеличиваем регистр букв (делаем одинаковыми)
mov bx,ofs tabl_small_big
mov di,si
m101a:
lodsb
xlat
stosb
dec cx
jnz m101a
pop cx si
mov ah,79
mov di,ofs name1
call get_name
jc help
cmp [w name1],'?/'
jz help
;--- GET_NAME ---------------------------------------------------------------
;IN:AH=максим.размер буфера,куда переписывать данные командной строки.
;DS:DI=адрес буфера.
;DS:SI=адрес начала участка командной строки.
;CX=размер оставшейся части командной строки.
;OUT:CF=1-ошибка,код ошибки в AL(0-нет символов,1-переполнение буфера)
;CF=0-все хорошо.
;AH=число символов скопированных.
proc get_name ;=1g
push bx ax
xor bx,bx
jcxz m171g
m151g:
lodsb
cmp al,33
jnc m201g
loop m151g
m171g:
pop ax
mov al,0
exit_g_n2:
push ax
stc
jmp exit_g_n
m161g:
pop ax
mov al,1
jmp exit_g_n2
m201g:
dec si
inc ah
m251g:
lodsb
cmp al,33
jc m271g
dec ah
jz m161g
dec cx
stosb
inc bx
jmp m251g
m271g:
dec si
pop ax
mov ah,bl
push ax
clc
exit_g_n:
mov al,0
stosb
pop ax bx
ret
endp
* EMan: -=- И легко перо, да на крышу не закинешь. =-=


Ответ отправлен: 18.09.2004, 20:24
Отправитель: Евгений Иванов


Отвечает Стас

Здравствуйте, Serg!
Могу добавить что если после имени файла идут DOSовские имена файлов (типа:tst.com A:MY.DAT d:some.bin), то "разобранные" они будут лежать по адресу 5c и 6c (т.е. 5c: db 1,'MY DAT', 6c:db 4,'SOME BIN', 1 и 4 это дисковод сооветственно A и D).

Ответ отправлен: 17.09.2004, 20:51
Отправитель: Стас


 Вопрос № 5844

I need to write an assembly-language program (IA32 code) that will do the following:
1st: read 20 numbers (some positive, some negative)
,while the numbers are being read, compute a running sum of the negative ones, print out that sum, print out the line, "That is A RESULT"
I can't use the code by first writing C code and then compiling it: the compilers use certain conventions.

Evgenii



Вопрос отправлен: 17.09.2004, 08:18
Отправитель: Evgenii

[Следующий вопрос >>] [Список вопросов]

Отвечает Алексей

Приветствую Вас, Evgenii!
Из того что понял я: тебе нужна программа в коде IA-32... это можно трактовать двояко. Далее программа должна считать из неоткуда 20 чисел и посчитать сумму отрицательных чисел и вывести строку. Ты так же не можешь использовать Сишный код из-за каких-то (непонятных для меня) приколов с компиляторами. ЭТО ТО, ЧТО ПОНЯЛ Я.
----
Всем этим я хотел сказать, что не совсем понятно, какая тебе необходима программа?

Ответ отправлен: 17.09.2004, 10:44
Отправитель: Алексей


Отвечает Стас

Приветствую Вас, Evgenii!
So, write it!
Where the question?

Ответ отправлен: 17.09.2004, 20:53
Отправитель: Стас


 Вопрос № 5846

Я написал программу для редактирования текстовых файлов. Объясните мне пожалуйста поподробней,как создать scrollbar в окне (не диалоговом), без него никак.



Вопрос отправлен: 18.09.2004, 22:04
Отправитель: {+Duracell-]

[Следующий вопрос >>] [Список вопросов]

Отвечает Василевский Александр

Доброе время суток, {+Duracell-]!
Любое Windows-окно может иметь горизонтальную и/или вертикальную полосы прокрутки. Их можно создать при указава флаги WS_HSCROLL и WS_VSCROLL в стиле окна при его создании (CreateWindowEx). Работать с этими окнами можно при помощи функций SetScrollPos, SetScrollInfo и др., указав в качестве дескриптора строки прокрутки дескриптор созданного окна.
Альтернативный способ - создание дочерних окон, используя в функции CreateWindowEx имя класса "SCROLL". Работают с ними при помощи тех же функций, только указывают дескриптор созданной полосы прокрутки.


Ответ отправлен: 20.09.2004, 10:21
Отправитель: Василевский Александр


 Вопрос № 5847

Уважаемые эксперты! Какая разница между командой
mov eax,[offset buff+4]
и командами
mov edi,offset buff
mov eax,[edi+4]
Получаются разные результаты в eax.



Вопрос отправлен: 18.09.2004, 22:59
Отправитель: Alex

[Следующий вопрос >>] [Список вопросов]

Отвечает Стас

Добрый день, Alex!
mov eax,[offset buff+4] = mov eax,offset buff+4
т.е. адрес в "массиве" buff 4 "элемента"
mov eax,[edi+4] значение 4 "элемента" из "массива" buff

Ответ отправлен: 19.09.2004, 21:58
Отправитель: Стас


Отвечает Василевский Александр

Здравствуйте, Alex!
Разнится заключается в том, что в первом варианте квадратные скобки Assembler игнорирует, он считает их аналогом обычных скобок. В результате в регистр заносится адрес 4-го байта массива Buff (EAX = Buff+4). Во втором варианте Вы принудительно указываете, что работаете с памятью, в результате в EAX заносится двойное слово из памяти по адресу Buff+4 (EAX = [BUFF+4]).
Если Вы хотите использовать для чтения из памяти первый вариант, то укажите размер операнда:
mov eax, dword ptr [offset buff+4]
Результат будет аналогичен второму варианту.


Ответ отправлен: 20.09.2004, 10:31
Отправитель: Василевский Александр


Отвечает Евгений Иванов

Приветствую Вас, Alex!
в первом случае у тебя, независимо от поставленных квадратных скобок, в регистр заносится смещение (адрес).
;)
надо пользоваться вот так:
mov eax, [buff +4]
удачи!
* EMan: -=- И легко перо, да на крышу не закинешь. =-=


Ответ отправлен: 21.09.2004, 00:15
Отправитель: Евгений Иванов


 Вопрос № 5848

Здравствуйте.
Подскажите, есть ли какой-то простой и "обкатанный" способ перевести число в регистре (или ячейке памати) в ASCI-текст в другой ячейке памяти. К тому же надо знать размер (длину) текста или хотя бы "$" в конце.
Помогите пожалуйста, кодом или ссылкой.
Зарание спасибо :)



Вопрос отправлен: 20.09.2004, 22:25
Отправитель: Andre (a_andre@list.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Стас

Приветствую Вас, Andre!
Способов перевести число в ASCII последовательность масса, каждая конкретная реализация зависит от задачи стоящей перед тобой. Например какие у тебя числа: от 0 до 255 или от 0 до 65535, а может и больше? А может еще и отрицательные? Нужно ли сохранять ASCII последовательность в памяти или можно сразу выводить на экран. Нужны ли нули перед числом, может пробелы (форматированный вывод)? Ну и наконец какие числа будешь выводить только десятичные или и шестнадцатеричные и ...
Вообщем тонкостей масса. Приведу один из простых - от 0 до 255, сразу на экран.

Приложение:

Ответ отправлен: 21.09.2004, 12:19
Отправитель: Стас


Отвечает Евгений Иванов

Добрый день, Andre!
смотри большинство ответов на предыдущие вопросы :)))
* EMan: -=- И легко перо, да на крышу не закинешь. =-=


Ответ отправлен: 22.09.2004, 23:46
Отправитель: Евгений Иванов


Отвечает bocha

Приветствую Вас, Andre!
Архив рассылки посмотреть лень?
Способ достаточно прост: обнуляем строку(д.б. достаточной длинны для хранения самого длинного числа + 1), загружаем число в регистр, делим его на основание с.с. остаток +"0" заносим в массив, пока число в регистре больше ноля, инвертируем строку

Ответ отправлен: 22.09.2004, 01:47
Отправитель: bocha



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (23)
C / C++ (17)
Perl (7)
Builder / Delphi (12)
Pascal (19)
Basic / VBA (6)
Java / JavaScript (6)
PHP (14)
Криптография (6)
WinAPI (12)
Радиоэлектроника (12)
Пользователю
Windows 95/98/Me (48)
Windows NT/2000/XP (64)
"Железо" (40)
Поиск информации (19)
Администратору
Windows NT/2000/XP (45)
Linux / Unix (19)
Юристу
Гражданское право (7)
Семейное право (4)
Трудовое право (6)
КоАП (4)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование


Яндекс цитирования
© 2001-2004 Россия, Москва. Идея, дизайн, программирование: Калашников О.А. ICQ: 68951340
При перепечатке материалов ссылка на данный сайт обязательна!

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.faq
Отписаться

В избранное