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

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Из Зфылфд, в С++, ой, пардон, из Paskal в С++  (Прочитано 26773 раз)
0 Пользователей и 7 Гостей смотрят эту тему.
scraper
Гость
« : 30-05-2006 19:52 » 

Имею коротенькую  программку на Paskal.
Пожалуйста, как перевести ее на С++:
Uses Crt;
Var S, B: Byte
   Begin
      WriteLn(‘Чтение данных с порта COM2’);
   Asm
      Mov Ah, 0
      Mov Dx, 1
      Mov Al, 227
      INT 14H
End;
   While not KeyPressed do begin
   Asm
      Mov Ah, 3
      Mov Dx, 1
      Mov Al, 227
INT 14H
      Mov S, AH
End;
If(S and 1) = 1 then begin
   Asm
      Mov Ah, 2
      Mov Dx, 1
INT 14H
      Mov B, Al
      Mov S, Ah
End;
If s = 0 then begin
   WriteLn(B);
End;
End;
End;
While KeyPressed do
ReadKey;
End.
Записан
Михалыч
Команда клуба

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

« Ответ #1 : 31-05-2006 01:14 » 

Не люблю отвечать таким образом, но в данном случае отвечу Улыбаюсь В поиск! Сам года 2 назад столкнулся с подобной проблемой... Без проблем нашел в сети конвертор (и кстати не один) из Паскаля в С. Перевел правильно на 95-100% в зависимости от сложности Улыбаюсь
Записан

Поживем - увидим... Доживем - узнаем... Выживу - учту  Улыбаюсь
nikedeforest
Команда клуба

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

« Ответ #2 : 31-05-2006 02:42 » 

Михалыч, ты где пропадал?Не понял
Я уж подумал не случилось ли чего.
Записан

ещё один вопрос ...
Dimka
Деятель
Команда клуба

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

« Ответ #3 : 31-05-2006 07:28 » new

Цитата: scraper
как перевести ее на С++
Элементарно, scraper. Ага Есть аналоги всех используемых функций. А ассемблер даже переводить не надо.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Михалыч
Команда клуба

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

« Ответ #4 : 31-05-2006 16:34 » 

Михалыч, ты где пропадал?Не понял
Я уж подумал не случилось ли чего.
Не... спасибо, все нормально. Так, приболел слегка, да работы навалили по самые уши Жаль Некогда...
Записан

Поживем - увидим... Доживем - узнаем... Выживу - учту  Улыбаюсь
Sla
Команда клуба

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

WWW
« Ответ #5 : 01-06-2006 07:36 » 

а я протащился от самого кода, особенно от асемблерных вставок
как в паскале так и в с есть функции работы с прерываними
Если не изменяет память use dos; или #include dos.h,
сори, если где ошибся в написании
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
scraper
Гость
« Ответ #6 : 05-06-2006 20:08 » 

Вы не знаете, случайно, алтернативы функциям на Paskal, написаные на C++?
Может подскажите ссылку?
Если не знаете, то хотя бы в этой проге, какая альтернатива?
И каким образом происходит взаимодействие между Asm-ом в коде, и С++?
Наверно, это элементарно, но паскаль я нелюблю, а в С++ сразу бы увидел.
Записан
scraper
Гость
« Ответ #7 : 05-06-2006 20:09 » 

Конвертор, что это, где взять, как работает, как пользоваться?
Записан
scraper
Гость
« Ответ #8 : 05-06-2006 20:43 » 

Короче, не буду многословить, кто что знает:

Com-порты->(функции из стандартного С++, из WinApi, Asm)
__какие эти функции принимают параметры, что возвращают, что можно сделать с помощью них.

Что в системе отвечает за работу Com-портов?
Какие утилиты (Windows XP) маршрутизируют байты из-в Com-порт(а)?

Как система определяет, подключено ли какое-либо устройство через Com-порт?

Албтернатива ответам (нежелательно, но все таки...):
Какие-нибудь ссылки по ответам на эти вопросы.
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #9 : 05-06-2006 20:53 » 

Цитата
И каким образом происходит взаимодействие между Asm-ом в коде, и С++?
Никак. Компилятор ассемблерный участок напрямую перекидывает в машиныые коды и вставляет в текст программы. В большинстве случаев ассемблерный код не будет влиять на построение компилятором сишных команд. Так как политика компилятора "не хранить временные переменные в регистрах".

Если ты знаком с С++. То переделать Паскалевские конструкции под С++ не должно составить труда. Тем более в коде на 20 строк. Я не помню уже (да и не знал) альтернативы команды под ДОС KeyPressed.

