Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
IlluZi0ne
0 / 0 / 0
Регистрация: 14.03.2016
Сообщений: 4
1

[MASM] Ввод строки цифр и преобразование её в число

24.09.2017, 23:27. Просмотров 1359. Ответов 3

Необходимо, запросить строку символов, положить в di соответствующее число.

То есть пользователь вводит 65345 в di должно быть 65345d
Вводит 12 - в di 12d

Помогите пожалуйста, я в ассемблере ноль, желательно с пояснениями по возможности)
За раннее спасибо)
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2017, 23:27
Ответы с готовыми решениями:

[emu8086] Преобразование строки восьмеричных цифр в целое десятичное число
2.Функция Write и test, которая преобразует строку восьмеричных цифр в целую десятичную число,...

Преобразование строки двоичных цифр в эквивалентное ей целое десятичное число
2. Написать и протестировать функцию, которая преобразует строку двоичных цифр в эквивалентное ей...

Преобразование строки восьмеричных цифр в целое десятичное число
написать процедуру и функцию преобразование строки восьмеричных цифр в целое десятичное число. В...

Оператор if и указатель на цикл (ввод цифр и преобразование в буквы)
Программа работает так:Спрашивает Go Go? Когда вводим число 4 начинается...Водим цепочку из цифр...

Преобразование строки в массив цифр
Помогите разобраться с функцией для преобразования строки в массив цифр. void readlong (type &vec)...

3
ФедосеевПавел
Модератор
4160 / 2270 / 919
Регистрация: 01.02.2015
Сообщений: 7,546
24.09.2017, 23:45 2
Смотрите в закреплённой теме Ввод и вывод чисел в различных системах счисления. Там даже с примерами.

Добавлено через 12 минут
Постарайтесь разобраться. Сейчас прошло всего лишь три недели от начала учебного года - вы всё пока можете наверстать.
1
IlluZi0ne
0 / 0 / 0
Регистрация: 14.03.2016
Сообщений: 4
25.09.2017, 00:03  [ТС] 3
Честно, для меня это как-то сложно, закрепленную тему видел...
Нет времени особо вникать..
Мне нужна эта задача,для получения зачета, в течении недели сдать надо ...
Буду очень признателен, если сделаете)

Добавлено через 9 минут
ФедосеевПавел, в предыдущем сообщении ответил, прочтите его пожалуйста) забыл адресовать сообщение Вам)
0
ФедосеевПавел
Модератор
4160 / 2270 / 919
Регистрация: 01.02.2015
Сообщений: 7,546
25.09.2017, 00:08 4
Лучший ответ Сообщение было отмечено IlluZi0ne как решение

Решение

masm32 v10 программа DOS exe
Компиляция
d:\masm32\bin\ml.exe /c /Fl /Sa zachet.asm
d:\masm32\bin\link16 zachet.obj,,,,,

С кодировками cp866 и cp1251 разберётесь самостоятельно.
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
.MODEL  Small
 
.DATA
 
KeyBuf  db      6, 0, 6 dup(0)      ;max,len,string,CR(0dh)
CR_LF   db      0Dh, 0Ah, '$'
 
Prompt  db      'Введите число: ', '$'
Error01 db      'Ошибка ввода числа',0Dh, 0Ah, '$'
 
Numer   dw      ?
 
.CODE
 
; преобразования строки в число
; на входе:
; ds:[si] - строка с числом
; ds:[di] - адрес числа
; на выходе
; ds:[di] - число
; CY - флаг переноса (при ошибке - установлен, иначе - сброшен)
Str2Num PROC
        push    ax
        push    bx
        push    cx
        push    dx
        push    ds
        push    es
 
        push    ds
        pop     es
 
        mov     cl, ds:[si]
        xor     ch, ch
 
        inc     si
 
        mov     bx, 10
        xor     ax, ax
 
@@Loop:
        mul     bx         ; умножаем ax на 10 ( dx:ax=ax*bx )
        mov     [di], ax   ; игнорируем старшее слово
        cmp     dx, 0      ; проверяем, результат на переполнение
        jnz     @@Error
 
        mov     al, [si]   ; Преобразуем следующий символ в число
        cmp     al, '0'
        jb      @@Error
        cmp     al, '9'
        ja      @@Error
        sub     al, '0'
        xor     ah, ah
        add     ax, [di]
        jc      @@Error    ; Если сумма больше 65535
        inc     si
 
        loop    @@Loop
 
        mov     [di], ax
        clc
        pop     es
        pop     ds
        pop     dx
        pop     cx
        pop     bx
        pop     ax
        ret
@@Error:
        xor     ax, ax
        mov     [di], ax
        stc
        pop     es
        pop     ds
        pop     dx
        pop     cx
        pop     bx
        pop     ax
        ret
Str2Num ENDP
 
Main    PROC    FAR
        mov     ax, @DATA
        mov     ds, ax
        mov     es, ax
 
        ; ввод числа с клавиатуры (строки)
        lea     dx, Prompt
        mov     ah, 09h
        int     21h
 
        mov     ah, 0Ah
        mov     dx, offset KeyBuf
        int     21h
 
        ; перевод строки (на новую строку)
        lea     dx, CR_LF
        mov     ah, 09h
        int     21h
 
        ; преобразование строки в число
        lea     si, KeyBuf+1
        lea     di, Numer
        call    Str2Num
 
        ; проверка на ошибку
        jnc     @@NoError
 
        ; если есть ошибка ввода - напечатать сообщение об ошибке
        lea     dx, Error01
        mov     ah, 09h
        int     21h
        jmp     @@Exit
 
        ; если нет ошибки ввода - загрузить число в регистр di
@@NoError:
        mov     di, Numer
 
        ; выход
@@Exit:
        ; ожидание нажатия любой клавиши
        mov     ah, 08h
        int     21h
 
        mov     ax, 4c00h
        int     21h
Main    ENDP
 
.STACK  100h
 
        END     Main
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.09.2017, 00:08

Вводится две строки, состоящие из цифр; из этих цифр составить максимальное число
Доброго времени суток! Нужно написать программу, где на экране вводится две строки состоящие из...

Преобразование пар, в список цифр, из которых состоит число
Привет. Реализацию найти не могу, а написать самому ума не хватает. Задание: "Большие целые...

Дана строка символов, состоящая из букв и цифр. Вывести на экран число, состоящее их цифр данной строки
Дана строка символов, состоящая из букв и цифр. Вывести на экран число, состоящее их цифр данной...


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

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

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