Перевод из десятичной системы в двоичную

Тема в разделе "WASM.BEGINNERS", создана пользователем Weert, 6 июн 2007.

  1. Weert

    Weert New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    24
    Товарищи! Нужна помощ! Нужно напсиать программу перевода введеного с клавиатуры числа из десятичной системы в двоичную. Пытался написать:
    Код (Text):
    1. ;‘…ѓЊ…Ќ’ „ЂЌЌ›•
    2. Data Segment
    3. err1    db  "ЋиЁЎЄ  ў ў®¤Ґ зЁб« .",10,13,'$'
    4. text    db  "‚ўҐ¤ЁвҐ зЁб«®",10,13,'$'
    5. buf db      8 dup(?)
    6. dva db  2
    7. x   dw  10
    8.  
    9. buffer  db  6  
    10. Data ends
    11. ;++++++++++++++++++++++++++++++++++++++++++++++++++++
    12. ;//////////////////‘…ѓЊ…’Ќ ЉЋ„Ђ
    13. ;++++++++++++++++++++++++++++++++++++++++++++++++++++
    14. Code segment
    15.     assume cs:code, ds:data;
    16.  
    17. start:
    18.     mov ax,data
    19.     mov ds,ax
    20.  
    21. ;-------ЏаҐ¤« Ј Ґ¬ ўўҐбвЁ зЁб«®:
    22.     mov ah,9h
    23.     lea dx,text
    24.     int 21h
    25.  
    26. ;-------‘®Ўб⢥­­® б ¬ ўў®¤:
    27.     mov ah,0Ah
    28.     lea dx,buffer  ;ў ЎгдҐа § ЇЁблў Ґ¬ ўўҐ¤Ґ­го бва®Єг.
    29.     int 21h
    30.     mov cl,buffer[1] ;***‚ ‘• ’…ђЏ…ђњ
    31.     xor ch,ch        ;***„‹?ЌЂ ‘’ђЋЉ?  
    32.     mov ax,1
    33. dlin:
    34.     cmp cx,1
    35.     jle exx
    36.     mul x
    37. exx:   
    38. loop    dlin
    39.    
    40.  
    41.     mov si,2
    42.     mov cl,buffer[1] ;***‚ ‘• ’…ђЏ…ђњ;;
    43.     xor ch,ch        ;***„‹?ЌЂ ‘’ђЋЉ?  
    44.     mov bx,ax
    45.     xor dx,dx
    46. cycl:
    47.     mov al,buffer[si]
    48.     sub al,48
    49.     xor ah,ah
    50.     mul bx
    51.     add dx,ax
    52.     shr bx,5
    53.     inc si
    54. loop    cycl
    55.  
    56.     mov ax,dx
    57.     mov cx,8
    58.     mov si,2
    59. viv:
    60.     div dva
    61.     push    ax
    62.     cmp ah,0
    63.     jne _1
    64.     mov al,48
    65.     mov buf[si],al
    66. ;   int 29h
    67.     jmp exx1
    68. _1:
    69.     mov al,49
    70.     mov buf[si],al
    71. ;   int 29h
    72.  
    73. exx1:
    74.     pop ax
    75.     inc si
    76. loop    viv
    77.     mov cx,8
    78.     mov si,2
    79. ppp:
    80.     mov al,buf[si]
    81.     int 29h
    82. inc si
    83. loop    ppp
    84. ;‚›•Ћ„ ў....
    85.     mov ax,4C00h
    86.     int 21h
    87. ;*-*-*-*-*-*-*-*-*
    88. Code ends
    89. ;binary proc
    90. ;   Ret
    91. ;binary endp
    92. end start
    Но не получилось... переводит только числа от 1 до 9 и то не переворачивает запись...
    Надеюсь на вашу помощ.
     
  2. PaCHER

    PaCHER New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2006
    Сообщения:
    852
    А поиском пользовался?
     
  3. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    уже дофига таких тем было. поиск рулит
     
  4. Weert

    Weert New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    24
    В том-то и дело что ничего стоящего не нашел.... по этому и спрашиваю... если дадите ссылку, буду рад.
     
  5. Weert

    Weert New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    24
    Собственно вот так работает. Но как сделать чтобы переводилось введеное число?


    Код (Text):
    1.     mov cx,8
    2.     mov ax,61
    3.     mov si,2
    4. ;‚›•Ћ„ ў....
    5. cycl:
    6.     div dva
    7.     push    ax
    8.     cmp ah,0
    9.     jne ed
    10.     mov al,48
    11.     mov buf[si],al
    12. ;   int 29h
    13.     jmp exxx
    14. ed:
    15.     mov al,49
    16.     mov buf[si],al
    17. ;   int 29h
    18. exxx:
    19.     pop ax
    20.     inc si 
    21. loop    cycl
    22.     mov cx,8
    23.     mov si,cx
    24. viv:
    25.     mov al,buf[si]
    26.     int 29h
    27.     dec si
    28. loop    viv
     
  6. Weert

    Weert New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    24
    Вот, сделал перевод, вроде бы все нормально, но почемуто есть небольшая погрешность, например вместо 58 выдает 55 и т.д. Помогите разобраться почему??? Вродебыпрограмма уже сделана... остался только вот этот момент
    Код (Text):
    1.     xor ax,ax
    2.     pusha
    3. per_ch:
    4.     mov bl,buffer[si]
    5.     sub bl,48
    6.     xor bh,bh
    7.     add ax,bx
    8.     cmp cx,1
    9.     jle exx        
    10.     mul     d10
    11. exx:
    12. loop    per_ch
    13.     mov x,ax
    14.     popa
    15.     mov ax,x
     
  7. Weert

    Weert New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    24
    Все. Решил. Админы! Удаляйте нафиг этот пост! Я сам все сделал!