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

Assembler для начинающих

Войти
Регистрация
Восстановить пароль
 
JakiCS
0 / 0 / 0
Регистрация: 06.03.2018
Сообщений: 10
#1

Вычислить n = 1+2+4+8+…+2^10 при помощи цикла - Assembler/FASM

15.04.2018, 15:34. Просмотров 183. Ответов 11
Метки нет (Все метки)

Вычислить: n= 1+2+4+8+…+210 (с шагом +2) c помощью цикла.

В голове я понимаю как сделать, а руки не могут.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2018, 15:34
Я подобрал для вас темы с готовыми решениями и ответами на вопрос FASM Вычислить n = 1+2+4+8+…+2^10 при помощи цикла (Assembler):

Компиляция при помощи NASM - Assembler
Я только-только начинающий, почитал некоторое количество материала по ассемблеру, очень захотелось попробовать. Скачал насм...

Перерисовка окна при помощи InvalidateRect - Assembler
Не подскажете как перерисовать окно. А именно окошко которое как видно в коде создаётся в приложении при нажатии на левую кнопку мышки...

Управление цикла по счётчику (вычислить значение выражения) - Assembler
Помогите создать программу полностью по данному примеру. Я абсолютный новичок в асм, знаю только делфи, бейсик, паскаль, объясните мне...

Вычислить выражение при помощи цикла Do...Loop - VB
Нужна небольшая помощь с лаб работами на VB 1 лаб раб необходимо выпол при помощи цикла Do...Loop

Вычислить функцию при помощи оператора цикла. Разработать блок-схему алгоритма решения задачи. - Matlab
y=(√(2x+3) x-2)/x^2 Используя арифметический оператор цикла задать х с шагом 1 и последовательно вычислить у. Шаг х изменяется от (-...

Сократить код при помощи цикла - Delphi
привет всем) как сделать покороче? if scombobox2.ItemIndex=0 then begin Table1.Close; Table1.DatabaseName:='Base1'; ...

11
R71MT
2765 / 961 / 244
Регистрация: 29.07.2014
Сообщений: 1,968
Записей в блоге: 4
15.04.2018, 20:12 #2
наверно так:
Assembler
1
2
3
4
5
6
    mov   eax,1
    mov   ebx,eax
    mov   ecx,9
@@: add   eax,ebx
    shl   ebx,1 
    loop  @b