Паскалевскую библиотеку CRT можно заменить stdio.h.
Тип Byte можно замнить на char
Команду WriteLn на printf.
Конструкции if, while, Asm нужно только переписать с учетом Сишного синтаксиса.
   
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Alf
Гость
« Ответ #10 : 05-06-2006 20:58 » 

А это действительно необходимо - переводить программу, написанную на ассемблере, с Паскаля на С++ при помощи конвертора? Хоть убейте, не пойму, в чем тут смысл.
Записан
scraper
Гость
« Ответ #11 : 05-06-2006 21:02 » 

Finch, я понял.

В этой проге вся логика написана на Asm-е, значит это Asm-овсая прога.
То что оболочка из С++ это ничего не значит.
Вывод: к железу можно обратиться только на Asm-е. Так?
Но тогда: как связать С++ и Asm, ВОЕДИНО?!! (Хотя бы в собственном мозгу?)

Alf, смысл в том, что я хочу понять Com-порты, а примеры все на Paskale. Приходиться переводить.
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #12 : 05-06-2006 21:07 » 

Читай MSDN. На форуме несколько раз проскакивали топики по работе с COM портами. В Винде в пользовательском режиме напрямую с оборудованием работь нельзя. Вся работа строится через функции посредники.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
scraper
Гость
« Ответ #13 : 05-06-2006 21:15 » 

Это понятно, но все таки, Finch, то что ты знаешь... please...  Рисую
 Бу-бу-бу Скрипач
 Инвалид Инвалид
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #14 : 05-06-2006 21:17 » 

scraper, Ты определись в какой ОС ты хочеш понять логику работы. То что ты привел на Паскале, это ДОС версия работы. И кстати ее можно легко заменить на паскалевкие функции вызовов прерываний. Если все таки решил писать под ДОС. Тогда просто достань любой справочник по прерываниям. И посмотри какие возможности предоставляет 14h прерывание. Если хочеш разбираться под Винду. В другом твоем топике я дал ссылку на MSDN. Именно на тот раздел, который отвечает на твои вопросы.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #15 : 05-06-2006 21:21 » 

Прыгни по ссылке. Я сейчас полистал этот раздел. Там есть примеры в Сишном коде. Заодно упоминание всех функций, которые могут тебе понадобится.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
scraper
Гость
« Ответ #16 : 05-06-2006 21:22 » 

Finch, комп. На нем: BIOS, DOS, Windows XP.
Записан
scraper
Гость
« Ответ #17 : 05-06-2006 21:25 » 

i'll jamp...
« Последнее редактирование: 19-12-2007 19:59 от Алексей1153++ » Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #18 : 05-06-2006 21:25 » 

Если у тебя винда ХР то на машине не должно быть ДОСа. Стоит эмулятор ДОС режима.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
scraper
Гость
« Ответ #19 : 05-06-2006 21:28 » 

Можно спросить: например, мне нужно какое-нибудь действие сделать, как узнать, какая функция MSDN, это делает?
Другими словами: как пользоваться MSDN?
Записан
scraper
Гость
« Ответ #20 : 05-06-2006 21:31 » 

Понятно, значит под Windows. Определились.
И...
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #21 : 05-06-2006 21:38 » 

Открываеш интересуеший тебя раздел и читаеш. Можно начинать прыгать отсюда http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/overview_of_the_windows_api.asp
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #22 : 05-06-2006 21:41 » 

Цитата
И...
Я объединяю две темы. Поэтому могут быть недомолвки.
« Последнее редактирование: 05-06-2006 21:43 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
scraper
Гость
« Ответ #23 : 05-06-2006 21:43 » 

По MSDN пока понятно. Спасибо.
Thank you for you time.
Good night.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Online Online
Сообщений: 13


« Ответ #24 : 06-06-2006 08:16 » 

scraper, Thank you for your wasted time. Ага А то так непонятно было, что написал
Записан

scraper
Гость
« Ответ #25 : 06-06-2006 13:09 » 

Алексей1153, я извиняюсь, но в современном американском языке, фраза: Thank you for you time, допустима. Улыбаюсь
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Online Online
Сообщений: 13


« Ответ #26 : 06-06-2006 17:03 » 

scraper, ну, где мне до америки Улыбаюсь 
где уж нам уж (с) Улыбаюсь
Записан

scraper
Гость
« Ответ #27 : 06-06-2006 20:24 » 

Улыбаюсь
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines