Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement