Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Packed-BCD 
:(
    Опции темы
MayVortex
Дата 20.1.2004, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 17.10.2003

Репутация: нет
Всего: нет



Приветствую! Срочно нужна помощь!

Нужно на С++ + asm написать программу, которая бы переводила введённое с клавы число от (0 до 9999) в Packed-BCD... Почти всё сделал, запоролся на самом простом (наверное) sad.gif

итак:
Код

#include<stdio.h>
#include<conio.h>
void main(void){
    unsigned char x,xl,xh;
    int      xx;
    clrscr();
    printf("Enter: ");
    scanf("%d",&x);
    //здесь надо как-то поделить x на половинки
    //и приписать к кажой из них буковку h
    asm{
 mov        al,xl
 mov        ah,xh
 daa
 mov        xx,ax
    }
    printf("\nPacked BCD X=%04x",xx);
    getch();
}


Например, если человек вводит: 3594 должны получится две переменных со значениями: 35h и 94h... Ума не приложу, как это сделать! sad.gif
PM MAIL   Вверх
bel_nikita
Дата 20.1.2004, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



набери в яндексе "BCD числа"


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
MayVortex
Дата 20.1.2004, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 17.10.2003

Репутация: нет
Всего: нет



Э-хе... Если бы всё так просто было... Я уже облазил весь яндекс, гугл и opennet... только везде примерно одно и тоже: куски кода на ассемблере... У меня с асмом проблем нет, у меня проблема загнать туда нужные значения...

Может я и не прав - но ссылок, в которых описывается как сделать то, что мне нужно на С + асм я не вижу (ткните носом, если я не прав)
PM MAIL   Вверх
MayVortex
Дата 20.1.2004, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 17.10.2003

Репутация: нет
Всего: нет



А вот библиотека BCD.H хоть и делает что-то похожее на то, что мне надо, но её использовать нельзя по заданию smile.gif (точнее по заданию надо использовать ассемблер)
PM MAIL   Вверх
MayVortex
Дата 20.1.2004, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 17.10.2003

Репутация: нет
Всего: нет



Может я конечно с самого начала не прав, но:
Код

#include<stdio.h>
#include<conio.h>
void main(void){
unsigned char x;
int      xx;
clrscr();
asm{
mov        al,45h
mov        ah,15h
daa
mov        xx,ax
}
printf("\nPacked BCD X=%04x",xx);
getch();

даёт именно тот результат, который нужно... Но вот как эти 45h и 15h запросить с клавиатуры (эта часть должна быть на C) - уме не приложу...
PM MAIL   Вверх
mr.DUDA
Дата 20.1.2004, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



Сопроцессор использовать можно ?
Код
#include<stdio.h>
#include<conio.h>
void main(void)
{
     clrscr();
     int Val;
     printf("Enter: ");
     scanf("%d",&Val);
     void *buf = new char[10];

     _asm
     {
           finit
           fild        Val
           mov      eax, buf
           fbstp    [eax]
     }

     Val = *((int*)buf);
     delete buf;

     printf("\nPacked BCD X=%04x", Val);
     getch();



--------------------
user posted image
PM MAIL WWW   Вверх
Unregistered
Дата 20.1.2004, 17:23 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Клёво, спасибо smile.gif
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0734 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.