Difference between revisions of "CSC231 Homework 2 2012"
(→Problem #1) |
(→Problem #2) |
||
Line 141: | Line 141: | ||
=Problem #2= | =Problem #2= | ||
+ | |||
+ | Write an assembly language program that outputs this: | ||
+ | |||
+ | [231a@beowulf ~/temp]$ ./hw2b | ||
+ | ********************* | ||
+ | ********************* | ||
+ | ********************* | ||
+ | ********************* | ||
+ | ********************* | ||
+ | ********************* | ||
+ | [231a@beowulf ~/temp]$ | ||
+ | |||
+ | The output consists of 6 lines of stars. | ||
+ | |||
+ | ==Requirements== | ||
+ | Make the size of your executable as small as possible! In other words, figure out a way to make the strings in your data section small, and the number of time you print small as well, so that the total size of your executable is as small as possible. | ||
+ | |||
+ | You must use these two commands to create your executable: | ||
+ | |||
+ | nasm -f elf -F stabs hw2b.asm | ||
+ | ld -melf_i386 -o hw2b hw2b.o | ||
+ | |||
+ | ==Submission== | ||
+ | |||
+ | rsubmit hw2 hw2b.asm | ||
=Problem #3= | =Problem #3= |
Revision as of 16:52, 12 September 2012
--D. Thiebaut 15:44, 12 September 2012 (EDT)
This assignment can be done in pair. If you elect to work with somebody else in the class, make sure the work is done only when the two people working on the homework are together. The homework is due Wednesday 9/19/12 evening at 11:59 p.m. + 1 minute.
Problem #1
Recreate the original program whose hexdump is shown below. Make sure your program is written such that once it's assembled and linked, its executable "hexdumps" the same output as the one shown below.
hexdump -C hw2
00000000 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 |.ELF............|
00000010 02 00 03 00 01 00 00 00 80 80 04 08 34 00 00 00 |............4...|
00000020 60 03 00 00 00 00 00 00 34 00 20 00 02 00 28 00 |`.......4. ...(.|
00000030 08 00 05 00 01 00 00 00 00 00 00 00 00 80 04 08 |................|
00000040 00 80 04 08 10 01 00 00 10 01 00 00 05 00 00 00 |................|
00000050 00 10 00 00 01 00 00 00 10 01 00 00 10 91 04 08 |................|
00000060 10 91 04 08 5e 00 00 00 5e 00 00 00 06 00 00 00 |....^...^.......|
00000070 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000080 b8 04 00 00 00 bb 01 00 00 00 b9 10 91 04 08 ba |................|
00000090 02 00 00 00 cd 80 b8 04 00 00 00 bb 01 00 00 00 |................|
000000a0 b9 48 91 04 08 ba 05 00 00 00 cd 80 b8 04 00 00 |.H..............|
000000b0 00 bb 01 00 00 00 b9 18 91 04 08 ba 02 00 00 00 |................|
000000c0 cd 80 b8 04 00 00 00 bb 01 00 00 00 b9 1e 91 04 |................|
000000d0 08 ba 01 00 00 00 cd 80 b8 04 00 00 00 bb 01 00 |................|
000000e0 00 00 b9 16 91 04 08 ba 0c 00 00 00 cd 80 b8 04 |................|
000000f0 00 00 00 bb 01 00 00 00 b9 52 91 04 08 ba 1c 00 |.........R......|
00000100 00 00 cd 80 bb 00 00 00 00 b8 01 00 00 00 cd 80 |................|
00000110 49 20 68 61 74 65 20 63 68 6f 63 6f 6c 61 74 65 |I hate chocolate|
00000120 2c 20 61 6e 64 20 70 72 65 66 65 72 20 61 6e 63 |, and prefer anc|
00000130 68 6f 76 69 65 73 2c 61 6e 64 20 49 20 65 73 70 |hovies,and I esp|
00000140 65 63 69 61 6c 6c 79 20 6c 69 6b 65 20 74 68 65 |ecially like the|
00000150 6d 20 77 69 74 68 20 77 68 69 70 70 65 64 20 63 |m with whipped c|
00000160 72 65 61 6d 20 6f 6e 20 74 6f 70 21 0a 0a 00 00 |ream on top!....|
00000170 01 00 00 00 00 00 23 00 09 00 00 00 01 00 00 00 |......#.........|
00000180 64 00 00 00 80 80 04 08 00 00 00 00 44 00 21 00 |d...........D.!.|
00000190 80 80 04 08 00 00 00 00 44 00 22 00 85 80 04 08 |........D.".....|
000001a0 00 00 00 00 44 00 23 00 8a 80 04 08 00 00 00 00 |....D.#.........|
000001b0 44 00 24 00 8f 80 04 08 00 00 00 00 44 00 25 00 |D.$.........D.%.|
000001c0 94 80 04 08 00 00 00 00 44 00 27 00 96 80 04 08 |........D.'.....|
000001d0 00 00 00 00 44 00 28 00 9b 80 04 08 00 00 00 00 |....D.(.........|
000001e0 44 00 29 00 a0 80 04 08 00 00 00 00 44 00 2a 00 |D.).........D.*.|
000001f0 a5 80 04 08 00 00 00 00 44 00 2b 00 aa 80 04 08 |........D.+.....|
00000200 00 00 00 00 44 00 2d 00 ac 80 04 08 00 00 00 00 |....D.-.........|
00000210 44 00 2e 00 b1 80 04 08 00 00 00 00 44 00 2f 00 |D...........D./.|
00000220 b6 80 04 08 00 00 00 00 44 00 30 00 bb 80 04 08 |........D.0.....|
00000230 00 00 00 00 44 00 31 00 c0 80 04 08 00 00 00 00 |....D.1.........|
00000240 44 00 33 00 c2 80 04 08 00 00 00 00 44 00 34 00 |D.3.........D.4.|
00000250 c7 80 04 08 00 00 00 00 44 00 35 00 cc 80 04 08 |........D.5.....|
00000260 00 00 00 00 44 00 36 00 d1 80 04 08 00 00 00 00 |....D.6.........|
00000270 44 00 37 00 d6 80 04 08 00 00 00 00 44 00 3b 00 |D.7.........D.;.|
00000280 d8 80 04 08 00 00 00 00 44 00 3c 00 dd 80 04 08 |........D.<.....|
00000290 00 00 00 00 44 00 3d 00 e2 80 04 08 00 00 00 00 |....D.=.........|
000002a0 44 00 3e 00 e7 80 04 08 00 00 00 00 44 00 3f 00 |D.>.........D.?.|
000002b0 ec 80 04 08 00 00 00 00 44 00 41 00 ee 80 04 08 |........D.A.....|
000002c0 00 00 00 00 44 00 42 00 f3 80 04 08 00 00 00 00 |....D.B.........|
000002d0 44 00 43 00 f8 80 04 08 00 00 00 00 44 00 44 00 |D.C.........D.D.|
000002e0 fd 80 04 08 00 00 00 00 44 00 45 00 02 81 04 08 |........D.E.....|
000002f0 00 00 00 00 44 00 4a 00 04 81 04 08 00 00 00 00 |....D.J.........|
00000300 44 00 4b 00 09 81 04 08 00 00 00 00 44 00 4c 00 |D.K.........D.L.|
00000310 0e 81 04 08 00 00 00 00 64 00 00 00 00 00 00 00 |........d.......|
00000320 00 68 77 32 2e 61 73 6d 00 00 2e 73 79 6d 74 61 |.hw2.asm...symta|
00000330 62 00 2e 73 74 72 74 61 62 00 2e 73 68 73 74 72 |b..strtab..shstr|
00000340 74 61 62 00 2e 74 65 78 74 00 2e 64 61 74 61 00 |tab..text..data.|
00000350 2e 73 74 61 62 00 2e 73 74 61 62 73 74 72 00 00 |.stab..stabstr..|
00000360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000380 00 00 00 00 00 00 00 00 1b 00 00 00 01 00 00 00 |................|
00000390 06 00 00 00 80 80 04 08 80 00 00 00 90 00 00 00 |................|
000003a0 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 |................|
000003b0 21 00 00 00 01 00 00 00 03 00 00 00 10 91 04 08 |!...............|
000003c0 10 01 00 00 5e 00 00 00 00 00 00 00 00 00 00 00 |....^...........|
000003d0 04 00 00 00 00 00 00 00 27 00 00 00 01 00 00 00 |........'.......|
000003e0 00 00 00 00 00 00 00 00 70 01 00 00 b0 01 00 00 |........p.......|
000003f0 04 00 00 00 00 00 00 00 04 00 00 00 0c 00 00 00 |................|
00000400 2d 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 |-...............|
00000410 20 03 00 00 09 00 00 00 00 00 00 00 00 00 00 00 | ...............|
00000420 01 00 00 00 00 00 00 00 11 00 00 00 03 00 00 00 |................|
00000430 00 00 00 00 00 00 00 00 29 03 00 00 36 00 00 00 |........)...6...|
00000440 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 |................|
00000450 01 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 |................|
00000460 a0 04 00 00 50 01 00 00 07 00 00 00 11 00 00 00 |....P...........|
00000470 04 00 00 00 10 00 00 00 09 00 00 00 03 00 00 00 |................|
00000480 00 00 00 00 00 00 00 00 f0 05 00 00 7e 00 00 00 |............~...|
00000490 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 |................|
000004a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000004b0 00 00 00 00 80 80 04 08 00 00 00 00 03 00 01 00 |................|
000004c0 00 00 00 00 10 91 04 08 00 00 00 00 03 00 02 00 |................|
000004d0 00 00 00 00 00 00 00 00 00 00 00 00 03 00 03 00 |................|
000004e0 00 00 00 00 00 00 00 00 00 00 00 00 03 00 04 00 |................|
000004f0 01 00 00 00 00 00 00 00 00 00 00 00 04 00 f1 ff |................|
00000500 09 00 00 00 10 91 04 08 01 00 00 00 01 00 02 00 |................|
00000510 0b 00 00 00 02 00 00 00 00 00 00 00 00 00 f1 ff |................|
00000520 10 00 00 00 12 91 04 08 01 00 00 00 01 00 02 00 |................|
00000530 15 00 00 00 17 91 04 08 01 00 00 00 01 00 02 00 |................|
00000540 1f 00 00 00 0b 00 00 00 01 00 00 00 01 00 f1 ff |................|
00000550 28 00 00 00 2d 91 04 08 01 00 00 00 01 00 02 00 |(...-...........|
00000560 32 00 00 00 09 00 00 00 01 00 00 00 01 00 f1 ff |2...............|
00000570 3f 00 00 00 48 91 04 08 01 00 00 00 01 00 02 00 |?...H...........|
00000580 44 00 00 00 05 00 00 00 01 00 00 00 01 00 f1 ff |D...............|
00000590 4c 00 00 00 52 91 04 08 01 00 00 00 01 00 02 00 |L...R...........|
000005a0 54 00 00 00 1c 00 00 00 00 00 00 00 00 00 f1 ff |T...............|
000005b0 5f 00 00 00 80 80 04 08 00 00 00 00 10 00 01 00 |_...............|
000005c0 66 00 00 00 6e 91 04 08 00 00 00 00 10 00 f1 ff |f...n...........|
000005d0 72 00 00 00 6e 91 04 08 00 00 00 00 10 00 f1 ff |r...n...........|
000005e0 79 00 00 00 70 91 04 08 00 00 00 00 10 00 f1 ff |y...p...........|
000005f0 00 68 77 32 2e 61 73 6d 00 49 00 49 6c 65 6e 00 |.hw2.asm.I.Ilen.|
00000600 68 61 74 65 00 63 68 6f 63 6f 6c 61 74 65 00 63 |hate.chocolate.c|
00000610 68 6f 63 6f 4c 65 6e 00 61 6e 63 68 6f 76 69 65 |hocoLen.anchovie|
00000620 73 00 61 6e 63 68 6f 76 69 65 73 4c 65 6e 00 6c |s.anchoviesLen.l|
00000630 69 6b 65 00 6c 69 6b 65 4c 65 6e 00 77 68 69 70 |ike.likeLen.whip|
00000640 70 65 64 00 77 68 69 70 70 65 64 4c 65 6e 00 5f |ped.whippedLen._|
00000650 73 74 61 72 74 00 5f 5f 62 73 73 5f 73 74 61 72 |start.__bss_star|
00000660 74 00 5f 65 64 61 74 61 00 5f 65 6e 64 00 |t._edata._end.|
0000066e
- Call your program hw2a.asm.
- Make sure you document it. Its header should contain:
- Your name or names
- Your account number or numbers (231a-xx)
- The date
- A copy of the output of your program
- How to assemble, link, and run your program
- Document your code. Use the examples seen so far in class as example of good documentation. I will not take off points this assignment for bad documentation, but will give you feedback. As we progress this semester, I will post solutions for the assignments, and these will be edited by me to reflect good documentation practices.
Submission
Submit your program from your account on beowulf (or directly from one of the Fedora machines in FH342) as follows:
rsubmit hw2 hw2a.asm
Problem #2
Write an assembly language program that outputs this:
[231a@beowulf ~/temp]$ ./hw2b ********************* ********************* ********************* ********************* ********************* ********************* [231a@beowulf ~/temp]$
The output consists of 6 lines of stars.
Requirements
Make the size of your executable as small as possible! In other words, figure out a way to make the strings in your data section small, and the number of time you print small as well, so that the total size of your executable is as small as possible.
You must use these two commands to create your executable:
nasm -f elf -F stabs hw2b.asm ld -melf_i386 -o hw2b hw2b.o
Submission
rsubmit hw2 hw2b.asm