Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

вывод числа из ax, не получается вывести большое число

52K
06 декабря 2009 года
zmaxon
4 / / 06.12.2009
Вообщем в bx трёх-четырёх-пяти-значное, вообщем большое, число
ен получается вывести на экран :(

пытаюсь вот так


Код:
mov ax,bx   ; в bx кол-во букв
    mov bl,10   ;
    div bl      ; ax делим на bl
    mov bl,ah   ; чтобы не потерять значение (младшая часть)

    mov ah,02
    add al,30h
    mov dl,al   ; в dl - целая часть
    int 21h

    mov ah,02
    add bl,30h
    mov dl,bl  
    int 21h




если интересно, код всей программы

Код:
.model small
    .stack 400h
    .data
str1 db 80,70 dup ('$')
endl db  0Dh,0Ah,'$'
    .code
start:
    mov ax,@data
    mov ds,ax

    mov ah,0ah
    lea dx,[str1]
    int 21h
   
    mov ah,09h
    lea dx,[endl]
    int 21h
       
    xor ax, ax
    mov al, [str1+1]
    add si, ax
    dec si

cycle:
    jcxz ex
    dec cx
   
    mov ah, 'a'
    cmp [ds:si], ah
    je found

    dec si
    jmp cycle

found:
    inc bx
    dec si
    jmp cycle
ex:

    mov ax,bx
    mov bl,10
    div bl
    mov bl,ah

    mov ah,02
    add al,30h
    mov dl,al
    int 21h

    mov ah,02
    add bl,30h
    mov dl,bl
    int 21h

    mov ax,4c00h
    int 21h
    end start



Заранее спасибо за помощь
349
07 декабря 2009 года
Phantom-84
656 / / 27.10.2005
1) для преобразования 16-разрядного целого (неотрицательного?) числа нужно использовать либо двойное деление, либо деление dx:ax, где dx=0 (т.к. 65535/10>255!!!);
2) цифры выделяются в обратном порядке - это нужно учитывать;
3) здесь есть ветка, посвященная простым алгоритмам, где рассматриваются подобные вопросы;
4) как вариант:
Код:
; ax <-- число, ds:si <-- адрес буфера из 6 байт
  mov bx,10
  xor cx,cx
@@:
  xor dx,dx
  div bx
  inc cx
  push dx
  and ax,ax
  jnz @b
@@:
  pop ax
  add al,"0"
  mov [si],al
  inc si
  loop @b
  mov [si],ah ; терминатор
52K
08 декабря 2009 года
zmaxon
4 / / 06.12.2009
ничего не понял :( как применять, что за @@
349
08 декабря 2009 года
Phantom-84
656 / / 27.10.2005
@@ - это метка. @b ссылка на ближайшую подобную метку "сверху".
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог