Difference between revisions of "CSC231 Homwork 2 Solution 2010"

From dftwiki3
Jump to: navigation, search
(Mystery Program)
(Mystery Program)
Line 7: Line 7:
  
 
<code><pre>
 
<code><pre>
+
     1                                  ;;; hw2c.asm
     1                                  ;;; program_name.asm
+
     2                                  ;;; Alec Goebel
     2                                  ;;; your name
 
 
     3                                  ;;;  
 
     3                                  ;;;  
     4                                  ;;; a description of the program
+
     4                                  ;;; reverse engineered from provided hex dump. 
     5                                  ;;;
+
     5                                  ;;; Prints "practice makes perfect...but nobody's perfect...so why practice?\n\n"
     6                                  ;;; to assemble and run:
+
     6                                 ;;;
     7                                 ;;;
+
    7                                 ;;; to assemble:
     8                                 ;;;    nasm -f elf -F  stabs program.asm
+
     8                                 ;;;
    9                                 ;;;    ld -melf_i386 -o program program.o
+
     9                                 ;;;    nasm -f elf -F  stabs hw2c.asm
     10                                 ;;;    ./program
+
    10                                 ;;;    ld -o program hw2c.o
     11                                 ;;; -------------------------------------------------------------------
+
     11                                  ;;;
    12                                 
+
    12                                  ;;; to run
    13                                  ;%include files here...
+
    13                                 ;;;    $ ./hw2c
    14                                 
+
    14                                  ;;;    practice makes perfect...but nobody's perfect...so why practice?
    15                                  EXIT    equ            1
+
    15                                  ;;;   
    16                                  WRITE  equ            4
+
    16                                  ;;;    $
    17                                  STDOUT  equ            1
+
     17                                 ;;; -------------------------------------------------------------------
 
     18                                   
 
     18                                   
     19                                       ;; ------------------------------------------------------------
+
     19                                 EXIT    equ            1
     20                                 ;; data areas
+
     20                                 WRITE  equ            4
     21                                 ;; ------------------------------------------------------------
+
     21                                 STDOUT  equ            1
 
     22                                   
 
     22                                   
     23                                 section .data
+
     23                                       ;; ------------------------------------------------------------
     24 00000000 206D616B657320          m2 db " makes "
+
     24                                 ;; data areas
     25                                 M2LEN equ $-m2
+
     25                                 ;; ------------------------------------------------------------
     26 00000007 706572666563742E2E-    m3 db "perfect..."
+
     26                                  
     27 00000010 2E               
+
     27                                 section .data
     28                                  M3LEN equ $-m3
+
     28                                   
     29 00000011 7072616374696365        m1 db "practice"
+
     29 00000000 206D616B657320          makes db " makes "
     30                                 M1LEN equ $-m1
+
     30 00000007 706572666563742E2E-     prct db "perfect...practice"
     31 00000019 627574206E6F626F64-     m4 db "but nobody's "
+
     31 00000010 2E7072616374696365
     32 00000022 79277320         
+
    32 00000019 627574206E6F626F64-     nbdy db "but nobody's so why "
    33                                  M4LEN equ $-m4
+
     33 00000022 79277320736F207768-
     34 00000026 736F2077687920          m5 db "so why "
+
     34 0000002B 7920             
     35                                 M5LEN equ $-m5
+
     35 0000002D 3F0A0A                 qst db "?", 10, 10
    36 0000002D 3F0A0A                 m6 db "?",0x0a,0x0a
+
    36                                 
     37                                 M6LEN equ $-m6
+
     37                                  
     38                                 
+
     38                                  ;; ------------------------------------------------------------
     39                                  
+
     39                                 ;; code area
 
     40                                  ;; ------------------------------------------------------------
 
     40                                  ;; ------------------------------------------------------------
     41                                 ;; code area
+
     41                                  
     42                                  ;; ------------------------------------------------------------
+
     42                                  section .text
     43                                  
+
     43                                 global _start
     44                                 section .text
+
     44                                  
     45                                 global _start
+
     45                                 _start:
     46                                  
+
     46                                
     47                                 _start:
+
     47                                 ;; write 'practice' on STDOUT
     48 00000000 B804000000              mov eax, WRITE
+
     48 00000000 B804000000              mov eax,WRITE
     49 00000005 BB01000000              mov ebx, STDOUT
+
     49 00000005 BB01000000              mov ebx,STDOUT
     50 0000000A B9[11000000]            mov ecx, m1 ; practice
+
     50 0000000A B9[11000000]            mov ecx,prct+10
     51 0000000F BA08000000              mov edx, M1LEN
+
     51 0000000F BA08000000              mov edx,8
     52 00000014 CD80                    int 0x80
+
     52 00000014 CD80                    int 0x80
     53                                
+
     53                                  
     54 00000016 B8FFFFFFFF              mov eax, -1
+
     54                                 ;; pointless instruction
     55 0000001B B804000000              mov eax, WRITE
+
    55 00000016 B8FFFFFFFF              mov eax,0xffffffff
     56 00000020 BB01000000              mov ebx, STDOUT
+
    56                                 
     57 00000025 B9[07000000]            mov ecx, m3
+
    57                                  ;; write ' makes ' on STDOUT
     58 0000002A B9[00000000]            mov ecx, m2
+
     58 0000001B B804000000              mov eax,WRITE
     59 0000002F BA07000000              mov edx, M2LEN
+
     59 00000020 BB01000000              mov ebx,STDOUT
     60 00000034 CD80                    int 0x80
+
     60 00000025 B9[07000000]            mov ecx,prct  ;; pointless
     61                                 
+
     61 0000002A B9[00000000]            mov ecx,makes
     62 00000036 BA[11000000]            mov edx, m1
+
     62 0000002F BA07000000              mov edx,7
     63 0000003B B801000000              mov eax, STDOUT
+
     63 00000034 CD80                    int 0x80
     64 00000040 B804000000              mov eax, WRITE
+
     64                                 
     65 00000045 BB01000000              mov ebx, STDOUT
+
    65                                  ;; write 'perfect...' on STDOUT
     66 0000004A B9[07000000]            mov ecx, m3
+
     66 00000036 BA[11000000]            mov edx,prct+10  ;; pointless
     67 0000004F BA0A000000              mov edx, M3LEN
+
     67 0000003B B801000000              mov eax,1     ;; pointless
     68 00000054 CD80                    int 0x80
+
     68 00000040 B804000000              mov eax,WRITE
     69                                
+
     69 00000045 BB01000000              mov ebx,STDOUT
     70 00000056 B804000000              mov eax, WRITE
+
     70 0000004A B9[07000000]            mov ecx,prct
     71 0000005B BB01000000              mov ebx, STDOUT
+
     71 0000004F BA0A000000              mov edx,10
     72 00000060 B9[19000000]            mov ecx, m4
+
     72 00000054 CD80                    int 0x80
     73 00000065 BA0D000000              mov edx, M4LEN
+
     73                                 
     74 0000006A CD80                    int 0x80
+
    74                                 ;; write "but nobody's " on STDOUT
     75                                
+
     75 00000056 B804000000              mov eax,WRITE
     76 0000006C B804000000              mov eax, WRITE
+
     76 0000005B BB01000000              mov ebx,STDOUT
     77 00000071 BB01000000              mov ebx, STDOUT
+
     77 00000060 B9[19000000]            mov ecx,nbdy
     78 00000076 B9[06000000]            mov ecx, m3-1
+
     78 00000065 BA0D000000              mov edx,13
     79 0000007B BA0A000000              mov edx, M3LEN
+
     79 0000006A CD80                    int 0x80
     80 00000080 41                      inc ecx
+
     80                                 
     81 00000081 CD80                    int 0x80
+
    81                                 ;; write "perfect..." to STDOUT
     82                                
+
     82 0000006C B804000000              mov eax,WRITE
     83 00000083 B804000000              mov eax, WRITE
+
     83 00000071 BB01000000              mov ebx,STDOUT
     84 00000088 BB01000000              mov ebx, STDOUT
+
     84 00000076 B9[06000000]            mov ecx,prct-1
     85 0000008D B9[24000000]            mov ecx, m5-2
+
     85 0000007B BA0A000000              mov edx,10
     86 00000092 41                      inc ecx
+
     86 00000080 41                      inc ecx
     87 00000093 BA07000000              mov edx, M5LEN