0
ФедосеевПавел
Модератор
3063 / 1790 / 730
Регистрация: 01.02.2015
Сообщений: 6,161
15.04.2018, 20:13 #3
А что это за ряд? Как он формируется?
0
JakiCS
0 / 0 / 0
Регистрация: 06.03.2018
Сообщений: 10
15.04.2018, 20:16  [ТС] #4
ФедосеевПавел, 1+1=2+2=4+4=8+8=16+16=32 ....
0
R71MT
2765 / 961 / 244
Регистрация: 29.07.2014
Сообщений: 1,968
Записей в блоге: 4
15.04.2018, 20:18 #5
JakiCS, так 210 не получишь. после 32 - 64 - 128 - 256 - 512 - 1024 и т.д
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25287 / 16935 / 5345
Регистрация: 22.10.2011
Сообщений: 29,970
Записей в блоге: 6
15.04.2018, 20:20 #6
Ванга мод: 1+2+...+210
1
JakiCS
0 / 0 / 0
Регистрация: 06.03.2018
Сообщений: 10
15.04.2018, 20:20  [ТС] #7
R71MT, значит я тупой( Что даже не могу, элементарно посчитать.. .
0
JakiCS
0 / 0 / 0
Регистрация: 06.03.2018
Сообщений: 10
15.04.2018, 20:33  [ТС] #8
R71MT, возможно , что-то не так или у меня кривые руки
0
Изображения
 
ФедосеевПавел
Модератор
3063 / 1790 / 730
Регистрация: 01.02.2015
Сообщений: 6,161
15.04.2018, 21:08 #9
Ага, сумма степеней 2 от 0 до 10 равна 211-1.
Этот результат умещается в 16 битный регистр.
Если программа под DOS (DOSBox), то
Assembler
1
2
3
4
5
6
7
  xor ax, ax
  mov cx, 10
  mov bx, 1
  @@for:
    add ax, bx
    shl bx, 1
  loop @@for
Если же под Windows - к названиям всех регистров добавить символ "e": eax, ebx, ecx.
0
JakiCS
0 / 0 / 0
Регистрация: 06.03.2018
Сообщений: 10
15.04.2018, 21:15  [ТС] #10
ФедосеевПавел, постоянно 61 выдает((
0
ФедосеевПавел
Модератор
3063 / 1790 / 730
Регистрация: 01.02.2015
Сообщений: 6,161
15.04.2018, 21:45 #11
Значит неправильная программа У ВАС. Не знаю где - обычно такие ошибки в 17 строке, хот бывают и в 34 строке.
А мой фрагмент кода - правильный.

Добавлено через 27 минут
JakiCS, показывайте ВАШ код.
0
ФедосеевПавел
Модератор
3063 / 1790 / 730
Регистрация: 01.02.2015
Сообщений: 6,161
18.04.2018, 20:04 #12
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
.model small
 
.stack 100h
 
.data
        CrLf            db      0Dh, 0Ah, '$'
        msgPressAnyKey  db      0Dh, 0Ah, 'Press any key to exit...', '$'
 
.code
 
; выводит число из регистра AX на экран
; входные данные:
; ax - число для отображения
Show_AX proc
        push    ax
        push    bx
        push    cx
        push    dx
        push    di
 
        mov     cx, 10          ; cx - основание системы счисления
        xor     di, di          ; di - кол. цифр в числе
 
@@Conv:
        xor     dx, dx
        div     cx              ; dl = num mod 10
        add     dl, '0'         ; перевод в символьный формат
        inc     di
        push    dx              ; складываем в стэк
        or      ax, ax
        jnz     @@Conv
        ; выводим из стэка на экран
@@Show:
        pop     dx              ; dl = очередной символ
        mov     ah, 2           ; ah - функция вывода символа на экран
        int     21h
        dec     di              ; повторяем пока di<>0
        jnz     @@Show
 
        pop     di
        pop     dx
        pop     cx
        pop     bx
        pop     ax
        ret
Show_AX endp
 
main    proc
        ;инициализация сегментного регистра ds адресом сегмента данных
        mov     ax,     @data
        mov     ds,     ax
 
        xor     ax,     ax
        mov     cx,     11
        mov     bx,     1
        @@for:
                add     ax,     bx
                shl     bx,     1
        loop @@for
 
        call    Show_AX
 
        ;ожидание нажатия любой клавиши
        mov     ah,     09h
        lea     dx,     [msgPressAnyKey]
        int     21h
 
        mov     ah,     00h
        int     16h
 
        mov     ax,     4C00h
        int     21h
main    endp
 
end     main
Добавлено через 2 минуты
FASM
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
format  MZ                      ;Исполняемый файл DOS EXE (MZ EXE)
entry   code_seg:start          ;Точка входа в программу
;--------------------------------------------------------------------
stack   200h                    ;Размер стека
;--------------------------------------------------------------------
segment data_seg                ;Cегмент данных
        CrLf            db      0Dh, 0Ah, '$'   ;перевод строки
        msgPressAnyKey  db      0Dh, 0Ah, 'Press any key to exit...', '$'
;--------------------------------------------------------------------
segment code_seg                ;Сегмент кода
start:                                  ;Точка входа в программу
        mov     ax,     data_seg        ;Инициализация регистра DS
        mov     ds,     ax
 
        xor     ax,     ax
        mov     cx,     11
        mov     bx,     1
        @@for:
                add     ax,     bx
                shl     bx,     1
        loop @@for
 
        call    Show_AX
 
        mov     ah,     09h
        mov     dx,     msgPressAnyKey
        int     21h
        mov     ah,     0
        int     16h
 
        mov     ax,     4C00h
        int     21h                     ;Завершение программы
 
 
;--------------------------------------------------------------------
; выводит число из регистра AX на экран
; входные данные:
; ax - число для отображения
Show_AX:
        push    ax
        push    bx
        push    cx
        push    dx
        push    di
 
        mov     cx, 10          ; cx - основание системы счисления
        xor     di, di          ; di - кол. цифр в числе
 
@@Conv:
        xor     dx, dx
        div     cx              ; dl = num mod 10
        add     dl, '0'         ; перевод в символьный формат
        inc     di
        push    dx              ; складываем в стэк
        or      ax, ax
        jnz     @@Conv
        ; выводим из стэка на экран
@@Show:
        pop     dx              ; dl = очередной символ
        mov     ah, 2           ; ah - функция вывода символа на экран
        int     21h
        dec     di              ; повторяем пока di<>0
        jnz     @@Show
 
        pop     di
        pop     dx
        pop     cx
        pop     bx
        pop     ax
        ret
0
18.04.2018, 20:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.04.2018, 20:04
Привет! Вот еще темы с ответами:

Перебор TextBox при помощи цикла - Visual Basic .NET
У меня есть 18 элементов TextBox, называются они TextTop0, TextTop1, TextTop2, и т.д. до 17. Пытаюсь их перебрать так: For i=0 To 17 ...

Оптимизация вычислений при помощи цикла - VBA
Здравствуйте уважаемые форумчане есть такой код Workbooks.Open Filename:=&quot;C:\Users\00033648\Desktop\НПА\Расчет\1.XLS&quot; ...

Оптимизация кода при помощи цикла - VBA
Здравствуйте дорогие прогеры есть файл (приложил), в лист 1 справа необходимо проставить курсы из листа курсы за каждый день написал...

Найти сумму ряда (при помощи цикла while) - C++
Помогите решить задачу... мозг уже устал. Решить нужно с помощью цикла с предусловием while Пусть...


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

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

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