Здравствуйте! Необходимо сделать перевод: есть пустой массив. Ввожу число в интерфейсе в десятичной форме и его необходимо записать в массив слов в шестнадцатеричной форме.Затем я этот массив обрабатываю и выводить на экран мне нужно тоже в десятичной форме. Не могу понять как все это сделать. Сделал ограничение вводимого до 5 символов. Но если ввести число больше 65535 уже будет не слово. Нужно как то все это ограничить. И проверить на корректность(это кажется понял) Подскажите как можно все это реализовать. Все нужно сделать на старом MASMe без while'ов и прочих сишных фишек. Заранее спасибо.
Что непонятно ? Тебе дали ссылку на функцию, которая делает то, что тебе нужно. Не нравится - пиши свой аналог.
Неизвестно, может и на ассемблере. Надо у майкрософта спрашивать, на чем они ее написали. Это имеет значение ?
Ее не нужно никуда засовывать. Ее нужно вызывать, передав на вход параметры и получить на выходе результат.
winnix, у меня есть готовая реализация. 15 WMZ. Если не хочешь платить, поиск по форуму Blackbeam, спасибо за идею
winnix Проблема в чем? В незнании асма? Или думать разучились уже совсем? Это простецкая задачка для разминки мозгов для старших классов школы. Естественно, никто не будет писать готовое решение, просто не интересно. Не хочется думать - погугли. Перевод строки в число и обратно стандартная задача.
А почему нельзя вызвать ф-ю то ? в чем проблема ? =\ хош узнать как ? спрашивай http://wasm.ru/forum/viewtopic.php?id=27414 Поиск по форуму
Из строки в регистр: Код (Text): INPUT="729" Result = 0; '7' -> 7 (SUB AL, '0') Result = Result*10 + 7 = 7 '2' -> 2 Result = Result*10 + 2 = 72 '9' -> 9 Result = Result*10 + 9 = 729 END Из регистра в строку: Код (Text): EAX = 6279 Set EDI = end of the result string buffer EDX=0 EDX:EAX DIV 10 -> EDX=9 and EAX=627 ADD DL, '0' -> DL='9' MOV [EDI], DL -> store at the buffer end DEC EDI -> move to the previous character in buffer if EAX is 0 then stop the loop EDX=0 EDX:EAX DIV 10 -> EDX=7 and EAX=62 ADD DL, '0' -> DL='7' MOV [EDI], DL -> store at the buffer end DEC EDI -> move to the previous character in buffer if EAX is 0 then stop the loop EDX=0 EDX:EAX DIV 10 -> EDX=2 and EAX=6 ADD DL, '0' -> DL='2' MOV [EDI], DL -> store at the buffer end DEC EDI -> move to the previous character in buffer if EAX is 0 then stop the loop EDX=0 EDX:EAX DIV 10 -> EDX=6 and EAX=0 ADD DL, '0' -> DL='6' MOV [EDI], DL -> store at the buffer end DEC EDI -> move to the previous character in buffer if EAX is 0 then stop the loop -> YES! EDI now points to output text.