+
     87 00000081 CD80                    int 0x80
     88 00000098 41                      inc ecx
+
     88                                 
     89 00000099 CD80                    int 0x80
+
    89                                 ;; write "so why " to STDOUT
     90                                
+
     90 00000083 B804000000              mov eax,WRITE
     91 0000009B B804000000              mov eax, WRITE
+
     91 00000088 BB01000000              mov ebx,STDOUT
    92 000000A0 BB01000000              mov ebx, STDOUT
+
     92 0000008D B9[24000000]            mov ecx,nbdy+11
    93 000000A5 B9[11000000]            mov ecx, m1
+
     93 00000092 41                      inc ecx
    94 000000AA BA08000000              mov edx, M1LEN
+
     94 00000093 BA07000000              mov edx,7
    95 000000AF CD80                    int 0x80
+
     95 00000098 41                      inc ecx
    96                                
+
     96 00000099 CD80                    int 0x80
    97 000000B1 B804000000              mov eax, WRITE
+
     97                                
    98 000000B6 BB01000000              mov ebx, STDOUT
+
     98                                  ;; write "practice" to STDOUT
    99 000000BB B9[2D000000]            mov ecx, m6
+
    99 0000009B B804000000              mov eax,WRITE
   100 000000C0 BA03000000              mov edx, M6LEN
+
  100 000000A0 BB01000000              mov ebx,STDOUT
   101 000000C5 CD80                    int 0x80
+
  101 000000A5 B9[11000000]            mov ecx,prct+10
   102                                
+
  102 000000AA BA08000000              mov edx,8
   103                                 
+
  103 000000AF CD80                    int 0x80
  104                                 
+
  104                                 
  105                                          ;; (add your code here!!!!)
+
  105                                 ;; write "?\n\n"
  106                                 
+
  106 000000B1 B804000000              mov eax,WRITE
  107                                 
+
  107 000000B6 BB01000000              mov ebx,STDOUT
  108                                 
+
  108 000000BB B9[2D000000]            mov ecx,qst
  109                                 
+
   109 000000C0 BA03000000              mov edx,3
  110                                 ;; exit()
+
   110 000000C5 CD80                    int 0x80
   111                                 
+
   111                                
  112 000000C7 B801000000              mov eax,EXIT
+
   112                                 ;; exit()
   113 000000CC BB00000000              mov ebx,0
+
   113 000000C7 B801000000              mov eax,EXIT
   114 000000D1 CD80                    int 0x80 ; final system call
+
   114 000000CC BB00000000              mov ebx,0
  115     
+
   115 000000D1 CD80                    int 0x80 ; final system call
 +
 
 
</pre></code>
 
</pre></code>
  

Revision as of 16:51, 6 October 2010

--D. Thiebaut 21:35, 6 October 2010 (UTC)


