Phantom_84 Чтобы вписать ник адресата в сообщение, можно клацнуть по нему. Что же до своего алгоритма, то в двух страниц (у меня, кстати, одна, если что) обсуждения вряд ли удалось бы избежать. Хотите на две страницы обсудить, почему?
Giroch Дело в том что в "русифицированном" досе используется 866 кодовая страница http://ru.wikipedia.org/wiki/Кодовая_страница. Для того что бы на экране появилась цифра 0, надо по соответствующему адресу внести код символа - это число 48. В 866 кодовой странице(в дальнейшем просто 866) цифре 0 соответствует код 48, цифре 1 соответствует код 49 и так далее(вам это уже l_inc писал... цифра | ASCII-код | сканкод 0 | 48 | 11 1 | 49 | 2 2 | 50 | 3 3 | 51 | 4 4 | 52 | 5 5 | 53 | 6 6 | 54 | 7 7 | 55 | 8 8 | 56 | 9 9 | 57 | 10 В 866 один символ кодируется одним байтом. Соответственно если вы просто поместите в адрес видеокарты число из регистра al, то увидите не его численное представление, а символ кодовой страницы которому соответствует данное число. Поясню на примере... Если в al находится число 65 то при выводе его вы увидите не 65 а букву "A" так как именно этой букве соответствует ASCII-код 65! Для того что бы увидеть на экране число 65 надо: 1 вывести на экран ASCII-код символа 6 которому соответствует число 54 2 перейти на следующий символ и там вывести ASCII-код символа 5 которому соответствует число 53 ну и в результате вы увидите число 65 на экране. Ну или проделать то же самое но не с экраном а со строкой, а потом при помощи соответствующих функций дос(лень смотреть каких) вывести строку на экран. То есть число 65 в строковом представлении будет иметь 2 байта(54,53) а не 1 как регистр al. А алгоритм перевода довольно таки простой. Дело в том что разница между числом и его символьным представлением(ASCII-кодом) равна 48. Это видно из таблицы. Нужно только выделить единицы, десятки, сотни, тысячи и т.д. делением на 10. А потом каждый из символов перевести в ASCII-код. Например двух-байтовое число 64324 будет выглядеть 6 - 54 4 - 52 3 - 51 2 - 50 4 - 52 в строке как пять байтов - (54,52,51,50,52) (я не учитываю символ конца строки, который кстати обязателен. Ну а с этим символом строка будет иметь конечно не пять, а шесть байтов).
Нет уж уважаемый, так просто вы отменя не отделались бы, я разобраться хотел. И благодаря терпению отвечавших вроде разобрался. Ну я так думал до того как l_inc не написал про таблицу наоборот, а теперь даже незнаю....
Giroch Ну куда уж подробнее? Вывести число на экран означает вывести последовательно его цифры. Цифры находятся в левом столбце, а не в среднем. Это значит, что нужно искать в левом столбце то, что хотим вывести, а в среднем то, что должны записать (на экран или в строку). 57 - это число, а не цифра. Вывести на экран число 57 означает, что сначала нужно вывести цифру 5, а потом вывести цифру 7. Это значит, что мы ищем сначала цифру 5 в левом столбце, а передаём в функцию вывода то, что в среднем столбце. Не наоборот!
Ну где то так я и понял. записали код на экране получили цыфру, а строка потому что кода идут в ряд. Это кажется очень просто, но поверьте только после того как уловиш принцып. Теперь я и сам не понимаю что в этом может быть непонятного ))
Giroch Символы должны декларироваться до их употребления. Описание символа связывает внутренний номер символа с его изображением. Внутри описания номер символа может встречаться только один раз. Компьютеры обрабатывают не только числа, но и главным образом тексты, поэтому для ввода данных с клавиатуры и для последующего их вывода на принтер или на экран договорились рассматривать байты не как числа, а как буквено-цифровые символы. Для того, чтобы данные можно было передавать между ЭВМ и периферийными устройствами различных производителей договорились использовать один из стандартных кодов для обмена информацией. Кодирование символов – операция в достаточной мере произвольная, и поэтому существует несколько стандартных буквено-цифровых кодов, например 8-разрядный двоично-десятичный код EBCDIC (Extended Binary Coded Decimal Interchange Code), применяющийся на мэйнфреймах IBM, код Холлерита, для записи информации на перфокартах, 5-разрядный код Бодо, который долгое время являлся стандартным кодом для телетайпов. Наиболее широкораспространенным буквено-цифровым кодом является ASCII (или ANSI). ASCII = American Standard Code for Information Interchange (Американский стандартный код для обмена информацией). Для представления всех букв, цифр и служебных знаков, появляющихся на экране компьютера, обычно используется всего один байт. Всего в ASCII-коде 28=256 символов. ASCII-код используется в мини- и микро-ЭВМ, в том числе и в системах построенных на базе микропроцессоров x86. Символы ASCII включают все символы «американской пишущей машинки» (коды от 32 до 127), специальные «управляющие» коды, такие как табуляция, возврат каретки и так далее (коды от 0 до 31), символы псевдографики и символы для иностранных алфавитов (коды от 128 до 255, так называемая расширенная таблица символов), позволяющие использовать разные умляуты (Â, Á, Å и т.д.) и рисовать псевдографические рисуночки вроде панелей DOS-овского Нортона и progress bar'ов во время копирования. С кодировкой ASCII конкурируют кодовые страницы от MicroSoft и древнее чудовище EBCDIC, почти вымершее со времен господства мэйнфреймов IBM. В настоящее время ASCII код морально устарел и постепенно вытесняется Unicode'ом. При нажатии, например, клавиши «W» на клавиатуре произойдет формирование и передача в компьютер соответствующего этой букве ASCII-кода – 57h. Если же компьютер посылает на монитор или принтер ASCII-код, например 59h, монитор или принтер должны дешифровать эти биты и отреагировать соответствующим образом – вывести на экран или на бумагу букву «Y». ASCII-код используется также для создания файлов в общем формате. Хранение данных в формате ASCII обычно менее компактно, чем в двоичном формате, однако преимущество кода состоит в том, что он является стандартной основой для обмена данными. Кроме буквенно-цифровых кодов ASCII содержит непечатаемые управляющие символы, частично заимствованные из телетайпных кодов: NULL (нуль) – символ содержащий нули во всех разрядах и применяющийся для разделения цепочки символов, а также для других целей, CR (возврат каретки) и LF (перевод строки), устанавливающиеся при печати новой строки, FF (перевод формата), использующийся для перехода к новой странице, ESC, служащий в качестве разделителя команд, ETX (конец текста или «управляющее C»), которое многими операционными системами интерпретируется как указание прервать выполнение программы и т.д. Для быстрой ориентации в ASCII-кодах запомните содержимое таблицы Код (Text): Биты | Группа символов 7 6 5 | ------|------------------------ 0 0 0 |Управляющие символы 0 0 1 |Цифры и знаки пунктуации 0 1 0 |Прописные латинские буквы и спецсимволы 0 1 1 |Строчные латинские буквы и спецсимволы Код буквы «Z» – 5Ah (01011010b). Чтобы получить код строчной латинской буквы, нужно взять код соответствующей прописной буквы и установить в 5-ом разряде 1. Код буквы «z» – 7Ah (01111010b). Коды десятичных цифр 0-9 в любой кодировке (ASCII, EBCDIC, Unicode и т.д.) должны идти в возрастающем порядке, причём коды двух соседних цифр должны отличаться на единицу. Для символов ASCII-цифр значение кода равно самому числу плюс число 30h. Так как ASCII-цифры следуют в возрастающем порядке, поэтому для сравнения значений применимы арифметические действия непосредственно над кодами чисел. Числа передаются в(из) компьютер(а) в виде последовательности символов, представленных в коде ASCII. Например, число 1234 передается как 31h, 32h, 33h, 34h. Компьютер, принимая число, может запомнить его без модификации, как ASCII-строку; либо обнулить старшие тетрады, что будет соответствовать числу в неупакованном BCD-формате – 01020304h; либо может удалить старшие тетрады и получить число в упакованном BCD-формате – 1234h; наконец он может преобразовать это число в двоичный формат – 04D2h (4×162+ 13×161 + 2×160= 1234). Выбор того или иного способа преобразования зависит от выполняемой программы.
Giroch Вот что породило непонимание. Строка с точки зрения программирования состоит из кодов, которые к сожалению тоже записываются цифрами. Код символа цифры, представление цифры в программе и скан-код цифры- это три разные вещи. А поэтому чтобы не было "каши" в голове, то не надо сразу задавать вопросы в разделе новичков, а для начала азы ПОЧИТАТЬ. Там все это разжевано и показано на примерах. А вашу методу обучения я называю условно "кавалерийский наскок".