Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/47: Рейтинг темы: голосов - 47, средняя оценка - 4.89
84 / 12 / 1
Регистрация: 24.01.2011
Сообщений: 309
1

Вопрос в стиле "Разрушители мифов"

18.10.2011, 20:22. Показов 9795. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Скажите пожалуйста, правда ли то что чтобы возвести икс в квадрат на ассемблере нужно вручную прописать около пяти страниц программного кода?))))
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2011, 20:22
Ответы с готовыми решениями:

5 мифов о кофе
Мифы о кофе Миф первый: Употребление кофе – причина заболеваний сердца. Проверить правдивость...

Интересные Факты: 20 Самых Популярных Научных Мифов
Интересные факты Большинство - заблуждение, но некоторые - правда Американский популярный...

C++ в функциональном стиле: как писать в стиле C#/LINQ (без дополнительных библиотек)?
Как писать в стиле C#/LINQ (без дополнительных библиотек)? Вот, допустим, есть простейшая задача:...

Вопрос по SetParent (поэтому, наверное, это вопрос к NickStaves)
Есть набор форм, назовём их 'интерфейсными'. Есть отдельная форма, назовём её 'хранилищем'. Сама...

Строки в стиле C
Добрый вечер, решил поковыряться со строками в стиле C и наткнулся на следующую проблему. В 13-й...

22
766 / 310 / 11
Регистрация: 27.05.2011
Сообщений: 703
18.10.2011, 20:27 2
у тебя от этой лабуды уши не отвисли?
НЕТ.
1
84 / 12 / 1
Регистрация: 24.01.2011
Сообщений: 309
18.10.2011, 20:30  [ТС] 3
но это все же сложнее чем в бейсике к примеру?
0
766 / 310 / 11
Регистрация: 27.05.2011
Сообщений: 703
18.10.2011, 20:33 4
Assembler
1
2
3
4
XOR DX,DX
MOV AX,X
MOV BX,X
MUL BX
это по твоему сложно?
1
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
18.10.2011, 21:53 5
XOR DX,DX - лишнее
0
766 / 310 / 11
Регистрация: 27.05.2011
Сообщений: 703
18.10.2011, 22:32 6
да, xor лишний, ИЗВИНЯЮСЬ, просто долго с асмом не сидел и чёта перепутал.
P.S.: dx нужно очищать при делении.
0
Всегда не хватает времени
119 / 119 / 20
Регистрация: 15.10.2009
Сообщений: 493
18.10.2011, 22:51 7
Цитата Сообщение от zzzyyyxxx Посмотреть сообщение
Assembler
1
2
3
4
XOR DX,DX
MOV AX,X
MOV BX,X
MUL BX
это по твоему сложно?
извиняюсь, команда умножения разве не работает с аккумулятором? Вместо АХ нужно пользоваться AL, хотя я могу быть не прав, объясните пожалуйста
0
766 / 310 / 11
Регистрация: 27.05.2011
Сообщений: 703
18.10.2011, 23:04 8
я не совсем понял вопрос. как-нить по другому выразись.

вот справка по mul:
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
Команда mul выполняет умножение целого числа без знака, находящегося в регистре AL (в случае умножения на байт) или АХ (в случае умножения на слово), на операнд-источник (целое число без знака). Размер произведения в два раза больше размера сомножителей.
Для однобайтовых операций один из сомножителей помещается в регистр AL; после выполнения операции произведение записывается в регистр АХ.
Для двухбайтовых операций один из сомножителей помещается в регистр АХ; после выполнения операции произведение записывается в регистры DX:AX (в DX - старшая часть, в АХ - младшая). Предыдущее содержимое регистра DX затирается.
Если содержимое регистра АН после однобайтового умножения или содержимое регистра DX после двухбайтового умножения не равны 0, флаги CF и OF устанавливаются в 1. В противном случае оба флага сбрасываются в 0.
В качестве операнда-сомножителя команды mul можно указывать регистр (кроме сегментного) или ячейку памяти; не допускается умножение на непосредственное значение. Команда воздействует на флаги OF и CF.
 
 
Пример 1
mov AL,5 ;Первый сомножитель 
mov BL,3 ;Второй сомножитель 
mul BL ;AX=000Fh, произведение
 
