Программирование на Ассемблере


           

Рассмотрим реализацию первого способа. Для


Рассмотрим реализацию первого способа. Для хранения 32-битного десятичного числа требуется 10 цифр + знак + нулевой завершитель, т.е. 12 символов. Так как строка может занимать не все 12 символов, оставшиеся символы слева должны быть пробелами.
Функция для преобразования числа в строку. Входное данное-32-битное число. Выходное - строка с нулевым завершителем
Функции для преобразования числа при вводе и выводе и соответствующая главная программа представлены ниже:
Ideal
p586
model              flat
extrn ExitProcess:proc
include "win.inc"
dataseg
my       db        '    25', 0
val       dd        ?
codeseg
proc     atoi
public  atoi
arg       value:dword, mystr:dword = p
push     ebp
mov     ebp, esp
push     ebx ecx edx esi
mov     esi, [mystr]
skip      esi
mov     ebx, 1
cmp     [byte ptr esi], '-'
je         short    minus
cmp     [byte ptr esi], '+'
je         short plus
jmp      prod
minus:
inc       esi
neg      ebx
jmp      prod
plus:
inc       esi
prod:
skip      esi
xor       eax, eax;          r=0
mov     ecx, 10
for:
cmp     [byte ptr esi], 0
je         exit
mul      ecx
test       edx, edx
jne       error
mov     dl, [esi]
sub       dl, '0'
add      eax, edx
inc       esi
jmp      for
exit:
mul      ebx
mov     esi, [value]
mov     [esi], eax
xor       eax, eax
jmp      lend
error:
mov     eax, 1
lend:
pop      esi edx ecx ebx
pop      ebp
ret        p
endp atoi
begin:
push     offset my offset val
call      atoi
call      ExitProcess
end     begin
Задание для самостоятельной работы. Составить программу для второго алгоритма и сравнить их по вычислительной сложности.

Содержание  Назад  Вперед





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