Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
asdzxc
60 / 59 / 36
Регистрация: 13.04.2014
Сообщений: 267
Завершенные тесты: 3
1

Перевод числа в другую систему счисления (nasm x64)

21.12.2017, 18:00. Просмотров 857. Ответов 1
Метки нет (Все метки)

Доброго времени суток, прошу помощи. Есть задача: написать программу, которая будет переводить десятичное число в другую систему счисления. В первом сниппете целое число a dw - больше 255 не будет работать. Решил написать, чтобы с большими числами тоже работало, но почему-то программа крашится, работает долго и ничего не выводит, если пробывать дебажить, то выводит "Program received signal SIGSEGV, Segmentation fault.". Программа успешно завершает работу, если закоментировать
mov word [rdx + 4 * rcx], dx
В чем ошибка? Прошу помочь и объяснить.

Кликните здесь для просмотра всего текста
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
%include "io64.inc"
section .data
    mas times 100 dw 0
    a dw 10
    b db 2
    
section .text
global WinMain
WinMain: 
    mov rbp, rsp
    xor rcx, rcx
    mov rdx, mas
    
start_loop:
    mov ax, [a]
    idiv byte [b]
    
    mov [a], al
    
    inc rcx
    mov [rdx + 4 * rcx], ah
    
    test al, al
    jnz start_loop
 
CMP_:
    test rcx, rcx
    jnz PRINT
    jmp M_END
    
PRINT:
    mov rax, [mas + 4 * rcx]
    PRINT_DEC 4, rax
    dec rcx
    jmp CMP_
    
M_END:
    xor rax, rax
    ret


Кликните здесь для просмотра всего текста
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
%include "io64.inc"
section .data
    mas times 100 dd 0
    a dd 10
    b dw 2
section .text
global WinMain
WinMain:
    mov rbp, rsp
    
    xor rcx, rcx
    mov rdx, mas
 
start_loop:
    mov ax, [a]
    mov dx, [a + 2]
    
    idiv word [b]
    
    mov word [a], ax
        
    inc rcx
    mov word [rdx + 4 * rcx], dx
        
    test ax, ax
    jnz start_loop
end_loop:
 
PRINT_ARRAY:    
 
CMP_:
    test rcx, rcx
    jnz PRINT
    jmp M_END
    
PRINT:
    mov rax, [mas + 4 * rcx]
    PRINT_DEC 4, rax
    dec rcx
    jmp CMP_    
    
M_END:
    xor rax, rax
    ret
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2017, 18:00
Ответы с готовыми решениями:

Перевод числа из 16 в 10 систему счисления
Необходимо перевести четырехразрядное число (допустим A59F) в 10 форму и записать в строку. Для...

Перевод числа из OCT в BIN систему счисления ассемблер
Доброго времени суток! Стоит задача перевести число из 8 в 2 систему счисления на ассемблере. При...

Перевод двоичного дробного числа в десятичную систему счисления
Как на TASM перевести десятичную дробь из двоичной в десятичную систему счисления?

Перевод числа в 4-ю систему счисления
Требуется перевести значение полученной КС(контрольной суммы) в четвиричную систему и вывести ее...

Перевод числа из 4-ичной в 5-ичную систему счисления
помогите пожалуйста написать программку которая переводит из 4-ичной СС в 5-ичную СС...просто...

1
asdzxc
60 / 59 / 36
Регистрация: 13.04.2014
Сообщений: 267
Завершенные тесты: 3
22.12.2017, 18:39  [ТС] 2
Лучший ответ Сообщение было отмечено ФедосеевПавел как решение

Решение

Решено

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
%include "io64.inc"
 
section .data
    mas times 100 dd 0
    a dq 12345798
    b dd 2
    
section .text
global WinMain
WinMain:
    mov rbp, rsp
    xor rcx, rcx
 
start_loop:
    mov eax, [a]
    mov edx, [a + 4]
    
    idiv dword [b]
    
    mov dword [a], eax
    
    inc rcx
    mov dword [mas + 4 * rcx], edx
        
    test rax, rax
    jnz start_loop
end_loop:
 
PRINT_ARRAY:
CMP_:
    test rcx, rcx
    jnz PRINT
    jmp M_END
    
PRINT:
    mov rax, [mas + 4 * rcx]
    PRINT_DEC 4, rax
    dec rcx
    jmp CMP_    
    
M_END:
    xor rax, rax
    ret
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2017, 18:39

Перевод числа из 10 в 16 систему счисления и подсчет количества нулей
stkseg segment stack db 256 dup (?) stkseg ends data segment mes1 db 'Vvedite chislo v...

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

Перевод из 2-ой системы счисления в 8-ую систему счисления
Здравствуйте !Мб у кого нибудь есть код или процедура перевода из 2-ой системы счисления в 8-ую...


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

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

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