Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2019, 11:39   #1
Flow75
Новичок
Джуниор
 
Регистрация: 17.11.2019
Сообщений: 2
По умолчанию Объясните как работает программа, пожалуйста

global _start
section .bss
a1 resb 255
a2 resb 255
section .data
n dd 0
m dd 0
el dd 0xA
of_msg: db "Overflow",0xA,0x0
section .text
_start:

mov eax,3
mov ebx,0
mov edx,255
mov ecx,a1
int 0x80
mov eax,3
mov ebx,0
mov ecx,a2
mov edx,255
int 0x80

xor esi,esi
mov ecx,10
mov esi,a2
xor eax,eax
next_digit2:
movzx edx,byte[esi]
inc esi
cmp edx,'0'
jl p2
cmp edx,'9'
jg p2
sub edx,'0'
mov ebx,eax
mov ecx,0

ForMultiplyTN2:
add eax,ebx
inc ecx
cmp ecx,9
jl ForMultiplyTN2
add eax,edx
jo of_msg_f
inc edi
jmp next_digit2
p2:

mov [m],eax
cmp eax,1
jne stry
mov eax,a1
call sprint
call quit

stry:
cmp eax,0
jne prg
mov eax,1
add eax,30h
mov [n],eax
mov eax,n
call sprintLF
call quit

prg:
mov edi,0
mov esi,a1
xor eax,eax
next_digit1:
movzx edx,byte[esi]
inc esi
cmp edx,'0'
jl p1
cmp edx,'9'
jg p1
sub edx,'0'
mov ebx,eax
mov ecx,0

ForMultiplyTN1:
add eax,ebx
inc ecx
cmp ecx,9
jl ForMultiplyTN1
add eax,edx
jo of_msg_f
inc edi
jmp next_digit1

p1:
cmp edi,255
jg of_msg_f ;>
xor edi,edi
mov [n],eax

mov edi,1
mov eax,[n]
mov ebx,[n]
loop1:
cmp edi,[m]
jge endl3
mov esi,1
loop2:
cmp esi,[n]
jge endl2
add eax,ebx
jo of_msg_f
inc esi
jmp loop2
endl2:
mov ebx,eax
inc edi
jmp loop1
endl3:
jmp greatpr

of_msg_f:
mov eax,of_msg
call sprint
call quit
greatpr:
call printLNum
endl1:
mov eax,el
call sprint
call quit
slen:
push ebx
mov ebx, eax
nextchar:
cmp byte [eax], 0
jz finished
inc eax
jmp nextchar
finished:
sub eax,ebx
pop ebx
ret
sprint:
push edx
push ecx
push ebx
push eax
call slen
mov edx,eax
pop eax
mov ecx,eax
mov ebx,1
mov eax,4
int 80h
pop ebx
pop ecx
pop edx
ret
sprintLF:
call sprint
push eax
mov eax,0Ah
push eax
mov eax,esp
call sprint
pop eax
pop eax
ret
printLNum:
push eax
push ebx
push ecx
push edx
push esi
push edi
cmp eax,0
jg printLNumNZ
mov eax,zero
call sprint
jmp endPrintLNumWriting
printLNumNZ:
mov edi,0
printLNumPrep:
cmp eax,1
jl endPrintLNumPrep
mov edx,0
mov ecx,10
div ecx
push edx
inc edi
jmp printLNumPrep
endPrintLNumPrep:
mov ebx,1
printLNumWriting:
cmp edi,0
je endPrintLNumWriting
pop eax
add eax,30h
mov [n],eax
mov eax,n
call sprint
dec edi
jmp printLNumWriting
endPrintLNumWriting:
pop edi
pop esi
pop edx
pop ecx
pop ebx
pop eax
ret
multiplyTN:
push ecx
push edx
dec ebx
mov ecx,0
mov edx,eax
_ForMultiplyTN:
add eax,edx
inc ecx
cmp ecx,ebx
jl _ForMultiplyTN
pop edx
pop ecx
ret
quit:
mov ebx, 0
mov eax, 1
int 80h
ret
_divideTN:
push ecx
xor ecx,ecx
_ForDivideTN:
cmp eax,ebx
jl _EndForDivideTN
inc ecx
sub eax,ebx
jmp _ForDivideTN
_EndForDivideTN:
mov ebx,eax
mov eax,ecx
pop ecx
ret
_printSymb:
push eax
push ebx
push ecx
push edx
mov ecx,eax
mov eax,4
mov ebx,1
mov edx,4
int 0x80
pop edx
pop ecx
pop ebx
pop eax
ret
Flow75 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объясните, пожалуйста, как работает программа. shok_king_ Общие вопросы по Java, Java SE, Kotlin 1 29.10.2017 21:16
объясните как работает программа Aleksey1706 Паскаль, Turbo Pascal, PascalABC.NET 0 12.05.2016 18:45
Объясните пожалуйста как работает код Maja Помощь студентам 1 29.11.2015 13:50
Объясните, как работает программа Alexandr- Помощь студентам 0 25.05.2013 05:02
объясните как работает программа vitaliy089 Помощь студентам 0 15.05.2012 21:35