![]() |
|
![]() ![]() ![]() |
|
montekristo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 3.10.2008 Репутация: нет Всего: нет |
как на ассемблере найти елементы в орределенном столбце матрицы, которые кратны числу 7, и отобразить их на екране с использованием С++. Заранее спасибо!!!!
|
|||
|
||||
Kallikanzarid |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 240 Регистрация: 9.11.2008 Репутация: нет Всего: 3 |
А в чем, собственно проблема. Если я не ошибаюсь, инструкция mod дает остаток от деления. Делаешь обход по столбцу (начинаешь с номера столбца, прибавляешь по числу столбцов), далее что-то вроде
mod [ebx + 4*i], 7 jz found_one |
|||
|
||||
montekristo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 3.10.2008 Репутация: нет Всего: нет |
у меня компилятор на команду mod не реагирует, пишет error C2400: inline assembler syntax error in 'opcode'
_asm{ finit mov eax,0 mov eax,j dec eax mul step mov esi,eax mov edx,mas add edx,esi mov eax, [edx] mod eax, 7 jz yes jmp no yes: inc result no: } |
|||
|
||||
Virtuz |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 14.10.2008 Репутация: нет Всего: нет |
Если я не ошибаюсь, инструкция mod дает остаток от деления.
Ошибаешся. Используй DIV |
|||
|
||||
Mikl_ |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 8 Всего: 14 |
решение задачи зависит от того в каком виде число хранится в матрице: 1) если это обычное число в бинарном виде (допустим размер числа -- байт и число беззнаковое) тогда
3) если элемены матрицы не байты, а слова или двойные слова -- тогда делай поправку на размер элемента 4) если элемены матрицы это BCD число, тогда вместо преобразований BCD-числа в бинарное число, можно воспользоваться следующим свойством: Число делится на 7 тогда и только тогда, когда результат вычитания удвоенной последней цифры из этого числа без последней цифры делится на 7 (например, 364 делится на 7, так как 36 — (2 × 4) = 28 делится на 7). От так от, малята! ![]() Это сообщение отредактировал(а) Mikl_ - 17.11.2008, 09:32 |
||||
|
|||||
montekristo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 3.10.2008 Репутация: нет Всего: нет |
у меня снова вопрос. как из этой проги сделать програму, которая будет еще и выводить елементы, которые краты числу 7?
#include<stdio.h> #include<conio.h> #include<math.h> void main() { int *mas=new int[16]; mas[0]=3; mas[1]=7; mas[2]=7; mas[3]=4; mas[4]=5; mas[5]=7; mas[6]=14; mas[7]=8; mas[8]=9; mas[9]=14; mas[10]=21; mas[11]=12; mas[12]=15; mas[13]=14; mas[14]=28; mas[15]=16; int imax=4; int jmax=4; int step=4,count=imax, source=0,polizai=0; int result=0; int j; printf("Wwedit j(1-4):\n"); scanf("%i",&j); _asm{ finit mov eax,0 mov eax,j dec eax mul step mov esi,eax mov eax,0 mov eax,jmax mul step mov source,eax mov eax,0 mov ebx,mas add ebx,esi label: mov eax,[ebx] mov ecx,7h div ecx cmp edx, 0 jz yes inc polizai jmp post yes: inc result inc polizai post: add ebx,source mov edx,0 cmp polizai,4 jl label } puts("-------------------/******/-------------------"); printf("Kilkist elementiw kratnyh 7 v %i stowbtchyku=%i\n",j,result); puts("-------------------/******/-------------------"); puts("\n\n\nPress any key to exit.........\n"); getch(); } |
|||
|
||||
Mikl_ |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 8 Всего: 14 |
montekristo напиши свою программу целиком на языке С и помести ее здесь, а я на этом примере покажу как сделать ассемблерную вставку
Это сообщение отредактировал(а) Mikl_ - 20.11.2008, 10:11 |
|||
|
||||
montekristo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 3.10.2008 Репутация: нет Всего: нет |
Спасибо, уже не надо, разобрался)))
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm для начинающих" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm для начинающих | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |