Advertisement
Sylv3rWolf

cw2

Oct 22nd, 2015
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Microsoft (R) Macro Assembler Version 6.14.8444         11/23/11 14:16:11
  2. .\cw2\cw2.asm                            Page 1 - 1
  3.  
  4.  
  5.                 ;Aplikacja korzystajaca z otwartego okna konsoli
  6.                 .386
  7.                 .MODEL flat, STDCALL
  8.                 ;--- stale ---
  9.                 ;--- z pliku .\include\windows.inc ---
  10.  =-0000000A         STD_INPUT_HANDLE                     equ -10
  11.  =-0000000B         STD_OUTPUT_HANDLE                    equ -11
  12.                 ;--- funkcje API Win32 ---
  13.                 ;--- z pliku  .\include\user32.inc ---
  14.                 CharToOemA PROTO :DWORD,:DWORD
  15.                 ;--- z pliku .\include\kernel32.inc ---
  16.                 GetStdHandle PROTO :DWORD
  17.                 ReadConsoleA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
  18.                 WriteConsoleA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
  19.                 ExitProcess PROTO :DWORD
  20.                 wsprintfA PROTO C :VARARG
  21.                 lstrlenA PROTO :DWORD
  22.                 ;-----------------------------------------------------
  23.                 includelib .\lib\user32.lib
  24.                 includelib .\lib\kernel32.lib
  25.                 ;-----------------------------------------------------
  26.  00000000           _DATA SEGMENT
  27.  00000000 00000000           hout      DD      ?
  28.  00000004 00000000           hinp      DD      ?
  29.  00000008 41 75 74 6F 72         naglow    DB      'Autor aplikacji',0,13,10
  30.        20 61 70 6C 69
  31.        6B 61 63 6A 69
  32.        3A 20 44 61 6E
  33.        69 65 6C 20 4B
  34.        6F 70 65 63 00
  35.        0D 0A
  36.  00000028 00000020           rozmNag   DD    $ - naglow
  37.  0000002C 41 2F 42 2D 43         tab1      DB    'A/B-C-D',0     ;wariant funkcji 24
  38.        2D 44 00
  39.                      ALIGN     4
  40.  00000034 00000008           rozmT     DD    $ - tab1        ;ilość znaków w tablicy
  41.  00000038  00000008 [            tab2      DB    8 dup(?)
  42.         00
  43.        ]
  44.  00000040  00000008 [            tab3      DD    8 dup(?)    
  45.         00000000
  46.        ]
  47.  00000060 0D 0A 00           nowy      DB    13,10,0         ;nowy wiersz
  48.  00000063 00000000           rout      DD      0             ;faktyczna ilość wyprowadzonych znaków
  49.  00000067 00000000           rinp      DD      0             ;faktyczna ilość wprowadzonych znaków
  50.  0000006B  00000080 [            bufor     DB      128 dup(?)
  51.         00
  52.        ]
  53.  000000EB 00000080           rbuf      DD      128
  54.  
  55.  000000EF           _DATA ENDS
  56.  00000000           _TEXT SEGMENT
  57.  00000000           start:
  58.  00000000
  59.                 ;--- wywołanie funkcji GetStdHandle-----------------------------------------
  60.  00000000  6A F5               push    STD_OUTPUT_HANDLE
  61.  00000002  E8 00000000 E           call    GetStdHandle    ; wywołanie funkcji GetStdHandle
  62.  00000007  A3 00000000 R           mov     hout, EAX       ; deskryptor wyjściowego bufora konsoli
  63.  0000000C  6A F6               push    STD_INPUT_HANDLE
  64.  0000000E  E8 00000000 E           call    GetStdHandle    ; wywołanie funkcji GetStdHandle
  65.  00000013  A3 00000004 R           mov     hinp, EAX       ; deskryptor wejściowego bufora konsoli
  66.  
  67.  
  68.                 ;--- wyświetlenie -----------------------------------------------------------
  69.  00000018  6A 00               push    0                      ; rezerwa, musi być zero
  70.  0000001A  68 00000063 R           push    OFFSET rout            ; wskaźnik na faktyczną ilość wyprowadzonych znaków
  71.  0000001F  FF 35 00000028 R        push    rozmNag                ; ilość znaków
  72.  00000025  68 00000008 R           push    OFFSET naglow          ; wskaznik na tekst
  73.  0000002A  FF 35 00000000 R        push    hout                   ; deskryptor buforu konsoli
  74.  00000030  E8 00000000 E           call    WriteConsoleA          ; wywołanie funkcji WriteConsoleA
  75.  
  76.  
  77.                 ;--- wyświetlenie tablicy-----------------------------------------------------------
  78.  00000035  6A 00               push    0                      ; rezerwa, musi być zero
  79.  00000037  68 00000063 R           push    OFFSET rout            ; wskaźnik na faktyczną ilość wyprowadzonych znaków
  80.  0000003C  FF 35 00000034 R        push    rozmT                  ; ilość znaków
  81.  00000042  68 0000002C R           push    OFFSET tab1            ; wskaznik na tekst
  82.  00000047  FF 35 00000000 R        push    hout                   ; deskryptor buforu konsoli
  83.  0000004D  E8 00000000 E           call    WriteConsoleA          ; wywołanie funkcji WriteConsoleA
  84.  
  85.                 ;----------------------------------------------------------------------------
  86.                 ;-------------------------------- PRZEPISANIE DO ECX, EAX --------------------------------
  87.  
  88.  00000052  8D 1D 0000002C R      lea EBX, tab1
  89.  00000058  8B 0B             mov ECX, DWORD PTR [EBX]
  90.  0000005A  8B 43 04          mov EAX, DWORD PTR [EBX+4]
  91.  0000005D  91                xchg ECX,EAX
  92.  0000005E  8D 1D 00000038 R      lea EBX, tab2
  93.  00000064  89 0B             mov DWORD PTR [EBX],ECX
  94.  00000066  89 43 04          mov DWORD PTR [EBX+4],EAX
  95.  
  96.                 ;--- nowa linia------------------------------------------------------------
  97.  
  98.  00000069  6A 00               push    0                      ; rezerwa, musi być zero
  99.  0000006B  68 00000063 R           push    OFFSET rout            ; wskaźnik na faktyczną ilość wyprowadzonych znaków
  100.  00000070  6A 02               push    2                      ; ilość znaków
  101.  00000072  68 00000060 R           push    OFFSET nowy            ; wskaznik na tekst
  102.  00000077  FF 35 00000000 R        push    hout                   ; deskryptor buforu konsoli
  103.  0000007D  E8 00000000 E           call    WriteConsoleA          ; wywołanie funkcji WriteConsoleA
  104.  
  105.                 ;--- wyświetlanie wyniku zadania --------------------------------------------
  106.  
  107.  00000082  6A 00               push    0                      ; rezerwa, musi być zero
  108.  00000084  68 00000063 R           push    OFFSET rout            ; wskaźnik na faktyczną ilość wyprowadzonych znaków
  109.  00000089  6A 08               push    8                      ; ilość znaków
  110.  0000008B  68 00000038 R           push    OFFSET tab2            ; wskaznik na tekst
  111.  00000090  FF 35 00000000 R        push    hout                   ; deskryptor buforu konsoli
  112.  00000096  E8 00000000 E           call    WriteConsoleA          ; wywołanie funkcji WriteConsoleA
  113.  
  114.                 ;-----------------------------------------------------------------------------
  115.                 ;---------------------------------- PRZEPISANIE PRZEZ STOS -------------------------------
  116.  
  117.  0000009B  BB 0000002C R         mov EBX, OFFSET tab1
  118.  000000A0  B9 00000040 R         mov ECX, OFFSET tab3
  119.  000000A5  FF 33             push DWORD PTR [EBX]
  120.  000000A7  FF 73 04          push DWORD PTR [EBX+4]
  121.  000000AA  8F 01             pop DWORD PTR [ECX]
  122.  000000AC  8F 41 04          pop DWORD PTR [ECX+4]
  123.                      
  124.                    
  125.                 ;--- nowy wiersz -------------------------------------------------------------
  126.  
  127.  000000AF  6A 00               push    0                      ; rezerwa, musi być zero
  128.  000000B1  68 00000063 R           push    OFFSET rout            ; wskaźnik na faktyczną ilość wyprowadzonych znaków
  129.  000000B6  6A 02               push    2                      ; ilość znaków
  130.  000000B8  68 00000060 R           push    OFFSET nowy            ; wskaznik na tekst
  131.  000000BD  FF 35 00000000 R        push    hout                   ; deskryptor buforu konsoli
  132.  000000C3  E8 00000000 E           call    WriteConsoleA          ; wywołanie funkcji WriteConsoleA
  133.  
  134.                 ;--- wyświetlenie wyniku------------------------------------------------------
  135.  
  136.  000000C8  6A 00               push      0                    ; rezerwa, musi być zero
  137.  000000CA  68 00000063 R           push    OFFSET rout            ; wskaźnik na faktyczną ilość wyprowadzonych znaków
  138.  000000CF  6A 08               push    8                      ; ilość znaków
  139.  000000D1  68 00000040 R           push    OFFSET tab3            ; wskaznik na tekst
  140.  000000D6  FF 35 00000000 R        push    hout                   ; deskryptor buforu konsoli
  141.  000000DC  E8 00000000 E           call    WriteConsoleA          ; wywołanie funkcji WriteConsoleA
  142.  
  143.                 ;---------------------------------------------------------------------------
  144.                 ;----------------------------------------- NOTACJA POLSKA ---------------------------------------
  145.  
  146.  000000E1  BB 0000002C R          mov EBX, OFFSET tab1
  147.  000000E6  B9 00000038 R          mov ECX, OFFSET tab2
  148.  000000EB  8A 43 05           mov AL,BYTE PTR[EBX+5]
  149.  000000EE  88 01              mov BYTE PTR[ECX+0],AL
  150.  000000F0  8A 43 03           mov AL,BYTE PTR[EBX+3]
  151.  000000F3  88 41 01           mov BYTE PTR[ECX+1],AL
  152.  000000F6  8A 43 01           mov AL,BYTE PTR[EBX+1]
  153.  000000F9  88 41 02           mov BYTE PTR[ECX+2],AL
  154.  000000FC  8A 03              mov AL,BYTE PTR[EBX+0]
  155.  000000FE  88 41 03           mov BYTE PTR[ECX+3],AL
  156.  00000101  8A 43 02           mov AL,BYTE PTR[EBX+2]
  157.  00000104  88 41 04           mov BYTE PTR[ECX+4],AL
  158.  00000107  8A 43 04           mov AL,BYTE PTR[EBX+4]
  159.  0000010A  88 41 05           mov BYTE PTR[ECX+5],AL
  160.  0000010D  8A 43 06           mov AL,BYTE PTR[EBX+6]
  161.  00000110  88 41 06           mov BYTE PTR[ECX+6],AL
  162.  00000113  B9 00000038 R          mov ECX, OFFSET tab2
  163.  00000118  C6 41 07 20            mov BYTE PTR [ECX+7],' '
  164.                                
  165.                 ;---  nowa linia  -------------------------------------------------------------
  166.  
  167.  0000011C  6A 00               push    0                      ; rezerwa, musi być zero
  168.  0000011E  68 00000063 R           push    OFFSET rout            ; wskaźnik na faktyczną ilość wyprowadzonych znaków
  169.  00000123  6A 02               push    2                      ; ilość znaków
  170.  00000125  68 00000060 R           push    OFFSET nowy            ; wskaznik na tekst
  171.  0000012A  FF 35 00000000 R        push    hout                   ; deskryptor buforu konsoli
  172.  00000130  E8 00000000 E           call    WriteConsoleA          ; wywołanie funkcji WriteConsoleA
  173.  
  174.                 ;--- wyświetlenie wyniku-------------------------------------------------------
  175.  
  176.  00000135  6A 00               push    0                      ; rezerwa, musi być zero
  177.  00000137  68 00000063 R           push    OFFSET rout            ; wskaźnik na faktyczną ilość wyprowadzonych znaków
  178.  0000013C  6A 08               push    8                      ; ilość znaków
  179.  0000013E  68 00000038 R           push    OFFSET tab2            ; wskaznik na tekst
  180.  00000143  FF 35 00000000 R        push    hout                   ; deskryptor buforu konsoli
  181.  00000149  E8 00000000 E           call    WriteConsoleA          ; wywołanie funkcji WriteConsoleA
  182.  
  183.  
  184.  
  185.                 ;-----------------------------------------------------------------------------
  186.  
  187.  
  188.  
  189.  
  190.                 ;--- zakończenie procesu --------------------------------------------------
  191.  0000014E  6A 00               push    0
  192.  00000150  E8 00000000 E           call    ExitProcess            ; wywołanie funkcji ExitProcess
  193.  
  194.  00000155 00000155      _TEXT   ENDS
  195.                 END start
  196. Microsoft (R) Macro Assembler Version 6.14.8444            11/23/11 14:16:11
  197. .\cw2\cw2.asm                            Symbols 2 - 1
  198.  
  199.  
  200.  
  201.  
  202. Segments and Groups:
  203.  
  204.                 N a m e                 Size     Length   Align   Combine Class
  205.  
  206. FLAT . . . . . . . . . . . . . .    GROUP
  207. _DATA  . . . . . . . . . . . . .    32 Bit   000000EF DWord   Public  'DATA'   
  208. _TEXT  . . . . . . . . . . . . .    32 Bit   00000155 DWord   Public  'CODE'   
  209.  
  210.  
  211. Procedures,  parameters and locals:
  212.  
  213.                 N a m e                 Type     Value    Attr
  214.  
  215. $$$00001 . . . . . . . . . . . .    P Near   00000000 _TEXT Length= 00000155 Private STDCALL
  216. CharToOemA . . . . . . . . . . .    P Near   00000000 FLAT  Length= 00000000 External STDCALL
  217. ExitProcess  . . . . . . . . . .    P Near   00000000 FLAT  Length= 00000000 External STDCALL
  218. GetStdHandle . . . . . . . . . .    P Near   00000000 FLAT  Length= 00000000 External STDCALL
  219. ReadConsoleA . . . . . . . . . .    P Near   00000000 FLAT  Length= 00000000 External STDCALL
  220. WriteConsoleA  . . . . . . . . .    P Near   00000000 FLAT  Length= 00000000 External STDCALL
  221. lstrlenA . . . . . . . . . . . .    P Near   00000000 FLAT  Length= 00000000 External STDCALL
  222. wsprintfA  . . . . . . . . . . .    P Near   00000000 FLAT  Length= 00000000 External C
  223.  
  224.  
  225. Symbols:
  226.  
  227.                 N a m e                 Type     Value    Attr
  228.  
  229. @CodeSize  . . . . . . . . . . .    Number   00000000h  
  230. @DataSize  . . . . . . . . . . .    Number   00000000h  
  231. @Interface . . . . . . . . . . .    Number   00000003h  
  232. @Model . . . . . . . . . . . . .    Number   00000007h  
  233. @code  . . . . . . . . . . . . .    Text     _TEXT
  234. @data  . . . . . . . . . . . . .    Text     FLAT
  235. @fardata?  . . . . . . . . . . .    Text     FLAT
  236. @fardata . . . . . . . . . . . .    Text     FLAT
  237. @stack . . . . . . . . . . . . .    Text     FLAT
  238. STD_INPUT_HANDLE . . . . . . . .    Number   -0000000Ah  
  239. STD_OUTPUT_HANDLE  . . . . . . .    Number   -0000000Bh  
  240. bufor  . . . . . . . . . . . . .    Byte     0000006B _DATA
  241. hinp . . . . . . . . . . . . . .    DWord    00000004 _DATA
  242. hout . . . . . . . . . . . . . .    DWord    00000000 _DATA
  243. naglow . . . . . . . . . . . . .    Byte     00000008 _DATA
  244. nowy . . . . . . . . . . . . . .    Byte     00000060 _DATA
  245. rbuf . . . . . . . . . . . . . .    DWord    000000EB _DATA
  246. rinp . . . . . . . . . . . . . .    DWord    00000067 _DATA
  247. rout . . . . . . . . . . . . . .    DWord    00000063 _DATA
  248. rozmNag  . . . . . . . . . . . .    DWord    00000028 _DATA
  249. rozmT  . . . . . . . . . . . . .    DWord    00000034 _DATA
  250. start  . . . . . . . . . . . . .    L Near   00000000 _TEXT Public STDCALL
  251. tab1 . . . . . . . . . . . . . .    Byte     0000002C _DATA
  252. tab2 . . . . . . . . . . . . . .    Byte     00000038 _DATA
  253. tab3 . . . . . . . . . . . . . .    DWord    00000040 _DATA
  254.  
  255.        0 Warnings
  256.        0 Errors
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement