Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 12.10.2017
Сообщений: 18
1

Преобразование строки двоичных цифр в эквивалентное ей целое десятичное число

12.10.2017, 09:32. Показов 1024. Ответов 2
Метки нет (Все метки)

2. Написать и протестировать функцию, которая преобразует строку двоичных цифр в эквивалентное ей целое десятичное число.На Ассемблере
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.10.2017, 09:32
Ответы с готовыми решениями:

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

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

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

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

2
Модератор
Эксперт по электронике
7523 / 3712 / 1455
Регистрация: 01.02.2015
Сообщений: 11,550
Записей в блоге: 2
14.10.2017, 22:47 2
Нужно:
1) строка с двоичными цифрами в строку с десятичным представлением числа

или

2) две процедуры: первая - строку с двоичными цифрами в число, вторая - число в строку с десятичным представлением

Добавлено через 35 минут
Преобразования строки в число. Потом для теста это число преобразуется в десятичное
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
@stack  segment para stack
        db      1024 dup(?)
@stack  ends
 
@data   segment
        A       db      '0101011111111'
        LenA    equ     ($-A)
        B       db      '1010101010101010'
        LenB    equ     ($-B)
        C       db      '1x10101010101010'
        LenC    equ     ($-C)
        D       db      '10101010101010100'
        LenD    equ     ($-D)
        CrLf    db      0Dh, 0Ah, '$'
@data   ends
 
@code   segment
        assume  cs:@code, ds:@data, ss:@stack
main    proc
        ;инициализация сегментного регистра данных
        mov     ax,     @data
        mov     ds,     ax
 
        ;1
        lea     dx,     [A]
        mov     cx,     LenA
        call    TestProc
        ;2
        lea     dx,     [B]
        mov     cx,     LenB
        call    TestProc
        ;3
        lea     dx,     [C]
        mov     cx,     LenC
        call    TestProc
        ;4
        lea     dx,     [D]
        mov     cx,     LenD
        call    TestProc
        ;завершение программы
        mov     ax,     4C00h
        int 21h
main    endp
 
;Функция преобразует строку из не более 16 символов
;с двоичными цифрами в число
;на входе:
;  ds:dx - адрес строки с числом
;  cx    - длина строки
;на выходе:
;  ax    - эквивалентное строке целое число
BinToNum        proc
        push    bx
        push    cx
        push    dx
        push    si
        push    di
 
        mov     ax,     0
        jcxz    @@ExitBinToNum
        cmp     cx,     16
        ja      @@ExitBinToNum
        mov     bx,     0
        mov     si,     dx
        @@ForBinToNum:
                mov     dl,     byte ptr [si]
                inc     si
                cmp     dl,     '0'     ;если символ не двоичная цифра - выйти
                jb      @@ExitBinToNum
                cmp     dl,     '1'
                ja      @@ExitBinToNum
 
                sub     dl,     '0'+1   ;Result:=(Result << 1)+цифра
                cmc
                rcl     bx,     1
        loop    @@ForBinToNum
        mov     ax,     bx
@@ExitBinToNum:
        pop     di
        pop     si
        pop     dx
        pop     cx
        pop     bx
        ret
BinToNum        endp
 
;Процедура для проверки функции преобразования строки в число
TestProc        proc
        push    ax
        push    bx
        push    cx
        push    dx
        push    si
        push    di
 
        call    BinToNum
        push    ax
        mov     ah,     09h
        lea     dx,     [CrLf]
        int     21h
        pop     ax
        call    Show_AX
 
        pop     di
        pop     si
        pop     dx
        pop     cx
        pop     bx
        pop     ax
        ret
TestProc        endp
 
; выводит знаковое 16-разрядное число из регистра AX на экран
; входные данные:
; ax - число для отображения
Show_AX proc
        push    ax
        push    bx
        push    cx
        push    dx
        push    di
 
        mov     cx,     10
        xor     di,     di      ; di - кол. цифр в числе
 
@@Conv:
        xor     dx,     dx
        div     cx              ; dl = num mod 10
        add     dl,     '0'     ; перевод в символьный формат
        inc     di
        push    dx              ; складываем в стек
        or      ax,     ax
        jnz     @@Conv
        ; выводим из стека на экран
@@Show:
        pop     dx              ; dl = очередной выводимый символ
        mov     ah,     2       ; ah - функция вывода символа на экран
        int     21h
        dec     di              ; повторяем пока di<>0
        jnz     @@Show
 
        pop     di
        pop     dx
        pop     cx
        pop     bx
        pop     ax
        ret
Show_AX endp
 
@code   ends
 
        end     main
0
0 / 0 / 0
Регистрация: 12.10.2017
Сообщений: 18
15.10.2017, 23:16  [ТС] 3
спасибооооо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.10.2017, 23:16

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

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

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

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

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


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

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

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