Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Вывод числа  (Прочитано 15829 раз)
0 Пользователей и 1 Гость смотрят эту тему.
LaMeR
Гость
« : 09-09-2003 07:46 » 

Здравствуйте товарищи.
У меня такая проблемка.
Есть некоторое многозначное число. Как его вывести на экран :?:  При обыкновенном выводе у меня выходит текст(муть всякая).
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #1 : 09-09-2003 08:07 » 

Цитата

многозначное число


Это как понимать?

Цитата

 При обыкновенном выводе


А это что такое?

Числа бывают в разных представлениях- целые(когда 4 бита представляют 16 ричное число), с фиксированной запятой, с плавающей запятой и т.д.
Требуется уточнение, желательно с кодом.
Записан
LaMeR
Гость
« Ответ #2 : 09-09-2003 08:18 » 

Например в переменной A у меня находится число 395.

Я делаю:
mov ah,40h
mov bx,1
mov cx,   (даже не знаю что тут писать)
lea dx,A
int 21h

Мне надо просто вывести на экран многозначное число(целое, получившееся в результате выполнения программы).
Записан
LaMeR
Гость
« Ответ #3 : 09-09-2003 08:20 » 

В Досе.
Записан
sh_m
Гость
« Ответ #4 : 09-09-2003 08:31 » 

Давно с Ассемблером не работал, но кое-что помню. Число сначала нужно преобразовать в строку (или выводить по одному символу задом-наперед).
Алгоритм преобразования (в десятичный вид) - где нибудь в цикле делишь число на десять, к остатку от деления прибавляешь 30h и получаешь цифру в текстовом виде. А дальше, как я уже и говорил, либо сразу на экран, либо формируешь строку. Только не забудь, что цифры ты получаешь задом-наперед.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 09-09-2003 12:57 » 

Неужели еще кто-то использует дос? Ага

Вот для печати 16бит в десятичном виде.
Код:

print_number{ ; ax = число 0..65535, cl = 1 )печатать с ведущими нулями:.
  xor dx,dx
  div ax,10000
  call L_print_digit
  mov ax,dx
  xor dx,dx
  div ax,1000
  call L_print_digit
  mov ax,dx
  xor dx,dx
  div ax,100
  call L_print_digit
  mov ax,dx
  xor dx,dx
  div ax,10
  call L_print_digit
  mov ax,dx
  mov cl,1
  call L_print_digit
  ret
;
L_print_digit{ ; al = digit, cl = display flag
  test cl,cl
  jnz L_print_digit_1
  test al,al
  jnz L_print_digit_1
  ret
L_print_digit_1{
; если используется dx - сделать push/pop в этом блоке
  add al,48
  mov bl,al ; Параметры проверь - не помню в каких регистрах передается.
  mov bh,87h ; white color
  mov ah,1 ; точно не помню - стоит проверить. Ф-ия вывода одного символа.
  int 21h
  ld cl,1
  ret

Код конечно не проверял - не на чем. Ага

Для печати hex - придумай сам - еще проще.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
LaMeR
Гость
« Ответ #6 : 10-09-2003 10:33 » 

Пасиба :!:  Показываю язык
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #7 : 10-09-2003 12:33 » 

LaMeR, заходи еще  Отлично
Записан

А птичку нашу прошу не обижать!!!
Sashok
Молодой специалист

us
Offline Offline
Пол: Мужской

« Ответ #8 : 21-09-2003 15:30 » 

Цитата: RXL
Неужели еще кто-то использует дос? Ага

Вот для печати 16бит в десятичном виде.
Код конечно не проверял - не на чем. Ага

То есть как это - не на чем? Открываешь Досовское окно, вызываешь debug, командуешь a и вперед. От меток, правда, придется отказаться, но ничего, адреса посчитать можно Ага
Записан

Если бы окружающие нас объекты содержали столько же ошибок, сколько программы, цивилизация обрушилась бы от первого порыва ветра...
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 21-09-2003 17:58 » 

Так я на работе под Linux-ом работаю... Dosemu и прочие штучки не практикую - нет нужды.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
xAL
Гость
« Ответ #10 : 04-10-2003 01:56 » 

Вот вывод без ведущих нулей:
Код:

; Вывод числа из dx
decout{
        push    ax
        push    cx
        push    dx
        push    bx

        mov     ax, dx
        mov     bx, 10d
        xor     cx, cx
non_zero{
        xor     dx, dx
        div     bx
        push    dx
        inc     cx
        cmp     ax, 0
        jne     non_zero
        mov     ah, 2h
write_digit_loop{
        pop     dx
        add     dl, 30h
        int     21h
        loop    write_digit_loop

        pop     bx
        pop     dx
        pop     cx
        pop     ax
        ret
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 04-10-2003 11:13 » new

Просто и оригинально  Улыбаюсь
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines