Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
no SOPA
0 / 0 / 1
Регистрация: 20.02.2012
Сообщений: 41
#1

Разбор строк ассемблерной программы - C++

23.06.2013, 21:22. Просмотров 297. Ответов 0
Метки нет (Все метки)

Вот код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <conio.h>
 
int main()
 {
 char buffer[256];
 char filename[20];
 printf("Input file name:");
 scanf("%s",filename);
 char comment[50] = "";
 char metka[50] = "";
 char oprd[10] = "";
 char oprt[10] = "";
 int count = 0;
 int i = 0;
 char *comm,*met,*opt,*opd; 
 FILE* file;    
 file = fopen(filename,"r");
/* Проверяем открылся ли файл*/
 if (file == NULL)
  {
  printf("Error: File not read");
  }
/* Чтение файла построчно */
 while (fgets(buffer,256,file))
  {
  count++;
  comm = met = opd = opt = buffer;
  printf("Stroka %i: %s",count,buffer);
/* Вывод комментария */
  while (*comm != '\n')
   {
   if (*comm == '/')
    {
    comm--;
    for (comm++;*comm != '\n';++comm)
     {
     comment[i] = *comm;
     *comm = '\0';
     i++;
     }
    i = 0;
    break;
    }
   comm++;
   }
/* Вывод метки */
  while (*met != '\n')
   {
   if (*met == '-')
    {
    for (met = buffer;*met != '-';++met)
     {
     if (*met == ';')
      {
      for (int j=0;j<sizeof(metka);j++)
       {
       metka[j] = '\0';
       }
      break;
      }
     metka[i] = *met;
     *met = '\0';
     i++;
     }
    i = 0;
    break;
    }
   met++;
   }
/* Вывод оператора */
  while (*opt != '\n')
   {
   if (isalpha(*opt))
    {
    while (isalpha(*opt))
     {
     oprt[i] = *opt;
     i++;
     opt++;
     }
    i=0;
    break;
    }
   opt++;
   }
/* Вывод операнда */
  opd = opt;
  while (*opd != '\n')
   {
   if (*opd != '\t' && *opd != ' ')
    {
    while (*opd != '\t' && *opd != ' ' && *opd != '\n')
     {
     oprd[i] = *opd;
     i++;
     opd++;
     }
    i=0;
    break;
    }
   opd++;
   }
  printf("Razbor stroki:  Metka:%s, Operator:%s, Operand:%s, Comment:%s \n",metka,oprt,oprd,comment+1);
  for (int j=0;j<sizeof(comment);j++)
   {
   comment[j] = '\0';
   }
  for (int j=0;j<sizeof(metka);j++)
   {
   metka[j] = '\0';
   }
  for (int j=0;j<sizeof(oprt);j++)
   {
   oprt[j] = '\0';
   }
  for (int j=0;j<sizeof(oprd);j++)
   {
   oprd[j] = '\0';
   }
  printf("\n");
  }
 getch();
 }
Вот ассемблерная программа для разбора:
Assembler
1
2
3
4
    START 1100
metka LDA 12      /comment1 
      LDB Z      /comment2
      END metka
Помогите пожалуйста исправить вывод метки, чтобы он распознавал её по расположению с первой позиции строки, т.е. чтобы программа понимала, что слово "metka" или любое другое, которое используется для метки, это и есть, собственно, метка.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2013, 21:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разбор строк ассемблерной программы (C++):

Тождество (разбор строк) - C++
Вам необходимо проверить домашнюю работу Васи Пупкина, в которой он написал равенство. Например, запись вида «2+3=5» является правильной, а...

Разбор программы - C++
#include&lt;iostream&gt; using namespace std; void func1(); void func2(); int f; int main() {

Разбор программы - C++
После недели освоения cuda и разбора программ,наткнулся на урок по куда,прилагается программа перемножения матриц,собственно код: //...

разбор программы - C++
друзья хотел бы попросить помощи с одной программой, в программировании не разбираюсь по єтому пришел к вам на форум. Есть программа одно...

разбор программы - C++
Друг написал прогу, но комментарии к ней не сделал, поэтому не понятно. Помогите разобраться с программой. Вот условие: Создать класс...

разбор строк вида параметр=значение - C++
Есть файл с набором строчек: параметр=12345 Нужен самый быстрый способ инициализировать набор переменных int из этого файла проблема в...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2013, 21:22
Привет! Вот еще темы с ответами:

Разбор программы(сортировка) - C++
Как объяснить принцип работы (выделенного) кода. Не могу до конца разобрать какие действия проводит данная программа поэтапно. ...

Разбор кода программы - C++
сделали контрольную и защитить не не могу. помогите разобрать что значит код, пожалуйста. реализация LZ метода сжатия кто может...

Разбор кода программы - C++
Здравствуйте! Помогите пожалуйста написать программу (на Bison+Flex), которая будет сканировать текстовый документ и выводить информацию об...

Разбор алгоритма программы - C++
Здравствуйте, у меня есть программа, вычисляющая факториал заданного числа. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru