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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2022, 11:23   #1
ClaraBell
Новичок
Джуниор
 
Регистрация: 18.10.2022
Сообщений: 6
По умолчанию НОД. NASM

Найти наибольший общий делитель двух чисел а и b. Искала информацию, но для компилятора JDoodle ничего не подходит, помогите составить программу
ClaraBell вне форума Ответить с цитированием
Старый 19.10.2022, 11:31   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Код:
a dd 5
b dd 21
...
    mov     eax, [a]
    mov     edx, [b]
; eax = a, edx = b
    push    ebx
    bsf     ebx, eax
    bsf     ecx, edx
    cmp     bl, cl
    cmovc   ecx, ebx
    sar     eax, cl
    sar     edx, cl
    pop     ebx
cycl:
    cmp     eax, edx
    jz      done
    jc      next
    xchg    eax, edx
next:
    sub     edx, eax
    jnz     cycl
done:
    shl     eax, cl
; eax = НОД(a, b) = 1
По памяти (бинарный алгоритм)

Последний раз редактировалось macomics; 19.10.2022 в 12:35.
macomics вне форума Ответить с цитированием
Старый 20.10.2022, 17:45   #3
ClaraBell
Новичок
Джуниор
 
Регистрация: 18.10.2022
Сообщений: 6
По умолчанию

macomics,
Цитата:
Сообщение от macomics Посмотреть сообщение
Код:
a dd 5
b dd 21
...
    mov     eax, [a]
    mov     edx, [b]
; eax = a, edx = b
    push    ebx
    bsf     ebx, eax
    bsf     ecx, edx
    cmp     bl, cl
    cmovc   ecx, ebx
    sar     eax, cl
    sar     edx, cl
    pop     ebx
cycl:
    cmp     eax, edx
    jz      done
    jc      next
    xchg    eax, edx
next:
    sub     edx, eax
    jnz     cycl
done:
    shl     eax, cl
; eax = НОД(a, b) = 1
По памяти (бинарный алгоритм)
При проверке кода, когда выводишь eax не выдает никакой информации
ClaraBell вне форума Ответить с цитированием
Старый 20.10.2022, 20:53   #4
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Так вам надо перед выводом преобразовать значение из eax в текстовый вид.
macomics вне форума Ответить с цитированием
Старый 20.10.2022, 23:49   #5
Generetic
Новичок
Джуниор
 
Регистрация: 19.10.2022
Сообщений: 5
По умолчанию

macomics,
Ну получается такой код, а вывод показывает лишь то, что ошибок нет, самого результата нет
Код:
section .text
   global _start 
     
_start:
a dd 10
b dd 30
    mov     eax, [a]
    mov     edx, [b]
; eax = a, edx = b
    push    ebx
    bsf     ebx, eax
    bsf     ecx, edx
    cmp     bl, cl
    cmovc   ecx, ebx
    sar     eax, cl
    sar     edx, cl
    pop     ebx
cycl:
    cmp     eax, edx
    jz      done
    jc      next
    xchg    eax, edx
next:
    sub     edx, eax
    jnz     cycl
done:
    shl     eax, cl
; eax = НОД(a, b) = 1:

   mov [sum], eax
   mov  edx,lenx    
   mov  ecx, sum  
   mov  ebx, 1    
   mov  eax, 4     
   int  0x80      
     
   mov  eax, 1   
   int  0x80      
 
section .data
sum: 
   db  0
    lenx equ $ - sum
Generetic вне форума Ответить с цитированием
Старый 20.10.2022, 23:54   #6
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

А я для чего поставил ...
Это значит, что надо обязательно что-то написать между строками a dd 10 + b dd 30 и mov eax, [a] + mov edx, [b] на месте ...

А вот значение в eax, которое является ответом еще предстоит перевести из Integer в String, записать String в буфер для вывода в консоль и только потом этот буфер передать в функцию записи (SYS_WRITE)
macomics вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
NASM DEfiler0005 Помощь студентам 1 21.01.2020 16:53
NASM DEfiler0005 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 21.01.2020 15:49
nasm TotKtoNado Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 06.11.2011 20:07
Ассемблер(NASM). Как оформить цикл "while" в NASM-е? Зелёный Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 10.06.2011 16:04