Giroch Естесственно не выдаёт. Ждёт ведь нажатия клавиши. Пусть в al лежит число 60. 1) Помещаете в другой регистр цифру 6 (настолько простой арифметикой, что я оставляю эту задачу на Вас) 2) смотрите по таблице из #2: ага, 6 должна превратиться в 54, т.е. заменяем 6 на 54 (замена тоже очень простой арифметикой, и реальная таблица здесь, естесственно, не нужна) 3) Записываете 54 либо во временный буфер (будущая строка) либо сразу на экран, например, как в #10. Аналогично вычленяем нуль. И т.д., пока цифры не закончатся.
ну вот теперь вижу реальную сторку - последовательность кодов каждой цыфры (СПАСИБО) только их кажется наоборот надо будет выдавать на экран. Но вот с элементарной арифметикой сложнеее нельзя ли вообще на пальцах? я имею ввиду общую закономерность перещота символов в ASCII, а не конкретно "60"
Giroch Алгоритм, чтобы не пришлось выводить в обратном порядке: 1. Находим остаток от деления исходного числа на 10 (или 16, если хотим в 16-ричном представлении). 2. Запихиваем найденный остаток в стек. 3. Инкрементируем счётчик цифр. 4. Делим число на десять (на самом деле это уже сделано первым пунктом, если вывод предполагается в десятичной системе). 5. Если частное не равно нулю, переходим к пункту 1. Иначе переходим к выводу на экран (начиная с пункта 6). 6. Вынимаем последнюю записанную цифру из стека. 7. Добавляем к ней 48 (это для вывода в десятичном представлении, для вывода в 16-ричном на грамм сложнее). 8. Выводим полученное число (оно уже является кодом символа) на экран. Например, как в #10. 9. Декрементируем счётчик цифр. 10. Если счётчик цифр не равен нулю, то переходим к пункту 6. Иначе закругляемся.
Giroch Да не. Там сначала был ответ на пост #23. Потом я увидел пост #24 и решил сразу на него ответить.
это я уже читал непонятно вот что коды ASCII это в какай системе 10 или 16 по моему их просто пронумировали цифра | 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 48; 49: 50; 51 и т.д. Какая ж тут система счисления??
Giroch Система счисления существует только в Вашем (и моём, и любого другого человека) воображении. Если вопрос в том, в какой системе счисления я имел в виду числа из таблицы, то в десятичной. Чаще всего подразумевается десятичная система, если в представлении числа не указано обратное: с помощью префикса (0x , например) или суффикса (h, например).
Сессия Эта темка еще приличная. Про эллипс вообще месяц уговаривали правильно написать, а не рисовать квадратно-гнездовым
Может вопрос и прост, но досих пор никто неуловил его суть! Попробую ещо разок. цифра | 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 В AL имеем "57". на экране нужно получить тоже "57", а не "9" как следует из таблички.
Giroch в AL число равное 57, чтобы вывести его на экран нужно 57 разделить на 10 к частному (=5) и остатку (=7) добавить число 48 и из чисел 53(=5+48) и 55(=7+48) создать строку и ограничить ее символом "$", адрес строки передать в DX и вывести строку на экран 9 функцией 21h прерывания
Giroch Ужас. Вы ведь раньше нигде не упоминали, что умудряетесь (вопреки всем пояснениям) использовать табличку в противоположную сторону.
Уже бы дали человеку ссылку или показали подпрограмму. Код (Text): ; ax - 16-разрядное число для перевода ; ds:si - указатель на буфер в 5 байт или 6 байт (если записывается терминатор) usword: mov bx,10 xor cx,cx @@: xor dx,dx div bx inc cx push dx and ax,ax jnz short @b @@: pop ax add al,"0" mov [si],al inc si loop @b ; mov [si],cl ; терминатор при необходимости ret
Phantom_84 И как же мы сразу не догадались. Приводили подробные пояснения, алгоритмы, пытались дать возможность самому написать, а оказывается надо было просто код привести.
Вывод: Код (Text): ; ds:dx - указатель на нольтерминальную строку print: cld push ds pop es mov di,dx mov ax,4000h mov bx,1 ; STDOUT mov cx,0FFFFh repne scasb not cx dec cx int 21h ret В нашем случае можно сделать проще: Код (Text): mov si,number call usword mov ah,40h mov bx,1 lea cx,[si-number] mov dx,number int 21h ... number: rb 5
I_inc, по поводу элементарной вещи устроили обсуждение на две страницы. Сразу бы дал свой алгоритм вместе с подпрограммой и тема бы была закрыта.