Пример 2
mov AX,256 ;Первый сомножитель 
mov BX,256 ;Второй сомножитель 
mul BX ;DX=0001h, AX=0000h
;(DX:AX=65536, произведение)
 
Пример 3
;В полях данных
coef db 100 ;Первый сомножитель
datal db 126 ;Второй сомножитель
mov AL,datal ;AL=7Eh=126
mul coef ;AX=3138h=12600,произведение
 
Пример 4
;B полях данных
coef dw 5000 ;Первый сомножитель 
datal dw 1200 ;Второй сомножитель 
mov AX,datal ;AX=4BOh=1200 
mul coef ;DX=005Bh, AX=8D80h 
;Произведение=ВХ:AX= 
;5B8D80h=6000000
0
Всегда не хватает времени
119 / 119 / 20
Регистрация: 15.10.2009
Сообщений: 493
18.10.2011, 23:07 9
Цитата Сообщение от zzzyyyxxx Посмотреть сообщение
я не совсем понял вопрос. как-нить по другому выразись.
ну смотри, как компилятор понимает что значение для деления нужно брать именно с АХ

mov AX,5
div BH

как она знает что именно делим BH/AX
0
766 / 310 / 11
Регистрация: 27.05.2011
Сообщений: 703
18.10.2011, 23:29 10
точно не скажу, но например, когда в универе нам давали задание написать компилятор, я тупо создал списки:
с регистрами байтами. (ah,al и т.п.)
и с регистрами словами(ax и т.д.)

а при компиляции просто сопоставлял операнды, соответствуют они друг другу или нет.

Добавлено через 12 минут
Цитата Сообщение от Mischanja Посмотреть сообщение
как она знает что именно делим BH/AX
здесь наоборот, AX/BH.
синтаксис у команды такой.
0
Ушел с форума
Автор FAQ
16338 / 7659 / 1075
Регистрация: 11.11.2010
Сообщений: 13,697
19.10.2011, 04:07 11
Цитата Сообщение от Mischanja
извиняюсь, команда умножения разве не работает с аккумулятором? Вместо АХ нужно пользоваться AL, хотя я могу быть не прав, объясните пожалуйста
1) команда умножения может в качестве первого сомножителя использовать любой регистр, он же станет местом, куда будет помещен результат imul bx,[a]; bx:=bx*[a]
2) кода требуется используют AL или AX или EAX всё зависит от поставленной задачи
0
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,933
19.10.2011, 08:56 12
Скажите пожалуйста, правда ли то что чтобы возвести икс в квадрат на ассемблере нужно вручную прописать около пяти страниц программного кода?))))
Для ДОС, если нужно ввести, посчитать и вывести действительные значения - вполне может быть и столько.
0
Ушел с форума
Автор FAQ
16338 / 7659 / 1075
Регистрация: 11.11.2010
Сообщений: 13,697
19.10.2011, 09:33 13
Цитата Сообщение от nitromiha
скажите пожалуйста, правда ли то что чтобы возвести икс в квадрат на ассемблере нужно вручную прописать около пяти страниц программного кода?))))
Бред несете...
не понятно ассемблер для какого микропроцессора ТС имеет ввиду, у всех intel x86 есть не одна команда умножения -- различаются знаковое умножение imul (с одним, двумя, тремя операндами) или умножение без знака mul, поддерживается умножение вещественных чисел командой fmul, умножать можно командой AAD. С появлением Пентиумов появилось mmx/xxm-умножение командами PMADDWD, PMULHW, PMULHUW, PMULLW, PMULHRSW, PMULUDQ, PMADDWD.
Если речь о микропроцессорах intel 4004 или 8080
1) то их можно найти только в музее или на помойке т.е. практической ценности программы для них не представляют
2) умножение при помощи сложения и сдвигов можно уложить в два десятка команд, но это займет от силы одну "страницу программного кода"
3) с чего вдруг программы стали измерятся в "страницах программного кода"? Эффективность программ на ассемблере измеряется
а) в скорости вычисления
б) в байтах, которые программы занимают в памяти...