Mystery Program

     1                                  ;;; hw2c.asm
     2                                  ;;; Alec Goebel
     3                                  ;;; 
     4                                  ;;; reverse engineered from provided hex dump.  
     5                                  ;;; Prints "practice makes perfect...but nobody's perfect...so why practice?\n\n"
     6                                  ;;;
     7                                  ;;; to assemble:
     8                                  ;;;
     9                                  ;;;     nasm -f elf -F  stabs hw2c.asm
    10                                  ;;;     ld -o program hw2c.o
    11                                  ;;;
    12                                  ;;; to run
    13                                  ;;;     $ ./hw2c
    14                                  ;;;     practice makes perfect...but nobody's perfect...so why practice?
    15                                  ;;;     
    16                                  ;;;     $
    17                                  ;;; -------------------------------------------------------------------
    18                                   
    19                                  EXIT    equ             1
    20                                  WRITE   equ             4
    21                                  STDOUT  equ             1
    22                                   
    23                                        	;; ------------------------------------------------------------
    24                                  	;; data areas
    25                                  	;; ------------------------------------------------------------
    26                                   
    27                                  	section	.data
    28                                  
    29 00000000 206D616B657320          	makes	db	" makes "
    30 00000007 706572666563742E2E-     	prct	db	"perfect...practice"
    31 00000010 2E7072616374696365 
    32 00000019 627574206E6F626F64-     	nbdy	db	"but nobody's so why "
    33 00000022 79277320736F207768-
    34 0000002B 7920               
    35 0000002D 3F0A0A                  	qst	db	"?", 10, 10
    36                                   
    37                                   
    38                                  	;; ------------------------------------------------------------
    39                                  	;; code area
    40                                  	;; ------------------------------------------------------------
    41                                   
    42                                  	section	.text
    43                                  	global	_start
    44                                   
    45                                  _start:
    46                                  
    47                                  	;; write 'practice' on STDOUT
    48 00000000 B804000000              	mov	eax,WRITE
    49 00000005 BB01000000              	mov	ebx,STDOUT
    50 0000000A B9[11000000]            	mov	ecx,prct+10
    51 0000000F BA08000000              	mov	edx,8
    52 00000014 CD80                    	int 	0x80
    53                                   
    54                                  	;; pointless instruction
    55 00000016 B8FFFFFFFF              	mov	eax,0xffffffff 
    56                                  
    57                                  	;; write ' makes ' on STDOUT
    58 0000001B B804000000              	mov	eax,WRITE
    59 00000020 BB01000000              	mov	ebx,STDOUT
    60 00000025 B9[07000000]            	mov	ecx,prct   ;; pointless
    61 0000002A B9[00000000]            	mov	ecx,makes
    62 0000002F BA07000000              	mov	edx,7
    63 00000034 CD80                    	int	0x80
    64                                   
    65                                  	;; write 'perfect...' on STDOUT
    66 00000036 BA[11000000]            	mov	edx,prct+10  ;; pointless
    67 0000003B B801000000              	mov	eax,1	     ;; pointless
    68 00000040 B804000000              	mov	eax,WRITE
    69 00000045 BB01000000              	mov	ebx,STDOUT
    70 0000004A B9[07000000]            	mov	ecx,prct
    71 0000004F BA0A000000              	mov	edx,10
    72 00000054 CD80                    	int 	0x80
    73                                  
    74                                  	;; write "but nobody's " on STDOUT
    75 00000056 B804000000              	mov	eax,WRITE
    76 0000005B BB01000000              	mov	ebx,STDOUT
    77 00000060 B9[19000000]            	mov	ecx,nbdy
    78 00000065 BA0D000000              	mov	edx,13
    79 0000006A CD80                    	int	0x80
    80                                  
    81                                  	;; write "perfect..." to STDOUT
    82 0000006C B804000000              	mov	eax,WRITE
    83 00000071 BB01000000              	mov	ebx,STDOUT
    84 00000076 B9[06000000]            	mov	ecx,prct-1
    85 0000007B BA0A000000              	mov	edx,10
    86 00000080 41                      	inc	ecx
    87 00000081 CD80                    	int	0x80
    88                                  
    89                                  	;; write "so why " to STDOUT
    90 00000083 B804000000              	mov	eax,WRITE
    91 00000088 BB01000000              	mov	ebx,STDOUT
    92 0000008D B9[24000000]            	mov	ecx,nbdy+11
    93 00000092 41                      	inc	ecx
    94 00000093 BA07000000              	mov	edx,7
    95 00000098 41                      	inc	ecx
    96 00000099 CD80                    	int	0x80
    97                                  	
    98                                  	;; write "practice" to STDOUT
    99 0000009B B804000000              	mov	eax,WRITE
   100 000000A0 BB01000000              	mov	ebx,STDOUT
   101 000000A5 B9[11000000]            	mov	ecx,prct+10
   102 000000AA BA08000000              	mov	edx,8
   103 000000AF CD80                    	int	0x80
   104                                  
   105                                  	;; write "?\n\n"
   106 000000B1 B804000000              	mov	eax,WRITE
   107 000000B6 BB01000000              	mov	ebx,STDOUT
   108 000000BB B9[2D000000]            	mov	ecx,qst
   109 000000C0 BA03000000              	mov	edx,3
   110 000000C5 CD80                    	int	0x80
   111                                  	
   112                                  	;; exit()
   113 000000C7 B801000000              	mov	eax,EXIT
   114 000000CC BB00000000              	mov	ebx,0
   115 000000D1 CD80                    	int	0x80		; final system call