![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 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 |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Объясните, пожалуйста, как работает программа. | 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 |