Не по теме:

alexcoder, а внешние функции если подключить?

0
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,933
19.10.2011, 09:48 14
Mikl___,для x86, ОС ДОС:
Функция преобразования строки в float-число: 94 строки
Функция вывода float-числа: 107 строк
Все остальное: ~20 строк.
Если принять, что на страницу помещается 30 строк, это более 7 страниц.

Функции довольно оптимизированные, мусора в них мало.
С другой стороны, та же программа в MASM32 поместится в 30 строк, поскольку есть функции API и библиотеки MASMа.
0
Ушел с форума
Автор FAQ
16338 / 7659 / 1075
Регистрация: 11.11.2010
Сообщений: 13,697
19.10.2011, 12:18 15
alexcoder, прикрепите пожалуйста листинги
"Функция преобразования строки в float-число: 94 строки
Функция вывода float-числа: 107 строк"
а я попробую уложится в меньшее количество без использования WinAPI, 7 страниц это явный перебор
0
766 / 310 / 11
Регистрация: 27.05.2011
Сообщений: 703
19.10.2011, 12:21 16
alexcoder, ты читал тему? там не сказано, что всё от а до я делать надо,
там просто возведение в квадрат.
я понимаю Mikl___ и ты умные люди, но зачем разводить такие споры, по мелочам?
0
84 / 12 / 1
Регистрация: 24.01.2011
Сообщений: 309
19.10.2011, 19:32  [ТС] 17
Цитата Сообщение от Mikl___ Посмотреть сообщение
с чего вдруг программы стали измерятся в "страницах программного кода"?
да это просто один мой знакомый сказал что слышал такое про ассемблер))) а страници - это для того, чтобы показать что это очень сложно!! и много кода!)))
0
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,933
19.10.2011, 21:51 18
Лучший ответ Сообщение было отмечено как решение

Решение

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
; Требуется директива .286C или выше.
outfloat proc   near
        push    ax
        push    cx
        push    dx
; Формируем кадр стэка, чтобы хранить в нём десятку
; и ещё какую-нибудь цифру.
        push    bp
        mov     bp, sp
        push    10
        push    0
; Проверяем число на знак, и если оно отрицательное,
        ftst
        fstsw   ax
        sahf
        jnc     @of1
; то выводим минус
        mov     ah, 02h
        mov     dl, '-'
        int     21h
; и оставляем модуль числа.
        fchs
; Пояснение далее пойдёт на примере.   ; ST(0) ST(1) ST(2) ST(3) ...
; Отделим целую часть от дробной.      ; 73.25 ... что-то не наше
@of1:   fld1                           ;  1    73.25 ...
        fld     st(1)                  ; 73.25  1    73.25 ...
; Остаток от деления на единицу даст дробную часть.
        fprem                          ;  0.25  1    73.25 ...
; Если вычесть её из исходного числа, получится целая часть.
        fsub    st(2), st              ;  0.25  1    73    ...
        fxch    st(2)                  ; 73     1     0.25 ...
; Сначала поработаем с целой частью. Считать количество цифр будем в CX.
        xor     cx, cx
; Поделим целую часть на десять,
@of2:   fidiv   word ptr [bp - 2]      ;  7.3   1     0.25 ...
        fxch    st(1)                  ;  1     7.3   0.25 ...
        fld     st(1)                  ;  7.3   1     7.3   0.25 ...
; отделим дробную часть - очередную справа цифру целой части исходного числа,-
        fprem                          ;  0.3   1     7.3   0.25 ...
; от чатсного оставим только целую часть
        fsub    st(2), st              ;  0.3   1     7     0.25 ...
; и сохраним цифру
        fimul   word ptr [bp - 2]      ;  3     1     7     0.25 ...
        fistp   word ptr [bp - 4]      ;  1     7     0.25 ...
        inc     cx
