Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/40: Рейтинг темы: голосов - 40, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 14.03.2016
Сообщений: 4
MASM

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

24.09.2017, 23:27. Показов 7494. Ответов 3
Метки masm (Все метки)

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

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

Помогите пожалуйста, я в ассемблере ноль, желательно с пояснениями по возможности)
За раннее спасибо)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.09.2017, 23:27
Ответы с готовыми решениями:

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

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

Ввод строки символов в массив. Ввод осуществляется до восприятия возврата каретки или заполнения массива
Добрый Вечер. мне нужно выполнить такую задачу: Разработать программу, осуществляющую ввод...

3
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8644 / 4479 / 1669
Регистрация: 01.02.2015
Сообщений: 13,883
Записей в блоге: 11
24.09.2017, 23:45
Смотрите в закреплённой теме Ввод и вывод чисел в различных системах счисления. Там даже с примерами.

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

Добавлено через 9 минут
ФедосеевПавел, в предыдущем сообщении ответил, прочтите его пожалуйста) забыл адресовать сообщение Вам)
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8644 / 4479 / 1669
Регистрация: 01.02.2015
Сообщений: 13,883
Записей в блоге: 11
25.09.2017, 00:08
Лучший ответ Сообщение было отмечено 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
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.09.2017, 00:08
Помогаю со студенческими работами здесь

Преобразование строки из десятичных цифр
Задание: Дана строка из четырёх десятичных цифр. Если первые две цифры не совпадают и больше...

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

Найти все четырёхзначные десятичные числа, у которых сумма первых двух цифр в два раза больше суммы правых двух цифр
Найти все четырёхзначные десятичные числа, у которых сумма первых двух цифр в два раза больше суммы...

Определить равна ли сумма двух первых цифр четырехзначного числа сумме его последних цифр
Помогите пожалуйста написать программу в TASM Определить равна ли сумма двух первых цифр...

Определить, равна ли сумма k первых цифр заданного натурального числа, сумме k его последних цифр
Определить, равна ли сумма k первых цифр заданного натурального числа, сумме k его последних цифр.


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru