Форум программистов, компьютерный форум, киберфорум
Assembler: Windows/protected mode
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 10.12.2016
Сообщений: 10
1

Даны натуральные знаковые числа от 20 до 50. Напечатать те из них, которые делятся на 3, но не делятся на 5.

10.12.2016, 18:05. Показов 2114. Ответов 14
Метки нет (Все метки)

Даны натуральные знаковые числа от 20 до 50. Напечатать те из них, которые делятся на 3, но не делятся на 5.
Прошу что-нибудь попроще, и желательно с объяснением каждой строчки кода. Буду весьма благодарен)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.12.2016, 18:05
Ответы с готовыми решениями:

Даны натуральные числа от -20 до 150. Напечатать те из них, которые делятся на 3, но не делятся на 5
Нужно решить эти задачи без массивов и с вхаил 1. Даны натуральные числа от -20 до 150. Напечатать...

Даны натуральные числа от 20 до 50.Напечатать те из них, которые делятся на 3,но не делятся на 5.
1)Даны натуральные числа от 20 до 50.Напечатать те из них, которые делятся на 3,но не делятся на 5....

Даны натуральные числа от 20 до 50: напечатать те из них, которые делятся на 3, но не делятся на 5
Даны натуральные числа от 20 до 50.Напечатать те из них, которые делятся на 3,но не делятся на 5 ...

Даны натуральные числа от 20 до 50. Напечатать те из них, которые делятся на 3, но не делятся на 5
Даны натуральные числа от 20 до 50. Напечатать те из них, которые делятся на 3, но не делятся на 5....

14
1714 / 605 / 187
Регистрация: 12.03.2016
Сообщений: 2,188
12.12.2016, 13:48 2
Какой бы алгоритм для решения этой задачи Вы предложили ?
0
1714 / 605 / 187
Регистрация: 12.03.2016
Сообщений: 2,188
17.12.2016, 14:49 3
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
.model small
.386
.stack 100h
.data
 
.code
 
begin: 
    mov cx,31
    mov ax,20   
next:   
    xor dx,dx
    mov bx,10
    push    ax
    push    ax
    
    div bx
    add ax,dx
    or  dx,dx
    jz  @@2
    cmp dx,5
    je  @@2
    xor dx,dx
 
    
    mov bx,3
    div bx
    or  dx,dx
    jnz @@2
    
    pop ax      
    aam 
    add ax, 3030h
    mov bx, ax  
    mov ah, 02   
    mov dl, bh   
    int 21h  
    mov dl, bl   
    int 21h
 
    mov dl,10
    mov ah,2h
    int 21h 
            
    pop     ax
@@3:
    inc ax
    loop    next
 
    mov ax, 4c00h    
    int 21h  
 
@@2:    pop ax
    pop ax
    jmp @@3
 
end begin
3
ФедосеевПавел
17.12.2016, 16:39
  #4

Не по теме:

мановар, как то об упрощённом преобразовании чисел в символы забыл. Всё думал, почему так упорно диапазон дают двузначных чисел. А ларчик просто открывался...

0
1714 / 605 / 187
Регистрация: 12.03.2016
Сообщений: 2,188
17.12.2016, 17:41 5
ФедосеевПавел, наверное, что бы слишком не обременять.
1
4$M f0r3v3r XD
5829 / 1763 / 194
Регистрация: 14.12.2014
Сообщений: 3,316
Записей в блоге: 11
17.12.2016, 23:15 6
Ещё проще:
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
.model tiny
.code
.startup
 
        mov     cx,50-20+1
        mov     bx,503h
    @@next:
        mov     ax,50+1
        sub     ax,cx
        push    ax
        div     bl
        test    ah,ah
        pop     ax
        jnz     @@bad
        push    ax
        div     bh
        test    ah,ah
        pop     ax
        jz      @@bad
 
        aam
        add     ax,'00'
        mov     dl,ah
        mov     ah,2
        push    ax
        int     21h
        pop     dx
        int     21h
        mov     dl,' '
        int     21h
    @@bad:
        loop    @@next
        
        int     20h
 
end
p.s. Зачем делить на 10 и проверять остаток 0 и 5, когда можно просто разделить на 5 ?
0
1714 / 605 / 187
Регистрация: 12.03.2016
Сообщений: 2,188
17.12.2016, 23:23 7
Jin X, это я по большому счету для себя, просто так захотелось, можно еще проще.
0
0 / 0 / 0
Регистрация: 10.12.2016
Сообщений: 10
17.12.2016, 23:32  [ТС] 8
Ребят, спасибо большое за коды) но я в шапке просил "попроще")

Добавлено через 1 минуту
кстати, что с этим кодом не так? можете подредактировать? мне сказали что div неправильно работает)

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
.386
.model flat, stdcall
option casemap :none
include \masm32\include\windows.inc
include \masm32\include\masm32.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\debug.inc
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\debug.lib
.code
start:
 
mov eax,4
mov ebx,2
mov ecx,1
mov edx,2
 
imul eax,3
sub eax,ebx
idiv edx
imul ecx,2
add eax,ecx
add eax,1
 
PrintDec eax
end start
Вот примерно на таком же уровне должен быть второй код)
0
1714 / 605 / 187
Регистрация: 12.03.2016
Сообщений: 2,188
17.12.2016, 23:52 9
IDIV Деление целых чисел со знаком
Команда IDIV выполняет деление целого числа со знаком, находящегося в регистрах АХ (в случае деления на байт) или DX:AX (в случае деления на слово), на операнд-источник (целое число со знаком). Размер делимого в два раза больше размеров делителя и остатка. Оба результата рассматриваются как числа со знаком, причем знак остатка равен знаку делимого.
Для однобайтовых операций делимое помещается в регистр АХ; после выполнения операции деления частное записывается в регистр AL, остаток - в регистр АН.
Для двухбайтовых операций делимое помещается в регистры DX:AX (в DX - старшая часть, в АХ - младшая); после выполнения операции деления частное записывается в регистр АХ, остаток - в регистр DX.
В качестве операнда-делителя команды idiv можно указывать регистр данных или ячейку памяти; не допускается деление на непосредственное значение. Если делитель равен 0, или если частное не помещается в назначенный регистр, возбуждается прерывание через вектор 0. Команда не воздействует на флаги процессора.
0
Модератор
Эксперт по электронике
7522 / 3712 / 1455
Регистрация: 01.02.2015
Сообщений: 11,550
Записей в блоге: 2
18.12.2016, 00:18 10
cosonig, и ещё раз уточните задание - ОС (DOS/Windows/Linux) и компилятор (tasm/masm/fasm/gas/kwas).
Просто вам приводят примеры для DOS+tasm, а вы - для Windows+masm.
0
4$M f0r3v3r XD
5829 / 1763 / 194
Регистрация: 14.12.2014
Сообщений: 3,316
Записей в блоге: 11
18.12.2016, 10:16 11
Ваще просто!
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
.model tiny
.code
.startup
 
        mov     al,21
    @@next:
        push    ax
        aam     5
        test    al,al
        pop     ax
        jz      @@bad
 
        push    ax
        aam
        add     ax,'00'
        xchg    al,ah
        int     29h
        xchg    al,ah
        int     29h
        mov     al,' '
        int     29h
        pop     ax
    @@bad:
        add     al,3
        cmp     al,48
        jna     @@next
        
        ret
 
end
Добавлено через 2 минуты
Цитата Сообщение от мановар Посмотреть сообщение
Jin X, это я по большому счету для себя, просто так захотелось, можно еще проще.
На меня, наверное, какая-то мания оптимизации иногда находит
0
1714 / 605 / 187
Регистрация: 12.03.2016
Сообщений: 2,188
18.12.2016, 10:23 12
А вот это я и имел ввиду.
0
0 / 0 / 0
Регистрация: 10.12.2016
Сообщений: 10
28.12.2016, 19:48  [ТС] 13
Windows+masm естественно, ребят)
0
4$M f0r3v3r XD
5829 / 1763 / 194
Регистрация: 14.12.2014
Сообщений: 3,316
Записей в блоге: 11
29.12.2016, 01:47 14
Когда "естественно", то надо сразу говорить или размещать в соответствующем разделе. Алгоритм дан, переводи сам.
0
0 / 0 / 0
Регистрация: 10.12.2016
Сообщений: 10
30.12.2016, 20:30  [ТС] 15
Я в этом ну ни разу не секу, уж извините, что сразу не пояснил, я даже представить не мог что они под разные платформы и версии могут писаться) и перевести самому мне никак не удастся)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.12.2016, 20:30

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Даны натуральные числа от 20 до 50.Напечатать те из них, которые делятся на 3, но не делятся на 5
Подскажите в чем ошибка? Консоль не выводит ни каких значений using System; using...

Даны натуральные числа от 1 до 50. Найти суммы тех из них, которые делятся на 5 и на 7.
Даны натуральные числа от 1 до 50.Найти суммы тех из них, которые делятся на 5 и на 7. Функция

Даны натуральные числа от 1 до 50. Найти сумму тех из них, которые делятся на 5 или на 7
Даны натуральные числа от 1 до 50. Найти сумму тех из них, которые делятся на 5 или на 7. Буду...

Даны натуральные числа от 1 до 50. Найти сумму тех из них, которые делятся на 5 или на 7.
Даны натуральные числа от 1 до 50. Найти сумму тех из них, которые делятся на 5 или на 7.


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

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

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