; в стэке.
        push    word ptr [bp - 4]
        fxch    st(1)                  ;  7     1     0.25 ...
; Так будем повторять, пока от целой части не останется ноль.
        ftst
        fstsw   ax
        sahf
        jnz     short @of2
; Теперь выведем её.
        mov     ah, 02h
@of3:   pop     dx
; Вытаскиваем очередную цифру, переводим её в символ и выводим.
        add     dl, 30h
        int     21h
; И так, пока не выведем все цифры.
        loop    @of3                   ;  0     1     0.25 ...
; Итак, теперь возьмёмся за дробную часть, для начала проверив её существование.
        fstp    st(0)                  ;  1     0.25 ...
        fxch    st(1)                  ;  0.25  1    ...
        ftst
        fstsw   ax
        sahf
        jz      short @of5
; Если она всё-таки ненулевая, выведем точку
        mov     ah, 02h
        mov     dl, '.'
        int     21h
; и не более шести цифр дробной части.
        mov     cx, 6
; Помножим дрообную часть на десять,
@of4:   fimul   word ptr [bp - 2]      ;  2.5   1    ...
        fxch    st(1)                  ;  1     2.5  ...
        fld     st(1)                  ;  2.5   1     2.5  ...
; отделим целую часть - очередную слева цифру дробной части исходного числа,-
        fprem                          ;  0.5   1     2.5  ...
; оставим от произведения лишь дробную часть,
        fsub    st(2), st              ;  0.5   1     2    ...
        fxch    st(2)                  ;  2     1     0.5  ...
; сохраним полученную цифру во временной ячейке
        fistp   word ptr [bp - 4]      ;  1     0.5  ...
; и сразу выведем.
        mov     ah, 02h
        mov     dl, [bp - 4]
        add     dl, 30h
        int     21h
; Теперь, если остаток дробной части ненулевой
        fxch    st(1)                  ;  0.5   1    ...
        ftst
        fstsw   ax
        sahf
; и мы вывели менее шести цифр, продолжим.
        loopnz  @of4                   ;  0     1    ...
; Итак, число выведено. Осталось убрать мусор из стэка.
@of5:   fstp    st(0)                  ;  1     ...
        fstp    st(0)                  ;  ...
; Точнее, стэков.
        leave
        pop     dx
        pop     cx
        pop     ax
        ret
outfloat endp
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
value_s2f   dw  0           ;переменая для функции преобразования строки в число
 
 
;+==============================================+
;|          ПЕРЕВОД ИЗ STRING В FLOAT           |
;+==============================================+
;| SI - указатель на строку                    |
;+----------------------------------------------+
;| ST(0) - преобрезованное число                |
;| cf=1 если в строке ошибка           |
;+==============================================+
STRTOFLOAT  PROC
    jmp     @STARTCONVERSATION_S2F  ; стартуем в рабочую область
@STARTCONVERSATION_S2F:
    pusha
    mov     value_s2f, 0            ; обнуляем локальную переменную
    xor     bx, bx              ; очищаем указатель позиции
    cmp byte ptr [si], '-'      ; проверяем на отрицательность
    jne     @POSITIVE_S2F       ; число не отрицательное
    inc     bx                  ; число отрицательное, увеличиваем позицию
@POSITIVE_S2F:
    mov     value_s2f, 10       ; загружаем число в переменную
    fild        value_s2f           ; загружаем в стэк число 10
    fldz                            ; загружаем в стэк число 0
@REPEAT_BEFORE:
    mov     al, byte ptr si[bx]     ; получаем символ
    cmp al, byte ptr '.'            ; проверяем точка ли это
    je      @ISPOINTBEFORE  ; точка - идем дальше
    cmp al, byte ptr 13         ; проверяем конец ли строкиа
    je      @ENDASINT       ; уже конец и хватит искать дроби
    cmp al, '0'             ; если текущий символ не цифра
    jc  @END_S2F_ERR            ; то выход с ошибкой
    cmp     al,'9'
    ja  @END_S2F_ERR
    sub     al, 30h             ; делаем из CHAR - INT
    mov     byte ptr value_s2f, al  ; копируем в память
    fiadd   value_s2f           ; складываем из тем, что есть в стэке
    fmul    st(0), st(1)            ; умножаем на 10
    inc     bx                  ; увеличиваем указатель
    jmp     @REPEAT_BEFORE  ; повторяем
@ISPOINTBEFORE:
    inc     bx                  ; увеличиваем указатель
    fdiv        st(0), st(1)            ; делим число на 10, т.к. оно уже больше
    fxch        st(1)               ; меняем местами регистры
    mov     al, byte ptr 13         ; ищем символ конца строки
@FINDNEXT:
    cmp si[bx], al              ; ищем конец строки
    je      @FINDEND            ; нешел конец строки
    inc     bx                  ; получаем следующий адрес символа
    jmp     @FINDNEXT           ; не нашел, еще ищем
@FINDEND:
    dec     bx                  ; переходим на предыдущий символ
    fldz                            ; загружаем в стэк число 0
@REPEAT_AFTER:
    mov     ax, word ptr si[bx]     ; получаем символ
    cmp al, byte ptr '.'            ; проверяем точка ли это
    je      @WASPOINTAFTER  ; точка - идем дальше
    cmp al, '0'         ; если текущий символ не цифра
    jc  @END_S2F_ERR            ; то выход с ошибкой
    cmp     al,'9'
    ja  @END_S2F_ERR
    sub     al, 30h             ; делаем из CHAR - INT
    mov     byte ptr value_s2f, al  ; копируем в память
    fiadd   value_s2f           ; складываем из тем, что есть в стэке
    fdiv        st(0), st(1)            ; делим на 10
    dec     bx                  ; декрементируем указатель
    loop    @REPEAT_AFTER   ; повторяем
@WASPOINTAFTER:
    fxch        st(1)               ; меняем число 10 и остаток местами
    fxch        st(2)               ; меняем целое и 10 местами
    faddp   st(1)               ; складываем число до и после запятой
    fxch        st(1)               ; меняем местами результат и 10
    fistp       value_s2f           ; извлекаем из стэка 10
    jmp     @FULLEND            ; полный конец процедуры
@ENDASINT:
    fdiv        st(0), st(1)            ; делим число на 10, т.к. оно уже больше
    fxch        st(1)               ; меняем местами регистры
    fistp       value_s2f           ; извлекаем из стэка 10
@FULLEND:
    cmp byte ptr [si], '-'      ; проверяем на отрицательность
    jne     @END_S2F            ; число не отрицательное
    fchs                            ; число отрицательное, меняем знак
@END_S2F:
    popa                        ; выгружаем все регистры
    clc                     ;ошибки нет
    ret                         ; возврат из процедуры
 
@END_S2F_ERR:
    popa                        ; выгружаем все регистры
    fistp value_s2f             ;очищаем st0
    stc                 ;ошибка
    ret                         ; возврат из процедуры
STRTOFLOAT  ENDP
P.S. Может кому пригодятся
9
Ушел с форума
Автор FAQ
16338 / 7659 / 1075
Регистрация: 11.11.2010
Сообщений: 13,697
20.10.2011, 11:28 19
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
.686p
.model flat
includelib user32.lib
include windows.inc
extern _imp__MessageBoxA@16:dword
.code
start:  fld x
    call outfloat
    push 0
    push 0
    push offset String
    push 0
    call _imp__MessageBoxA@16
    retn
outfloat proc
    mov edi,offset String
    fldz
    fcomip st,st(1);Проверяем число на знак, и если оно отрицательное,
        jc @of1
    mov al,'-'; то выводим минус 
    stosb
        fchs; и оставляем модуль числа.
@of1:   fld st
    fstcw [control]
    or [control],110000000000b
    fldcw [control];делаем округление к нулю
    frndint                 
    fsub st(1),st           
    fbstp [bcdstr]           
    mov ecx,9    ;в десятом байте информация о знаке числа
