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

Assembler: математика, вычисления

Войти
Регистрация
Восстановить пароль
 
Ponomar
1 / 1 / 1
Регистрация: 03.08.2011
Сообщений: 98
#1

Вычислить значение выражения "2adc+3-c" - Assembler

25.10.2015, 15:36. Просмотров 430. Ответов 5
Метки нет (Все метки)

Всем доброго времени суток! Не могу решить пример вида: "2adc+3-c". помогите пожалуйста! А именно не получается задать константы 2 и 3, как их вообще задают? Пока что у меня получилось только "abc-c".
Assembler
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
extern  printf
extern  scanf
global  main
section .text
 
main:
 
    push    ebp
    mov ebp, esp    
    push    c       
    push    b   
    push    a   
    push    sfmt    
    call    scanf
    add esp, 12 
    pop ebp 
    mov eax, [a]
    mov ebx, [b]    
    mul ebx
 
    
 
    mov [a], eax
    mov ecx, [c]
    mul ecx
    mov [a], eax
    
 
    sub eax, [c]
    mov [a], eax
 
    
 
    push    ebp
    mov ebp, esp
    push    dword[a]
    push    fmt
    call    printf
    add esp, 8
    pop ebp
    mov eax, 8
    ret
 
section .data
    
    fmt:    db "Rez is: %d", 10, 0
    sfmt:   db "%d %d %d", 0
    a:  dd 0
    b:  dd 0    
    c:  dd 0
Как вот еще abc умножить на 2 и прибавить 3 добавить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2015, 15:36
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вычислить значение выражения "2adc+3-c" (Assembler):

Рассматривая массив из 8 пятиразрядных слов, найти "исключающее или" всех 8 слов для выражения "10101" - Assembler
У меня дан массив из 5 байт. Рассматривая его как массив из 8 пятиразрядных слов, найти "исключающее или" всех 8 слов для выражения...

Есть строка. Нужно сделать так, чтобы "re" и "not" заменялись на "***". - Assembler
Есть строка. Нужно сделать так, чтобы "re" и "not" заменялись на "***". Data Segment para 'Data' max equ 255 str_prm db 'Input...

При вычислении выражения ошибка на строке "IDIV DX" - Assembler
Выражение: (c-d/2+23)/(2a^2-1); c=19 d=36 a=51 MOV AX, 11 MOV BX, 22 MOV CX, 33 MOV DX, 2 XCHG AX, BX IDIV DX ...

изьять слова, которые имеют префикс "re", "not", "be" - Assembler
Заданы символьная строка. Слова и идентификаторы разделяются хотя бы одним символом пробела. Написать программу, которая из заданного...

В словах, которые имеют окончание "ing", сделать замену "ing" на "ed" - Assembler
Задан текст. Группы символов, разделённые пробелами (одним или несколькими) и не содержащими пробелов внутри себя, будем называть словами....

Необходимо строку тип ""str1" "str2"",0 преобразовать в строку типа - Assembler
Необходимо строку тип ""str1" "str2"",0 преобразовать в строку типа "str2",0 label_parse_string: inc EAX cmp EAX, ' ' jnz...

5
Mikl___
Автор FAQ
11329 / 5872 / 524
Регистрация: 11.11.2010
Сообщений: 10,912
26.10.2015, 04:23 #2
Ponomar,
используй тэги [АSМ] и [/АSМ]
Assembler
1
2
3
4
5
6
7
8
9
10
;2adc+3-c
mov eax,[a]
mul [d];eax=a*d
mul [c];edx:eax=a*d*c
shld edx,eax,1
shl eax,1;edx:eax=2*a*d*c
add eax,3
adc edx,0;edx:eax=2*a*d*c + 3
sub eax,[c]
sbb edx,0;edx:eax=2*a*d*c + 3 - c
0
Ponomar
1 / 1 / 1
Регистрация: 03.08.2011
Сообщений: 98
26.10.2015, 08:38  [ТС] #3
Цитата Сообщение от Mikl___ Посмотреть сообщение
shld
что означает эта функция?
P.S. вопрос может глупый конечно, но я просто только-только начал изучать ассемблер.

Добавлено через 39 минут
Цитата Сообщение от Mikl___ Посмотреть сообщение
adc edx,0;
выдает ошибку на этой строчке.

Добавлено через 19 минут
Вот, разобрался короче немного, но как вот на 2 умножить abc? Просто если пишу через mul, то сразу ошибку выдает((
Assembler
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
; 2*a*b*c + 3 - c
 
extern  printf
extern  scanf
global  main
section .text
 
main:
    push    ebp
    mov ebp, esp    
    push    c
    push    b
    push    a
    push    sfmt    
    call    scanf
    add esp, 12
    pop ebp
    mov eax, [a] ; eax = a
    mov ebx, [b] ; ebx = b
    mul ebx  ; a*b
    mov [a], eax ; a = a*b
    
    mov ecx, [c] ; ecx = c
    mul ecx  ; a*c
    mov [a], eax ; a = a*b*c
 
    
    mov [a], eax ; a = a*b*c
    add eax, 3   ; a + 3
    mov [a], eax ; a*b*c + 3
 
    
    
    sub eax, [c] ; a + 3 - c
    mov [a], eax ; a*b*c + 3 - c
 
    
    push    ebp
    mov ebp, esp
    push    dword[a]
    push    fmt
    call    printf
    add esp, 8
    pop ebp
    mov eax, 8
    ret
 
section 
    .data   
    fmt:    db "Rezult is: %d", 10, 0   
    sfmt:   db "%d %d %d", 0    
    a:  dd 0    
    b:  dd 0        
    c:  dd 0
Добавлено через 13 минут
т.е. после:
Assembler
1
2
3
mov ecx, [c] ; ecx = c
mul ecx ; a*c
mov [a], eax ; a = a*b*c
я прописываю:
Assembler
1
2
3
mov   [a], eax
mul    eax, 2
mov   [a], eax
и на строчке, где "mul" пишет, что не известный символ, НО если я ставлю вместо него "add" или "sub", то все считает и работает отлично. Почему так?

Добавлено через 6 минут
а всё, решил))
imul надо писать))
0
Mikl___
Автор FAQ
11329 / 5872 / 524
Регистрация: 11.11.2010
Сообщений: 10,912
26.10.2015, 08:56 #4
Ponomar,
  1. вопрос не глупый, но начал изучать ассемблер -- обзаводись справочниками и учебниками
  2. я не зря написал
    Цитата Сообщение от Mikl___ Посмотреть сообщение
    используй тэги [АSМ] и [/АSМ]
    читать твою программу невозможно
  3. ассемблер NASM знает команды mul, adc и sbb это что-то ты не так набираешь
  4. для чего используешь две команды mov ebx,[d]/mul ebx когда можно обойтись одной mul [d]?
  5. mul eax, 2 нет такой команды, читай учебник
0
XiloManX
643 / 147 / 31
Регистрация: 11.02.2013
Сообщений: 277
26.10.2015, 09:28 #5
Цитата Сообщение от Ponomar Посмотреть сообщение
shld
что означает эта функция?
P.S. вопрос может глупый конечно, но я просто только-только начал изучать ассемблер.
Описание команды SHLD.
Цитата Сообщение от Ponomar Посмотреть сообщение
и на строчке, где "mul" пишет, что не известный символ, НО если я ставлю вместо него "add" или "sub", то все считает и работает отлично. Почему так?

а всё, решил))
imul надо писать))
Описание команды MUL.
Описание команды IMUL.

З.Ы. Небольшой справочник команд.
0
Ponomar
1 / 1 / 1
Регистрация: 03.08.2011
Сообщений: 98
26.10.2015, 15:06  [ТС] #6
Цитата Сообщение от Mikl___ Посмотреть сообщение
ассемблер NASM знает команды mul, adc и sbb это что-то ты не так набираешь
у меня из этих команд только mul читает.

Цитата Сообщение от Mikl___ Посмотреть сообщение
для чего используешь две команды mov ebx,[d]/mul ebx когда можно обойтись одной mul [d]?
Для ввода числа d и умножаю его на а.

Цитата Сообщение от Mikl___ Посмотреть сообщение
mul eax, 2 нет такой команды, читай учебник
но у меня все прекрасно работает, а именно умножает на 2, как и нужно мне.
0
26.10.2015, 15:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2015, 15:06
Привет! Вот еще темы с ответами:

Составить программу для вывода на экран дисплея "бегущей" строки "Периферийные устройства ЭВМ" из (12,40) в (12,10) - Assembler
Нужно написать две программы вот их условия: 1.Составить программу для вывода на экран дисплея "бегущей" строки "Периферийные...

Заменить во вводимом тексте каждое слово "ЭВМ" словом "машина" - Assembler
Здравствуйте. Поможете разобраться с ниже приведенной задачей: Заменить во вводимом тексте каждое слово « ЭВМ » словом « машина ...

Дана строка "ababab", из этого слова надо получить "aaa" - Assembler
Собственно сабж. Дана строка "ababab", надо удалить буквы "b" и получить слово "ааа" Спасибо)

Как реализовать рекурсию через "call" и "ret"? - Assembler
kak realizovat rekursiu 4erez "call" i "ret"? nujno predstavit naturalnoe 4islo v dvoi4nom vide ispolzuya rekursiu i stacki please...


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

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

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