Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2009, 16:21   #1
_°PROTOS°_
 
Аватар для _°PROTOS°_
 
Регистрация: 25.04.2009
Сообщений: 8
Смущение Две задачи на ассемблере, вычисление выражений

Нужна ваша помощь.
Есть 2 задачки на ассемблере, помогите сделать.

1) b-c+d*5
2) 5*b*c-d
_°PROTOS°_ вне форума Ответить с цитированием
Старый 29.05.2009, 16:27   #2
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Код:
mov eax,[d]
lea eax,[eax+eax*4]
add eax,[b]
sub eax,[c]
Код:
mov eax,[b]
lea eax,[eax+eax*4]
mul [c]
sub eax,[d]
или с FPU
Код:
fild [d]
fimul [five]
fiadd [b]
fisub [c]
...
five dd 5
Код:
fild [b]
fimul [c]
fimul [five]
fisub [d]
...
five dd 5
или для тех, кто не ищет легких путей.
Код:
mov eax,[d]
mov ecx,5
call mult
add eax,[b]
sub eax,[c]
mult:
dec ecx
retz
add eax,eax
jmp mult
Код:
mov eax,[b]
mov ecx,5
call mult
mov ecx,[c]
call mult
sub eax,[d]
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4

Последний раз редактировалось Goodwin98; 29.05.2009 в 18:22.
Goodwin98 вне форума Ответить с цитированием
Старый 29.05.2009, 16:43   #3
Ivan_32
somewhere else
Участник клуба
 
Аватар для Ivan_32
 
Регистрация: 17.07.2008
Сообщений: 1,409
По умолчанию

fimul st,5
mul eax,5

вобще то это унарные операторы.
для первого дефолтом стоит первый операнд st0
а для второго связка edx:eax
Так что логично будет добавить код
xor edx,edx
для второго случая.

тоесть вместо:
mul eax,5
надо записать:
xor edx,edx
mul 5
а вместо:
fmul st0,5
записать:
fmul 5
"Тяжело в учении, легко в бою" - А.В. Суворов
Ivan_32 вне форума Ответить с цитированием
Старый 29.05.2009, 16:54   #4
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Цитата:
а вместо:
fmul st0,5
записать:
fmul 5
У меня масм непонимает некоторых команд, если не дописать st, но в которых по умолчанию должен стоять st(0), поэтому пишу его везде.
если на то пошло, то писать нужно:
fimul [five]
...
five dd 5
Еще вспомнил можно так : lea eax,[eax+eax*4].
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4

Последний раз редактировалось Goodwin98; 29.05.2009 в 17:17.
Goodwin98 вне форума Ответить с цитированием
Старый 29.05.2009, 17:45   #5
_°PROTOS°_
 
Аватар для _°PROTOS°_
 
Регистрация: 25.04.2009
Сообщений: 8
По умолчанию

Эт всё хорошо, спасибо за помощь но вот тока у миня почемуто он выдаёт ошибку в строке: mul 5

Вот как она у миня выглядит, и выдаёт ошибку

Код:
dosseg
.model small
.stack 100h
.data
b dw 10
c dw 2
d dw 4
mes db 'rezyltat b-c+d*5=','$'
.code
mov ah,0
mov al,3
int 10h
mov ax,@data
mov ds,ax
mov ah,09h
mov dx, offset mes
int 21h
mov ax, [d]
mul 5
add ax, [b]
sub ax, [c]
xor dx, dx
push ax
push bx
push cx
push dx
p1:
xor dx,dx
div cs:  p16
mov bx,dx
mov dl,cs: pp[bx]
push dx
inc cx
cmp ax,0
jne p1
mov ah,02h
p2:
pop dx
int 21h
loop p2
pop dx
pop cx
pop bx
pop ax
mov ah,4ch
int 21h
p16 dw 10
pp db '0123456789'
end

Последний раз редактировалось rpy3uH; 29.05.2009 в 20:27.
_°PROTOS°_ вне форума Ответить с цитированием
Старый 29.05.2009, 18:01   #6
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Поменяй на
Код:
mov bx,5
xor dx,dx
mul bx
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4

Последний раз редактировалось Goodwin98; 29.05.2009 в 18:07.
Goodwin98 вне форума Ответить с цитированием
Старый 29.05.2009, 18:03   #7
*Dazzle*
Новичок
Джуниор
 
Аватар для *Dazzle*
 
Регистрация: 29.05.2009
Сообщений: 1
По умолчанию

должно помоч
*Dazzle* вне форума Ответить с цитированием
Старый 29.05.2009, 22:51   #8
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Просто хочу добавить мой вариант:
Код:
.386
.model flat,stdcall
option casemap:none
.data
;  b-c+d*5
  zb  db 8
  zc  db  2
  zd  db 5
.code
start:
    xor eax,eax
    xor ebx,ebx
    mov al,[zb]
    mov bl,[zc]
    sub al,bl
    push ax
    xor eax,eax
    xor ebx,ebx
    mov al,[zd]
    mov bl,5
    mul al
    xchg eax, ebx
    pop ax
    add al,bl
end start
xor eax, eax
xchg [eax], eax
MalCer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Две задачи на ассемблере stalker87 Помощь студентам 3 03.10.2010 13:31
Вычисление арифметических выражений.(delphi) КуДрЯ Помощь студентам 3 02.04.2009 02:54
вычисление выражений (pascal) вкусняшка Помощь студентам 4 14.03.2009 16:42
Задачи на вычисление суммы Many man Помощь студентам 7 20.12.2008 22:47
Задачи на ассемблере (см. внутри) Волчица Помощь студентам 1 03.12.2008 22:16