IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

> Перевод чисел из 10-ной в 15-ричную систему, Неправильно работает
Neon6868
сообщение 16.04.2008 20:37
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 146
Пол: Мужской

Репутация: -  0  +


Задание: Необходимо написать программу для перевода числа из 10-ной в 15-ричную систему счисления. Число в 10-ной системе ввести с клавиатуры, число надо вводить максимум из 4 цифр. Надо заменить числа при выводе следующим образом: 10-A, 11-B, 12-C, 13-D, 14-E.

Программа не правильно работает, если числа больше 200! Например число 300 неправильно переводит! Подскажите плиз почему?

Программа:

 model small
  stack 100h
  .data
  tekst db "Vvedite chislo ne bolee 4-x cifr:",'$'   ;сообщение ввести число
  string dw 4 dup (0)       ;массив, который будет содержать 4 цифры числа
  len_string =$-string      ;длина массива
  delitel db 15              ;основание новой системы счисления
  mas db 4 dup (0)          ;массив из 4 эл-тов, содержащих число 10, который будет содержать цифры числа в новой СС
  chislo dw 0               ;число в 10-ной СС
  ten db 10       
  tekst2 db "Chislo v 15-richnoi SS:",'$'
  ost dw 0
  .code
start:
  mov ax,@data
  mov ds,ax

;выводим сообщение о вводе числа
  mov ah,09h
  mov dx,offset tekst      
  int 21h

;вводим с клавиатуры число
  mov bx,0                 ;номер страницы
  mov cx, len_string       ;записываем количество повторений ввода символа
  lea dx,string            ;записываем символы в массив string
  mov ah,3fh               ;номер функции
  int 21h
  sub ax,2
  mov bx,ax
;получаем из цифр число
  mov si,0                 ;номер элемента массива string          
cikl1:
  cmp si,bx                ;сравниваю цифру числа с числом 10, чтобы проверить что была введена цифра с клавиатуры
  jnb m1                   ;если равно, то выходим из цикла 
  mov ax,chislo            ;записываю число в 10-ной СС в ах
  mul ten                  ;умножаю число на 10
  sub string[si],30h       ;вычитаю из кода символа 48, чтобы получить цифру
  add ax,string[si]        ;прибавляю к ax цифру числа
  mov ah,0
  mov chislo,ax            ;записываю результат в chislo
  inc si                   ;увеличиваю номер элемента на 1
  jmp cikl1                ;если меньше, то переходим на cikl1

m1: 
;перевод в 15-ричную СС
  mov si,0
cikl2:
  mov ax,chislo             ;записываю в ах число, которое буду делить
  div delitel               ;делю число в 10-ной СС на 15
  mov mas[si],ah
  inc ost            
  mov ah,0
  mov chislo,ax
  inc si
  cmp chislo,0
  jne cikl2
    
;замена цифр остатков, если они от 10 до 14, на буквы  
  mov si,0
zamena:
  cmp si,ost
  jnb vivod
  cmp mas[si],10
  jb net
  add mas[si],55
  inc si
  jmp zamena
net:
  add mas[si],30h
  inc si
  jmp zamena
;вывод символов на экран
vivod:  
  mov ah,09h
  mov dx,offset tekst2      
  int 21h
  
  mov si,4
  mov cx,ost
  mov ah,02h
cikl3:
  cmp mas[si],0
  jne m2
  dec si
  jmp cikl3
m2:
  mov dl,mas[si]
  int 21h
  dec si
  loop cikl3
  
  mov ax,4c00h
  int 21h
  end start



Сообщение отредактировано: Neon6868 - 17.04.2008 1:35
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 3)
Despot
сообщение 19.05.2008 17:15
Сообщение #2





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


дааааааа..... походу форум мёртвый...
Ну что, так никто и не подскажет парню что делать?
Как твой len_string работает?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Neon6868
сообщение 22.05.2008 16:05
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 146
Пол: Мужской

Репутация: -  0  +


Цитата(Despot @ 19.05.2008 18:15) *

дааааааа..... походу форум мёртвый...
Ну что, так никто и не подскажет парню что делать?
Как твой len_string работает?


Спасибо Despot ,я уже разобрался...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Despot
сообщение 22.05.2008 23:56
Сообщение #4





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


Цитата(Neon6868 @ 22.05.2008 17:05) *

Спасибо Despot ,я уже разобрался...


ну как работает то?) Просто интересно)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 30.07.2025 3:09
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"