Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
3 / 3 / 1
Регистрация: 28.12.2009
Сообщений: 73
1

Вычисление формулы в MOV

31.08.2011, 00:28. Показов 962. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет! Понадобилось расширить функционал в уже скомпилированной программе. Необходимо в регистр EAX положить адрес строки, который вычисляется по формуле. На данный момент в EAX лежит число 2. Меня бы устроило:
Assembler
1
MOV EAX, EAX*8+56E4C0
56E4C0 73 74 72 69 6E 67 31 00 73 74 72 69 6E 67 32 string1.string2
56E4D0 00 73 74 72 69 6E 67 33 00 73 74 72 69 6E 67 .string3.string
56E4E0 34 00 73 74 72 69 6E 67 35 00 73 74 72 69 6E 4.string5.strin
56E4F0 67 36 00 73 74 72 69 6E 67 37 00 73 74 72 69 g6.string7.stri
56E500 6E 67 38 00 73 74 72 69 6E 67 39 00 00 00 00 ng8.string9....

Но так синтаксически неправильно. Так же не желательно использовать другие регистры для подсчета. Поскольку там лежит нужная для программы информация. Подскажите пожалуйста варианты решения.

P.S. С ASM никогда не работал.

Добавлено через 37 минут
Вспомнил, что можно, на время, значение регистра положить в стек.
Assembler
1
2
3
4
5
PUSH ECX
MOV ECX, 8
MUL ECX
POP ECX
ADD EAX, 0056E4C0
Так будет правильно (оптимально) ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.08.2011, 00:28
Ответы с готовыми решениями:

Что будет, если mov al,cs:string заменить на mov al,cs
1) В некоторой программе что-то реализуется. Вопрос: что будет если mov al,cs:string заменить на...

Вычисление формулы
Написать код для данной формулы: y=(x-w)/z+u*v. Ниже приведён код. Можете подсказать правильно...

Нужно написать вычисление формулы y=A&B+(C-4)
нужно написать листинг программы в асемблере

Вычисление формулы на КР580
В общем имеется уравнение: F=A-B or not(C and 2F3B) A=D215A0 B=84BB73 C=615AF7 Не знаю как...

3
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
31.08.2011, 03:57 2
exkilla, формуле EAX = EAX*8+56E4C0 соответствует команда lea eax,[EAX*8+56E4C0] но умножать таким способом можно только на 2, 4, 8
1
3 / 3 / 1
Регистрация: 28.12.2009
Сообщений: 73
31.08.2011, 04:14  [ТС] 3
Mikl___, спасибо. А если мне необходимо умножить на 7, то стоит использовать вариант предложенный мною?
0
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
01.09.2011, 06:45 4
exkilla, для умножения на 3, 5, 9 используют
lea eax,[eax+eax*2]
lea eax,[eax+eax*4]
lea eax,[eax+eax*8]

для умножения на 7 можно imul eax,7 а можно так
Assembler
1
2
3
mov ebx,eax
shl eax,3; eax=eax*8
sub eax,ebx;eax=eax*8-eax=eax*7
еще один способ умножения на 7
Assembler
1
2
lea ebx,[eax+eax*2]; ebx=eax*3
lea eax,[ebx+eax*4];eax=eax*3+eax*4=eax*7
если число небольшое, то
Код
mov eax,300h; ah=3 al=0
db 0D5h,7
в результате eax=ah*7= 21
ну и классический вариант
Assembler
1
2
mov ebx,7
mul ebx;edx:eax=eax*7
1
01.09.2011, 06:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.09.2011, 06:45
Помогаю со студенческими работами здесь

Вычисление формулы
x,y: real; begin x:=1; while x<=5 do begin x:=x+0.2;...

Вычисление формулы
Делаю лабораторную, не могу понять, почему у меня во второй формуле всегда получается ноль?...

Вычисление формулы
Помогите вычислить формулу. S=\sum_{k=1}^{10}\frac{\sum_{n=1}^{k}\sin kn}{k!}

Вычисление формулы.
Поделитесь предположениями, как можно написать программу на вычисление формулы, что во вложенном...

Вычисление формулы
Кто может помочь написать программу, которая вычислит это выражение 🙏 Заранее спасибо!

Вычисление формулы
Помогите организовать вычисление формулы: y=\begin{cases}\frac{(x+2)^3}{x^2-1} &,\ \...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru