.386 .model flat, stdcall option casemap:none include conversion.inc .code start: call Main invoke ExitProcess,0 Main proc LOCAL Buffer[128]:BYTE invoke AllocConsole invoke SetConsoleTitle, TEXTOEM("Îðãàí³çàö³ÿ îïåðàö³é ââîäó ³ âèâîäó") invoke ClearScreen xor eax, eax lea esi,Buffer invoke InputDecimal,TEXTOEM("\n×èñëî â äåñÿòêîâ³é ñèñòåì³ ÷èñëåííÿ A = "),esi,12 ;chislo 1 call Proverka mov ebx, eax ;!!!!!!!!!!!!! moya jalkaya vstavka @@:lodsb .if (al==0Ah)||(al==0Dh) jmp @F .elseif (al=='0')||(al=='1')||(al=='2')||(al=='3')||(al=='4')||(al=='5')||\ (al=='6')||(al=='7')||(al=='8')||(al=='9') jmp @B xor ebx,ebx .endif @@: ;!!!!!!!!!!! invoke InputDecimal,TEXTOEM("×èñëî â äåñÿòêîâ³é ñèñòåì³ ÷èñëåííÿ B = "),esi,11 ;chislo2 call Proverka mul ebx mov ebx, eax invoke StdOut, TEXTOEM("\nA * B äîð³âíþº");rezultat invoke StdOut, TEXTOEM("\n äåñÿòêîâ³é ñèñòåì³ ÷èñëåííÿ:\t\t") mov edi,esi mov eax,ebx call uBinToDecASCII invoke StdOut,edi invoke StdOut,TEXTOEM("\n\nÍàòèñí³òü Enter äëÿ çàâåðøåííÿ...") invoke StdIn, addr Buffer, lengthof Buffer ret Main endp uBinToDecASCII proc uses esi edi ebx ; Âõ³ä: EAX - ÷èñëî, EDI - àäðåñà áóôåðó íå ìåíøå í³æ 10 áàéò mov esi,edi mov ebx,10 @@: xor edx,edx div ebx or dl,30h mov byte ptr [esi],dl inc esi or eax,eax jnz @B mov byte ptr [esi],0 @@: dec esi mov al,byte ptr [esi] xchg byte ptr [edi],al mov byte ptr [esi],al inc edi cmp edi,esi jb @B ret uBinToDecASCII endp uDecASCIIToBin proc uses esi ebx ; Âõ³ä: ESI - àäðåñà ASCIIZ-ðÿäêà ; Âèõ³ä: EAX - ÷èñëî xor ebx,ebx @@: lodsb or al,al jz @F and eax,0Fh lea ebx, [ebx+ebx*4] lea ebx, [eax+ebx*2] jmp @B @@: mov eax,ebx ret uDecASCIIToBin endp InputDecimal proc uses esi edi __in lpMessage:LPCSTR,\ __inout lpBuffer:LPSTR,\ __in BufferLength:DWORD invoke StdOut, lpMessage mov edi,lpBuffer invoke StdIn,edi,BufferLength mov al,0Dh mov ecx,BufferLength repne scasb mov word ptr [edi-1],0 mov esi,lpBuffer call uDecASCIIToBin ret InputDecimal endp Proverka proc uses edi esi ebx mov edi,esi call uBinToDecASCII mov ebx,eax mov esi,edi @@: lodsb .if (al==0Ah)||(al==0Dh) jmp @F .else sub byte ptr [esi],30h cmp byte ptr [esi],9h jbe @B xor ebx,ebx .endif @@: mov eax,ebx call uDecASCIIToBin ret Proverka endp end start