Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Microsoft (R) Macro Assembler Version 6.14.8444 11/23/11 14:16:11
- .\cw2\cw2.asm Page 1 - 1
- ;Aplikacja korzystajaca z otwartego okna konsoli
- .386
- .MODEL flat, STDCALL
- ;--- stale ---
- ;--- z pliku .\include\windows.inc ---
- =-0000000A STD_INPUT_HANDLE equ -10
- =-0000000B STD_OUTPUT_HANDLE equ -11
- ;--- funkcje API Win32 ---
- ;--- z pliku .\include\user32.inc ---
- CharToOemA PROTO :DWORD,:DWORD
- ;--- z pliku .\include\kernel32.inc ---
- GetStdHandle PROTO :DWORD
- ReadConsoleA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
- WriteConsoleA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
- ExitProcess PROTO :DWORD
- wsprintfA PROTO C :VARARG
- lstrlenA PROTO :DWORD
- ;-----------------------------------------------------
- includelib .\lib\user32.lib
- includelib .\lib\kernel32.lib
- ;-----------------------------------------------------
- 00000000 _DATA SEGMENT
- 00000000 00000000 hout DD ?
- 00000004 00000000 hinp DD ?
- 00000008 41 75 74 6F 72 naglow DB 'Autor aplikacji',0,13,10
- 20 61 70 6C 69
- 6B 61 63 6A 69
- 3A 20 44 61 6E
- 69 65 6C 20 4B
- 6F 70 65 63 00
- 0D 0A
- 00000028 00000020 rozmNag DD $ - naglow
- 0000002C 41 2F 42 2D 43 tab1 DB 'A/B-C-D',0 ;wariant funkcji 24
- 2D 44 00
- ALIGN 4
- 00000034 00000008 rozmT DD $ - tab1 ;ilość znaków w tablicy
- 00000038 00000008 [ tab2 DB 8 dup(?)
- 00
- ]
- 00000040 00000008 [ tab3 DD 8 dup(?)
- 00000000
- ]
- 00000060 0D 0A 00 nowy DB 13,10,0 ;nowy wiersz
- 00000063 00000000 rout DD 0 ;faktyczna ilość wyprowadzonych znaków
- 00000067 00000000 rinp DD 0 ;faktyczna ilość wprowadzonych znaków
- 0000006B 00000080 [ bufor DB 128 dup(?)
- 00
- ]
- 000000EB 00000080 rbuf DD 128
- 000000EF _DATA ENDS
- 00000000 _TEXT SEGMENT
- 00000000 start:
- 00000000
- ;--- wywołanie funkcji GetStdHandle-----------------------------------------
- 00000000 6A F5 push STD_OUTPUT_HANDLE
- 00000002 E8 00000000 E call GetStdHandle ; wywołanie funkcji GetStdHandle
- 00000007 A3 00000000 R mov hout, EAX ; deskryptor wyjściowego bufora konsoli
- 0000000C 6A F6 push STD_INPUT_HANDLE
- 0000000E E8 00000000 E call GetStdHandle ; wywołanie funkcji GetStdHandle
- 00000013 A3 00000004 R mov hinp, EAX ; deskryptor wejściowego bufora konsoli
- ;--- wyświetlenie -----------------------------------------------------------
- 00000018 6A 00 push 0 ; rezerwa, musi być zero
- 0000001A 68 00000063 R push OFFSET rout ; wskaźnik na faktyczną ilość wyprowadzonych znaków
- 0000001F FF 35 00000028 R push rozmNag ; ilość znaków
- 00000025 68 00000008 R push OFFSET naglow ; wskaznik na tekst
- 0000002A FF 35 00000000 R push hout ; deskryptor buforu konsoli
- 00000030 E8 00000000 E call WriteConsoleA ; wywołanie funkcji WriteConsoleA
- ;--- wyświetlenie tablicy-----------------------------------------------------------
- 00000035 6A 00 push 0 ; rezerwa, musi być zero
- 00000037 68 00000063 R push OFFSET rout ; wskaźnik na faktyczną ilość wyprowadzonych znaków
- 0000003C FF 35 00000034 R push rozmT ; ilość znaków
- 00000042 68 0000002C R push OFFSET tab1 ; wskaznik na tekst
- 00000047 FF 35 00000000 R push hout ; deskryptor buforu konsoli
- 0000004D E8 00000000 E call WriteConsoleA ; wywołanie funkcji WriteConsoleA
- ;----------------------------------------------------------------------------
- ;-------------------------------- PRZEPISANIE DO ECX, EAX --------------------------------
- 00000052 8D 1D 0000002C R lea EBX, tab1
- 00000058 8B 0B mov ECX, DWORD PTR [EBX]
- 0000005A 8B 43 04 mov EAX, DWORD PTR [EBX+4]
- 0000005D 91 xchg ECX,EAX
- 0000005E 8D 1D 00000038 R lea EBX, tab2
- 00000064 89 0B mov DWORD PTR [EBX],ECX
- 00000066 89 43 04 mov DWORD PTR [EBX+4],EAX
- ;--- nowa linia------------------------------------------------------------
- 00000069 6A 00 push 0 ; rezerwa, musi być zero
- 0000006B 68 00000063 R push OFFSET rout ; wskaźnik na faktyczną ilość wyprowadzonych znaków
- 00000070 6A 02 push 2 ; ilość znaków
- 00000072 68 00000060 R push OFFSET nowy ; wskaznik na tekst
- 00000077 FF 35 00000000 R push hout ; deskryptor buforu konsoli
- 0000007D E8 00000000 E call WriteConsoleA ; wywołanie funkcji WriteConsoleA
- ;--- wyświetlanie wyniku zadania --------------------------------------------
- 00000082 6A 00 push 0 ; rezerwa, musi być zero
- 00000084 68 00000063 R push OFFSET rout ; wskaźnik na faktyczną ilość wyprowadzonych znaków
- 00000089 6A 08 push 8 ; ilość znaków
- 0000008B 68 00000038 R push OFFSET tab2 ; wskaznik na tekst
- 00000090 FF 35 00000000 R push hout ; deskryptor buforu konsoli
- 00000096 E8 00000000 E call WriteConsoleA ; wywołanie funkcji WriteConsoleA
- ;-----------------------------------------------------------------------------
- ;---------------------------------- PRZEPISANIE PRZEZ STOS -------------------------------
- 0000009B BB 0000002C R mov EBX, OFFSET tab1
- 000000A0 B9 00000040 R mov ECX, OFFSET tab3
- 000000A5 FF 33 push DWORD PTR [EBX]
- 000000A7 FF 73 04 push DWORD PTR [EBX+4]
- 000000AA 8F 01 pop DWORD PTR [ECX]
- 000000AC 8F 41 04 pop DWORD PTR [ECX+4]
- ;--- nowy wiersz -------------------------------------------------------------
- 000000AF 6A 00 push 0 ; rezerwa, musi być zero
- 000000B1 68 00000063 R push OFFSET rout ; wskaźnik na faktyczną ilość wyprowadzonych znaków
- 000000B6 6A 02 push 2 ; ilość znaków
- 000000B8 68 00000060 R push OFFSET nowy ; wskaznik na tekst
- 000000BD FF 35 00000000 R push hout ; deskryptor buforu konsoli
- 000000C3 E8 00000000 E call WriteConsoleA ; wywołanie funkcji WriteConsoleA
- ;--- wyświetlenie wyniku------------------------------------------------------
- 000000C8 6A 00 push 0 ; rezerwa, musi być zero
- 000000CA 68 00000063 R push OFFSET rout ; wskaźnik na faktyczną ilość wyprowadzonych znaków
- 000000CF 6A 08 push 8 ; ilość znaków
- 000000D1 68 00000040 R push OFFSET tab3 ; wskaznik na tekst
- 000000D6 FF 35 00000000 R push hout ; deskryptor buforu konsoli
- 000000DC E8 00000000 E call WriteConsoleA ; wywołanie funkcji WriteConsoleA
- ;---------------------------------------------------------------------------
- ;----------------------------------------- NOTACJA POLSKA ---------------------------------------
- 000000E1 BB 0000002C R mov EBX, OFFSET tab1
- 000000E6 B9 00000038 R mov ECX, OFFSET tab2
- 000000EB 8A 43 05 mov AL,BYTE PTR[EBX+5]
- 000000EE 88 01 mov BYTE PTR[ECX+0],AL
- 000000F0 8A 43 03 mov AL,BYTE PTR[EBX+3]
- 000000F3 88 41 01 mov BYTE PTR[ECX+1],AL
- 000000F6 8A 43 01 mov AL,BYTE PTR[EBX+1]
- 000000F9 88 41 02 mov BYTE PTR[ECX+2],AL
- 000000FC 8A 03 mov AL,BYTE PTR[EBX+0]
- 000000FE 88 41 03 mov BYTE PTR[ECX+3],AL
- 00000101 8A 43 02 mov AL,BYTE PTR[EBX+2]
- 00000104 88 41 04 mov BYTE PTR[ECX+4],AL
- 00000107 8A 43 04 mov AL,BYTE PTR[EBX+4]
- 0000010A 88 41 05 mov BYTE PTR[ECX+5],AL
- 0000010D 8A 43 06 mov AL,BYTE PTR[EBX+6]
- 00000110 88 41 06 mov BYTE PTR[ECX+6],AL
- 00000113 B9 00000038 R mov ECX, OFFSET tab2
- 00000118 C6 41 07 20 mov BYTE PTR [ECX+7],' '
- ;--- nowa linia -------------------------------------------------------------
- 0000011C 6A 00 push 0 ; rezerwa, musi być zero
- 0000011E 68 00000063 R push OFFSET rout ; wskaźnik na faktyczną ilość wyprowadzonych znaków
- 00000123 6A 02 push 2 ; ilość znaków
- 00000125 68 00000060 R push OFFSET nowy ; wskaznik na tekst
- 0000012A FF 35 00000000 R push hout ; deskryptor buforu konsoli
- 00000130 E8 00000000 E call WriteConsoleA ; wywołanie funkcji WriteConsoleA
- ;--- wyświetlenie wyniku-------------------------------------------------------
- 00000135 6A 00 push 0 ; rezerwa, musi być zero
- 00000137 68 00000063 R push OFFSET rout ; wskaźnik na faktyczną ilość wyprowadzonych znaków
- 0000013C 6A 08 push 8 ; ilość znaków
- 0000013E 68 00000038 R push OFFSET tab2 ; wskaznik na tekst
- 00000143 FF 35 00000000 R push hout ; deskryptor buforu konsoli
- 00000149 E8 00000000 E call WriteConsoleA ; wywołanie funkcji WriteConsoleA
- ;-----------------------------------------------------------------------------
- ;--- zakończenie procesu --------------------------------------------------
- 0000014E 6A 00 push 0
- 00000150 E8 00000000 E call ExitProcess ; wywołanie funkcji ExitProcess
- 00000155 00000155 _TEXT ENDS
- END start
- Microsoft (R) Macro Assembler Version 6.14.8444 11/23/11 14:16:11
- .\cw2\cw2.asm Symbols 2 - 1
- Segments and Groups:
- N a m e Size Length Align Combine Class
- FLAT . . . . . . . . . . . . . . GROUP
- _DATA . . . . . . . . . . . . . 32 Bit 000000EF DWord Public 'DATA'
- _TEXT . . . . . . . . . . . . . 32 Bit 00000155 DWord Public 'CODE'
- Procedures, parameters and locals:
- N a m e Type Value Attr
- $$$00001 . . . . . . . . . . . . P Near 00000000 _TEXT Length= 00000155 Private STDCALL
- CharToOemA . . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL
- ExitProcess . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL
- GetStdHandle . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL
- ReadConsoleA . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL
- WriteConsoleA . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL
- lstrlenA . . . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL
- wsprintfA . . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External C
- Symbols:
- N a m e Type Value Attr
- @CodeSize . . . . . . . . . . . Number 00000000h
- @DataSize . . . . . . . . . . . Number 00000000h
- @Interface . . . . . . . . . . . Number 00000003h
- @Model . . . . . . . . . . . . . Number 00000007h
- @code . . . . . . . . . . . . . Text _TEXT
- @data . . . . . . . . . . . . . Text FLAT
- @fardata? . . . . . . . . . . . Text FLAT
- @fardata . . . . . . . . . . . . Text FLAT
- @stack . . . . . . . . . . . . . Text FLAT
- STD_INPUT_HANDLE . . . . . . . . Number -0000000Ah
- STD_OUTPUT_HANDLE . . . . . . . Number -0000000Bh
- bufor . . . . . . . . . . . . . Byte 0000006B _DATA
- hinp . . . . . . . . . . . . . . DWord 00000004 _DATA
- hout . . . . . . . . . . . . . . DWord 00000000 _DATA
- naglow . . . . . . . . . . . . . Byte 00000008 _DATA
- nowy . . . . . . . . . . . . . . Byte 00000060 _DATA
- rbuf . . . . . . . . . . . . . . DWord 000000EB _DATA
- rinp . . . . . . . . . . . . . . DWord 00000067 _DATA
- rout . . . . . . . . . . . . . . DWord 00000063 _DATA
- rozmNag . . . . . . . . . . . . DWord 00000028 _DATA
- rozmT . . . . . . . . . . . . . DWord 00000034 _DATA
- start . . . . . . . . . . . . . L Near 00000000 _TEXT Public STDCALL
- tab1 . . . . . . . . . . . . . . Byte 0000002C _DATA
- tab2 . . . . . . . . . . . . . . Byte 00000038 _DATA
- tab3 . . . . . . . . . . . . . . DWord 00000040 _DATA
- 0 Warnings
- 0 Errors
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement