Консультант Витте
106 / 86 / 45
Регистрация: 27.08.2013
Сообщений: 1,356
Записей в блоге: 1
1

Легкая задачка и PUSH

21.02.2014, 21:33. Показов 882. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание: Вычислите значение выражения 4x^4 – 3x^2 + x % 4 для x = 2, 4, 6 в цикле (LOOP). Операция %- взятие остатка от деления. В сегменте данных (секции DATA, BSS) размещены только исходное значение x. Результат вычисления для каждого x кладётся на стек командой PUSH AX (если результат размещается в AX; аналогично — для любого другого регистра).
Я не пойму что именно делает PUSH,он кладет на стек значение, а POP снимает со стека вроде как .
Ну как мне узнать значение в точках x,я снимаю со стека,ну а где оно отображается и хранится...
Вообще как задание корректно сделать?
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
.SECT   TEXT
        MOV     CX, 3
L:
        ADD (x), 2
        MOV BX, 4
        MOV AX, (x)
        DIV BX
        MOV AX, DX
        PUSH    AX
        MOV AX, (x)
        MUL (x)
        MOV BX, 3
        MUL BX
        MOV BX, -1
        MUL BX
        PUSH    AX
        MOV     AX, (x)
        MUL AX
        MUL AX
        MOV BX, 4
        MUL BX
        PUSH    AX
        POP AX
        POP AX
        POP AX
LOOP L
        
        
.SECT   DATA
x:  .WORD 0 
.SECT   BSS
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.02.2014, 21:33
Ответы с готовыми решениями:

Легкая задача по ассемблеру
Доброго времени суток, помогите пожалуйста решить эту задачу по ассемблеру, вроде ничего сложного,...

Лаба легкая по ассемблеру TASM
Добрый день! Нуждаюсь в помощи от вас. Помогите решить эту лабораторную. Запустил в свое время и...

Push, Pop
Вот такое задание: F=Ʃ от 1 до 5 f (Ai) A1=2 Ai+1=Ai+2 Ai=(3*A)+(C/D). Нужно записать эту...

Команда Push Ds
Всем привет!! Ребята, кто сталкивался с данной командой??Как нарисовать схему выполнения этой...

3
Ушел с форума
Автор FAQ
16277 / 7602 / 1064
Регистрация: 11.11.2010
Сообщений: 13,617
22.02.2014, 09:52 2
DmitryM5,
это MASM в NASM или что там у тебя переделывай сам
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
; masm dos com #
.286
.model tiny
.code
org 100h
start:  mov cx,3
    mov bx,offset resul
a1: mov ax,x
    mov dx,ax
    and dx,3; dx = x % 4
    mov [bx],dx
    mul ax; ax = x*x
    mov dx,ax; dx = x^2
    shl ax,2; ax = 4x^2
    sub ax,3; ax = 4x^2 - 3
    mul dx; ax = x^2 * (4x^2 - 3)= 4x^4 - 3x^2
    add [bx],ax; result = 4x^4 - 3x^2 + x%4
    add bx,2; к следующему result
    add x,2; x = x+2
    loop a1     
    ret
result dw 3 dup(0);4x^4 – 3x^2 + x % 4 для x = 2, 4, 6 
x dw 2
end start
0
Консультант Витте
106 / 86 / 45
Регистрация: 27.08.2013
Сообщений: 1,356
Записей в блоге: 1
22.02.2014, 21:59  [ТС] 3
Быть может вы не поняли вопроса?Я спросил про push и pop.И про правильность моего задания.У меня работающий код,просто не пойму куда девать значения в точках(раньше был result).
Зачем мне непонятно какой код...

Добавлено через 2 часа 0 минут
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
.SECT   TEXT
        MOV     CX, 3
L:
        ADD (x), 2
        MOV BX, 4
        MOV AX, (x)
        DIV BX
        MOV AX, DX
        PUSH    AX
        MOV AX, (x)
        MUL (x)
        MOV BX, 3
        MUL BX
        MOV BX, -1
        MUL BX
        MOV BX, AX
        POP AX
        ADD AX, BX
        PUSH    AX
        MOV     AX, (x)
        MUL AX
        MUL AX
        MOV BX, 4
        MUL BX
        MOV BX, AX
        POP AX
        ADD AX, BX
        PUSH    AX
LOOP L
        
        
.SECT   DATA
x:  .WORD 0 
.SECT   BSS
По видимому я сам все сделал.
0
Ушел с форума
Автор FAQ
16277 / 7602 / 1064
Регистрация: 11.11.2010
Сообщений: 13,617
23.02.2014, 06:49 4
Цитата Сообщение от DmitryM5 Посмотреть сообщение
По видимому я сам все сделал
По-видимому, я бы не написал тебе программу, если бы она была правильной
0
23.02.2014, 06:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.02.2014, 06:49
Помогаю со студенческими работами здесь

вылетает при push
Господа, проблема возникла и я чуть до маразма не дохожу. Использую WinAsm Studio и читаю Пирогова...

Команды PUSH/PSW..
Мне нужно сделать: "Составить подпрограмму вычисления значения функции MAX(X&K,8)+5 ....

Push, 64 режим, фитчи)
include '%fasm%/win64ax.inc' section '.code' executable start: sub rsp,8*5 @@: ...

Объяснить работу команды push
Добрый день, читаю книгу, и не могу понять кое чего относительно работы со стеком Пусть например...


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

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

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