b2:     cmp byte ptr [ecx-1+bcdstr],0            
    loopz b2;пропускаем незначащие (нулевые) разряды слева
    mov al,byte ptr [ecx+bcdstr];загружаем первую значащую пару разрядов
        cmp al,9  ;если в старшей тетраде 0 - пропустить старшую тетраду
    ja b4
    add al,30h  ;младшую тетраду переводим в ASCII
    stosb   
        jecxz b1
b4:     movzx ax,byte ptr [ecx+bcdstr];распаковываем остальные разряды числа
    ror ax,4    ;выделяем старшую и младшую тетрады
    shr ah,4
    add ax,3030h;переводим в ASCII-код
    stosw; и сразу выведем
    loop b4
b1: fldz; теперь возьмёмся за дробную часть, для начала проверив её существование.
        fcomip st,st(1)
        jz @of5
    mov al,'.'; Если она всё-таки ненулевая, выведем точку
    stosb
        mov ecx,6
@of4:   push eax
    fimul y; множим дрообную часть на десять
        fld st
        frndint; отделим целую часть
        fsub st(1), st; оставим от произведения лишь дробную часть,
        fistp dword ptr [esp]; сохраним полученную цифру во временной ячейке
    pop eax
        add al,30h
        stosb; и сразу выведем
    fldz
        fcomip st,st(1);если остаток дробной части ненулевой
        loopnz  @of4;если вывели менее шести цифр, продолжим.
@of5:   retn
outfloat endp
.data
String db 50 dup (0)
x dt -70600500043210.92345678
y dd 10
bcdstr dt ?
control dw ?
end start
0
4174 / 1824 / 218
Регистрация: 06.10.2010
Сообщений: 4,111
20.10.2011, 19:25 20
Mikl___
Немного короче на FASM.


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
format PE GUI 4.0
entry start
include 'include\win32ax.inc'
section '' code readable writeable executable import data
library user32,'user32.dll'
import user32,\
       MessageBox,'MessageBoxA'
start: fld    [x]
 call   outfloat
 invoke MessageBox,0,String,0,0
 retn
outfloat:
    mov    edi,String
    ftst
    fstsw  ax
    shr    eax,8
    and    eax,1
    mov    byte[edi],'-'
    add    edi,eax
    fabs
    fld1        ;вычисляем длину целой части числа
    fld   st1
    fyl2x
    fldl2t
    fdivp
    fistp dword[esp-4]
    cmp   dword[esp-4],1
    adc   dword[esp-4],0
    mov   ecx,[esp-4]       ;ecx - длина целой части
    @@:fidiv [y]       ;нормализуем число (приводим к виду 0.xxx)
    loop @b
    mov   ecx,[esp-4]
    @@:fimul  [y]
       fld    st0
       fisttp word[esp-2]      ;сохраняем целую часть (SSE3)
       fisub  word[esp-2]
       mov    al,[esp-2]
       add    al,'0'
       stosb
       ftst
       fstsw  ax
       test   ax,100000000000000b
    loope @b
    mov al,'.'
    stosb
    sub ecx,1
    jc @b
    mov    byte[edi-1],0      ;завершающий ноль
retn
x      dt -3.92345678
y      dw 10
String rb 128
2
20.10.2011, 19:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.10.2011, 19:25
Помогаю со студенческими работами здесь

Разбор в стиле
Помогите сделать красивый стиль для вот этого вывода Вот тут нужно добавить красивый стиль для...

Строка в стиле С
Чем отличается строка в стиле классического С и С++?

ToolBar в стиле XP
Я пока работаю на VB6. Машинка слабовата, да и дистрибутивы меньше получаются. Но охота, чтб...

Алгоритм в стиле с++
Есть txt файл в котором примерно 400 К строк. Нужно пройтись по всем строкам и записать в новый...

Прерывания в стиле С++
Решил побаловаться и попробовать написать чего-нибудь на С++ под stm32. Чисто ради любопытства,...

макропроцессор в стиле с
Реализуйте простой макропроцессор в стиле С, использующий директивы #include и #define. Входной...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru