Консультация № 82831
16.04.2007, 18:59
0.00 руб.
0 2 2
возник вопрос. допустим в регистре al хранится число допустим 5(либо любой другой символ). Можно ли вывести на экран ascii-код этого символа?.
ps. не сам символ а Именно Код.

Обсуждение

давно
Старший Модератор
31795
6196
16.04.2007, 19:30
общий
это ответ
Здравствуйте, Biggle!

В регистрах всегда хранятся только числа(коды символов),
и при выводе на экране рисуется символ код которого выводится.
В приложении код для вывода чисел в 10-ой и 16-ой системах
если в al будет 5 то на экран выведется 5-ка(10) и 05(16),
а если 45 то на экране будет 45(10) и 2D(16)
Если, что пишите.
Удачи

Приложение:
10-я система. mov bx,10 xor cx,cxgo_div: xor dx,dx div bx;делим на 10, dx=0:9 остаток от деления push dx inc cx or ax,ax;пока больше нуля jnz go_div cldgo_out: pop ax or al,30h;перевод в символы int 29h loop go_out16-я система WriteByte: push ax;выводим байт shr al,4 call WriteHalf;для вывода старшей половины pop ax;теперь выводим младшую половинуWriteHalf: and al,0fh or al,30h;перевод в символы cmp al,3ah jl WriteNext add al,7;корекция для А-FWriteNext: int 29h ret
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
16.04.2007, 22:18
общий
это ответ
Здравствуйте, Biggle!
Да, предположим, что в al находится ascii – код. al = x1x2, где x1 – старшие 4 бита, а x2 младшие 4 бита. (пример al = 4B)
выводим в шестнадцатеричном формате
Если, x1 0…9 то перед x1 записываем 3, будет вид 3x1, а если A…F то заменяем x1 на 41…46 соответственно будет вид 41, если была A, 42 если была B …, 46 если F. Аналогично проделывается и с x2, (то в нашем примере получится 3442) тогда на экране будет именно ascii - код. 34 на экране – 4, 42 на экране B.

Удачи
Форма ответа