ࡱ> Root Entry Fx6"m Data & 1TabletWordDocumentx  !"#$%'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~J OJQJ^Jf@f Heading 2)$p$d@&N^p`56OJQJ\]^JR@R Heading 3$ @ Hp@&^p5OJQJ\^J<A@< Default Paragraph Font<C@< Body Text Indent p^p.U@. Hyperlink >*B*phHR@H Body Text Indent 2 ^ `<.J!!&Root Entry F\Bl(Data & 1Table}9WordDocument,v  !"#$%'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~SummaryInformation( DocumentSummaryInformation8CompObjX0Table:4 getting confused as to whether 10 is two or ten, you must put a b or B after a binary number. So, you could also have written LDI 101b and the applet would translate it into exactly the same machine instruction. Unlike the machine language instruction, you dont need to pad out the front of 101b with 0s.) So far assembler language is merely a shortcut and of limited usefulness. The real power comes about when addresses are encoded symbolically. In assembler, you can replace numerical addresses with meaningful identifiers such as SALARY or TOPOFLOOP or (for those old FORTRAN programmers out there) I. Lets look at a simple loop program, one that loads 20 into the accumulator, checks to see if it is 0, subtracts one and continues. This is Example 5. Go to the main window, pull down the choice to Example 5 and click on Load example. 0100 000000010100 1001 000000000100 0010 000000000101 1000 000000000001 1111 000000000000 0000 000000000001 The opcodes have been separated out, but it is still painful to read. Now go to the Assembler window. If you dismissed it, click on Assembler Window in the main applet screen again. Once you see it, click on Load from memory:  This copies the memory values from the Super Simple CPUs memory into the machine language area of the assembler window. Now click on Disassemble, and lets see how smart it is. Can it reconstruct the original assembler program or not?  And the answer is no, not really. The disassemble button translated the opcodes into mnemonics and converted the operands to decimal, but it left the addresses as they are. For example, the second instruction, JNG 4 jumps to memory word 4 if the accumulator is negative. But what is at word 4? A STP instruction which will stop the computer. So the address 4 would be better represented by something like DONE or ENDOFLOOP. Click on the two clear buttons to freshen up your assembler window. Then pull down the choice to Counting Loop and click on Load Example. The assembler program that appears in the left text area (shown below), is much more readable than the previous version. It replaces 4 with DONE, and 1 with TOP. It also establishes word 5 of memory as a data value whose value is 1.  The 6th line in the assembler program, ONE DAT 1 doesnt create a machine instruction. Rather it changes the decimal number 1 into binary, storing it into memory, and linking the identifier ONE to the address of that word. DAT is called an assembler pseudo-op because there is no machine instruction DAT. Rather, DAT is a directive for the assembler software, telling it what to do. Real assemblers have many pseudo-ops. After you click on Assemble, the equivalent machine language program appears in the right text area, and it is identical to what we saw before. Writing assembler programs is an art as well as a craft. There are many different identifiers that could be used in place of machine addresses, but some make more sense than others. As with all programs, assembler programs should be written with documentation that helps future programmers decipher your code. After all, as one hack commented, If a program works, it will have to be changed! Every program undergoes constant mutation, which people sometimes euphemistically call maintenance. (Were getting facetious, maybe cynical here. Too much machine language programming hath made us cranky!) DIRECTIONS Follow these directions. EXERCISE 1 1.) Start the CPU applet. 2.) Open the Assembler Window. 3.) Load the GCD example and take a screenshot. 4.) On your screenshot, use a red pen to draw arrows from the jumping instructions to their target addresses. 5.) Click on Save to Memory after assembling. Then go back to the main window. 6.) Trace the program. This means, pretend you are the computer and do one instruction at a time, writing down the values in ACC, PC and IR at the end of each fetch-execute cycle. Heres a template to fill in, with the first few instructions done for you as an example: PC IR (instruction decoded) ACC when done 0 LOD 11 18 1 SUB 12 -6 2 JZR 10 -6 3 JNG 6 -6 6 LOD 12 24 7 SUB 11 7.) Now click on Log Window and compare your trace with what the computer did as it ran the program. Did you get it right? (We assume the computer was right, because, as everyone knows, computers never make a mistake!) EXERCISE 2 1.) Start the CPU applet. Pull down to Example 4 (Load and store), and click on Load Example. 2.) Open the assembler window, click on Load from Memory, and then Disassemble. 3.) Take a screenshot of the assembler window. 4.) Rewrite the assembler program, removing unneeded DAT lines and replacing addresses with identifiers. Be careful! Theres a trap here! Several instructions shouldnt have identifiers as operands. Can you spot them? DELIVERABLES Turn in your hand-written sheets for the questions requiring writing. Also turn in screenshots as requested above. DEEPER We have seen how the assembler software (which is part of the INVESTIGATION Super Simple CPU applet here but is usually separate) translates assembler programs into machine language. Some of this process is straightforward but some is not. Think about what has to be done when translating the identifiers that replace memory addresses. How does the assembler do it? Would a table of identifer/address pairs be helpful? What happens to forward references? This is when the identifier is used as an operand before we know what it turns into, as in the following: LOD A ADD B STO C STP A DAT 26 B DAT 19 C DAT 0 There are actually three forward references here, to A, B and C. Try to describe the algorithm that the assembler might use to translate an assembler program into machine language. Just use English to write your algorithm; by no means try to do it in assembler!!! ')*-./012356789:>?@+ [8@8 NormalCJ_HaJmH sH tH B@B Heading 1$$@&a$CJ OJQJ^Jf@f Heading 2)$p$d@&N^p`56OJQJ\]^JR@R Heading 3$ @ Hp@&^p5OJQJ\^J<A@< Default Paragraph Font<C@< Body Text Indent p^p.U@. Hyperlink >*B*phHR@H Body Text Indent 2 ^ `<.J!!!!!!!! 9  '<. ef  @ANO$%b c @ A 0 1 c d v w Q R efno /BUhi89;<*+,./    34;<>Omt0=*+-={TUWh;<>OajQ[Z[\ """"X$Y$$$$$$$$ %%%&&F'R'^'j'u''''''''n(o(p(((+)Z)8*:*;*<*****+++,,- --- -)-1-2-s-t->.!!!!!!!!!!!!!ɫ !!R!!!!9!!!!!!!!!!a!!!!!!!!!!!!a!a!!!g!!)'#!!!!!!a!a!a!a!a!a!!!!!!W2!!!!!V!2!!!!a!!4 !!!!!!W2!!! tY a tattT  a tattt&Z a tatt a tatt a tattT  a tattt&Z!!!!a!!!!N=!!!!!!!!!!!+!!!!!!!!!!!!!!!!!!!!!!+!!!!!!a!!"!!!!!E!!!!a!a!a!a!a!a!a!!!!NA d v w Q R efno /BUhi89;<*+,./    34;<>Omt0=*+-={TUWh;<>OajQ[Z[\ """"X$Y$$$$$$$$ %%%&&F'R'^'j'u''''''''n(o(p(((+)Z)8*:*;*<*****+++,,- --- -)-1-2-s-t->.AAAAAAAAAAAAAAAAAAAAAAAAAAA(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@666#NDdi)5//<  C AbM hFJ,$ toMD&dngM hFJ,$ tPNG  IHDRsRGB pHYsjjLIDATx^ Ed&$!.#DTtPpFt&j(~8|.3'22ȸDʼn $*Dtd ,&$!!{ԽJw>w~nNT֯ުwR[6 @O7RJT  1B d1@- " @` @b O͡[0cBa:2~|"ٿ̝CbxoGP)[꓀2 3 ` I׈#F xo2eܲ="rܳ?N1ON ,:Mw 'h@Δ3qPAPT9ێZC vo{,s\+ jl]VuS@y`Zش 0P U"0뎘 *wf&kd$`?{ z9D4^S7l (#('7{!"\AL}&XDK& #g 2[Ij='^X7Hiʑ\(-V<, AZ3p-[%J^UD]I]qLer!6 grll,$T9Yp % L\v4FHK& l_Z%ȶ@vtzeJM&AmxfZ9KP#/>]2ڱ(Kz€KXcl<5gjUgEDaJQV! xQ:5zYţ!-3O x-/7ޱD|F).q,Jp~i1,0'Ô)fS( Ksgc;N51Jz1600cHS'vf#LѠ{s3[%`E^=bfD >m&G|ڜ ٤IX-6 Ka[4 A-b-`*-e\*Qh (ߎ{fK{2{Yo+ 2Xzh̒fdY!\QLJt9Jo3 +(N C ̟^}<8#le[Y=j-x83ݰi4b3t3_GpGo![vxe1WdJEVxB<5b9b] sO&c؍& m&φNBjlz $E9yFQ2ɱ5? Ь]Z{N{!"DxRc],#DDb@O7kl "K{e2!,ԫL}JAsM1u@ vdl!j Xu >lpE'˿FdIS`K @(@DuGch-#u{BUהp[X?8pmZ_Lu#!R k TCy$ނ0KTNݠ-rp @@to!@(0]vC!R5@@ }=قes2yrԩ'>C F`׮]q׍7^k,Mpsgxi=]lmm-V@#aq_ AY49:si˿ԓ.֞L2qO|ro}syⲠu=A%= @ <^4; ?6[釆ǿ2x)sjٲk봛|׌>ihԦ㚚FFG_Zjj۴yoyŎ/=y 䙽GXr݇:l6#R-=oa)-使*@L{}\4{vG7nyU/}.#.18cBuM4:p?Rɺzt׾lȂ;2={b3E 4]teh}z.[4ҴNz^tw]>/ˡo O\yHPm-ˮ_R}h[g{WW˔ =]C-Mã/}p#?&~䓺 ӦdAAMiQ-ڶoz + y3=!@$ Gm:t$&..#G9<4p}}o쪑{Fڲֿ[&JI)%㘫aQkmyGӇ?ͯu)> \hnd*͏aqp9":rx;">M;ٺK}='I#)%䪅9'w"8H%2鉲`OYrÐ$ vG^i̟i nm2 rt|JIiD6]Q#>"1in"jihM JJI/$i)l7قKuCU!2Ħ2O/~'?=Zg8_dڏY/lTRa'sjq蔺֪sJ=V-~24.˞{;883[?|% &lA7?EQXf .|]e6<٧zꙏ>z_-뭷~O:n^ink;We@l~u7׎Io%$:Zyt)5ہm|+lXsܹ >wsϯ@OnNwLRid"RuW`M] wTgX_ѝ?n_2'g͟o ,ph8{ZoE4ʁ{':ǯڈ^\3Nx𧻓ZVGsc1RQOzv]@ՕSgT;)Wz$Vvdi~w,<98))Mߴz;Z0rU5(Mgs4T<뱥lE[ty>o׿E~LQMoEklzȶ9dwln>r>92*M Up/b_Wkx( Ӹtu*hYj}L`PcSZձ]?Uȧ:"UFx48n识_ʈ|9PtyϊhMnR@~"F*~9gkrmvv&( dDH_N~4uo)wc_x]/ȫE| /"%*[{Ewə_C{VC1:,#cExm @-'k9=1K1sd78[+QRW:E{<}NF*̊I-l\g_71VZcc؊H@,Ƞlg.y;ܛձI.ɫ4,2Y*FFF䊆.싗?- Ƃŗ)*:[GK^rK^zzGeiޠ>m 2&_FTz{K'OGU 8ݸH^5N/)Ǯ[;_$U/֔v< 3QqG3 Nq@bhN3NTB.~@aʩH-͏\5]7Oi?Y97>,@f >_&;.iV|WC*i$\#cY1֦{Ogt.]s¤*-x۾u ^=z|_yn2uY?}T3WW߃T}gPCyO;mY$;Uzs6vZ8컳{ݵqg^wtKde9@Ղ( f0u;ӻ+XI~a¤ ?\q?^6aDDǦ Hoxʑʟn7߾0Шh&xdW|[h>g?PYu`ۃn%=*@ ~tW(}tL9I+IN5/>ihpxډ= V|V>c7ʗu.HnPqij@w7k#ji4)Eg,֝&yre9~5AOƧ)dTp<\zV%G=4Ҩ:Jlf4r4- %^uΡozce#ޫ^Wzת|ƈiV k߻pȂ zTH\BhioY_wS\de?~]SO T0or5I k@5K^>lȂg>?͔3[JPT񣟼??9m=wػ%Wd#Ks/9$R98#H_۪i;vg,P|#:UToPqCk GUX^x0k9IdxmeʙjWÌym `p-p͇?,Ҍ4xA;nݹ}rFIZ3%A,Fvq(Óʚj#\D\ϟ:mW^qM_v>%@LSO8T_=w@2N/{v#d7ߺaÎ=@@ ̙3oS_jUV~g,3n@,?|9^qW'rf @s @% ,(A#SE@d'RAJ@YPF ;qY s5E;OH@@)W!@FY!@",(PcR@@41Be7r~hޒ(%K߸YgrE@k`8r,Xq˝ݷS<*Y@`r54q @%( ̾zЌZoJn2K`[{n][[kK$?$&U%=f!Mp{w޽M;wnޱce۶mllytR#G淦x?@ ];{rw$ٺ&vuMUdl[ %%@FFFF?MMMv=Ց#PȂB@ T$ȰlU0z @^h@ѭ;S'˖ݲAHYGYS$Xu,+;,5>ݾI@%EjҜ{,JlD٘ (3PN4]n3za$ZwCGw)=zcT)0'Mq7Mcr(bEz"@4[qqIB;,9 (o5P EϞٻ=So}#:{'TӢ=s ѝ2(bm!hFC߳oVwkn>[u>9=ɂ$azm~yaG⎾}$ұ %) ECtz{O60pX>44 #fuДL.C M /,(tR9dMk&O>~ƌӧ_3v=K "Q# "4!{Sf}ݝ͊_skѽ8d4=WR@YxE#Gۧ=sԅ<ٯ>׾}ы?3^wi|d  ~dA @{y "쳓Φ͠;xYQM<(,p\HW=Ns7#%b$';>Fi_z)#(ƦTN ) ݳIm)P=Ğk%[Slk x & ,Y;KozMkJ0O+@A 6Y?on!\1TA)i  @b զku:}3~+5 `jW<{Gh@I(]>NQg`ʈ5*IPMJh5i-@ M"hvI$GQB J%p :dAM @d% :dAM @d% :DdW  @J fY uM`>pǚGAiQ-'? L;AS:^RSz))f%',P4lM z̓ t)4-Uwʅ@ J"̞N!>SK L*) ;)!X{9886oFVsа1ҾFR(/8ez!1 .8e Ft@@810{  @b %ʠ!E!@ Ł 2@; @+(*@~ ,TД.V<@d if^Ka)|Y\a.؎ɂinW|i}& lMHzpҪ.Ҵ|\@@N ) uߤqZAQ]k &Buh@@bIf/HT!@#P4Y c",N9 x.qgElK"jm(,_A (e#,Y[. *BEQX PrȂՇ %,  @#,  @@ K" g Kyl|Et7} *gA+Bz@ˎsA)㪴)S-po8}EYN-J>˥ ;*4li$d܃g)흏]_UQ͞qQ<,߸s@$, vMЀF42E@@ , '? ^]Om,CF MYOT K~m@RڬnkRzsden@@ dA $ @ wk2 $EYYBrGY&a@(Ii"d1"ڬhO)р "# @(EiI@LY! @E!,(JKR@@dȂ1@( dAQZz@"@DF@ U ` GEJEumETࡲ @c @b c 0[@D@ l1"ڬhO)A ` *AC_6k-ۚ:dAM }}˞ڳ~J kV`ɒ=m A? @&`%  @p /dA<@1dA!@@k @p9"ysj){p\OI]'ttuutvutTfuvQp>hÇݻsmvmݹso(۶md_eˣ9 (Q# J ];{rw$ٺ&vuMUdD /,(RQdȈd|jO寮#Ȃ&"AN!Ha٪"`L)d`;8x$LfI%cҢ=ڱ& @U3+ ٫z7442!qy xd4udno܃#PQkQ9044XM֭!l !Dz`L<v d%"U@ /, V!P7.\ Uc=&ׯߠ;wu7b$4@^YШ@zzBS(M0NHS(y eL @phr퀨)*|",jTS/D# ys "H4(" m[@c%͛g>& 2N\? $ Pzm~yaG\$ E /,ނB2@|z{O60pX>44 #fuДL;::+KH@^?Y =6<3O>o|~f\sڵ @?Y B25koVW?\ۏ'  \yֈ $$ɂceGK◮Z|ժ_+O._vu@r;/owo κq" #5+m6Hs9g+.o:Y n-],_jmmw}׮M-=I $M3h/޿/NY0tc?FqȂ/"}XFÇݻsmr߹soߨm6߿~˖G-9(Sl@vűia`@^e:::;'tvvWN=Im]]&}*@l@vی u ;$zJ~At#cc?rz2@ #dq5kPc]ًMu3d$Fn Yg_i"C,*xGtWce ; "ettًSyF2$Eu/ {o2 # ݳ֯3Sɔ&l>CCC-l@vTGƱzZ8a$;P*Oe%!"fteUM0W6$N$9'hniaC`bCW[݋-ƄIFM 3Xea߽^|P9y77]:e u¤+ W:opb)H"CЋR'XuLC8zrPcz1H#k$$eNG~ŷ ģٜ0H} :;p앾oQwHG>'Ƣ0"aƏP)c'Yk-P_bd ˎ(+g$;:*W w/vauߣۍHR1B'# z{O60pXߡ.oDZ;׋H5'{qDG|(v0mڴfg̘?}m}$̙ {zNX~b@H{ދSwXAMm(|Ű'ξn'>y͏8Wf# ڑN0i:@wF#)!psܲdɁ՞MA{q +3 J bQʍ*Y$M)O7e?%]hSos~rGEI*@Nw:lC$#R' :{ON,`)^SZ`WnY 2! 2ax, eHK/ YYLS d%)sATUS[мBiem [P 0-ddAmoص)c*Hਠg&и"C[ ,k+c[` y'`v+Afc\ +uŲj>#99%qѸn}Y9QQӑ6GVOeS5>G7ܩ~zVԚ)qL'rmQ(0"b䆚Z'D}݃l&3rNHT=gg ȟ,prd]OQW[8N}n.W^Ɣ[C t}254?pLơ+β㈓ӭ,udA_2yhͿ=ucM?S(x3]>DBѳZ^:!P<cEf7J{ɲ9ɂ%K RZ_Փy'?hJ RDW pPȆŀSkLn$eh7>{B;P7eb%pȗSUn,w(nq_3;ԤLYp԰s"F'r=gO̞6mϳ e'X+SI-Φ⤁@ .S?V~T) 5 JMÑt&4Y36 m6ŘyiS}PԅU.ID6! +KK#bd;k-ia&)\=+RB2@ ѷt."ȚkMc` @ `tdAQBY@H@:R z @ v:[ 4I}9.zp¾Mkrp+v# bY JBŇ 272(1'* <#YVnU;@ VYA*FF%?MY @Lƀ @ R0,p  PrȂՇ %,  @#'o]xK,q3 jdZA1ĥB2˂뮿$$ ځ># vi.5\4@ XX9ݦ) *9D69ʃ 6[#\ @@m 1)˂fDEi٣M^@@ ) =j|\)CrJ MYP ꋚPPY= 9BY"fRʛѫdt4eu'E Cs@(\0/xBOFdʂ: dٸaR9$@]JM,PxzS+x|]q~5cSyU#gvU~=k&p8r10:9!!=aBcíHiҔނf",*gqg)OCzyKܩtfbCLA @T#Qvm=w|2 ,hľ);C< _)2@Kl07@Cs:SO[& ی"Q,LK6FR`!f==U5&4!\ W P6-t6iL~ʐ7MYื ]ڈ;i?E9f_;s1'ܗ!;r}&% P@C3i?4ex9ɯ7t]Owǯ>@Qn ZLFd<'NuSG> S Z,@HY0/.w:.ڹ1B4i֦j>=I@anTZnZ.qIy$]vtV\\huC.ʁE>YX)H,䚧iXX9t2raaA&c_'Ho)< K MPƍ-Mgljκq6< )m*N`(H 98f * $m,X!86n!4eA͙ l=֦)tۺ T@.F\D3dAJLEsޫoF): @ .F˂3Ϝ]x@(+%K# 2 ,PoKM|H @$0w- X@!@^ @c @b c 0[@D@ l1@ @@`@ Eb \D=gVmšedWS6ib)@@\DpB q޸aSd d@dpnf)\# @&d_զ9z6ht-U=+Y\NB@adB9|ǵSvGvwzO *sښ ڸ76-LxQ@L)>kywQO^w,@L#y^m=7>}}P' @ hY`IM=NreE_p\[TL2@@PgGe|USޣʦK1>ச'.aI@EѲ@GDiiq}(qJ7/ofўnXVB@R)֖!@!PLY>,n@KyֺB$/~WZ3]C!  @uW^x{7^Y $W%,C @ d @ i -H2؇ @ "]D%!@h -hL5( X$xa,a@D3:f$c+nW_wM'{-{lC#J+6B;PM|oAB0 @(6dAۗA@ER@@ $:bSv@^uX-I Bqo 2J -Yj3J'nqa6DDg@ 7ҒTbG Ȃ955'+5 'Ȃ<B #ybZ706d1@@ .&,(vR;@ f BK 194) 3'sd&A@YPV@<pGd Ík@E}!28dA<K TJ@  @   @%l@ @ xh["(0<\q˝Bzzg$pBO7-# Y@ Cm&X dAVEDg@ 7ҒTbG Y%T p,c IENDB`?=Dd}'VV<  C Ab<ۯeO[&H<gN&dn<ۯeO[&HPNG  IHDRGsRGB pHYsjj<IDATx^ UJ&B@"y*.( ( Tr+ ܫA]UǨ{U^ (KXAy! &L233sR:UO1T?u~]^6/;@ `Enn_/g8rI6K| dw]vpPmɶhߞ{) `!qx?rf;9?00?gO  @ ::;ۛ6/{ QW?C4-۷;00ۗYF@0@WWg>?xRaSsSwrOAs@@ t<䐉șZ(F6<^|Y#-L0axdNn w4^mhް#nO{K/?b S ~={owG.}=[-&'? +^  맻ږ:S5o*-o͞Yj ?aϗf] $@AmV|e3w]~M8 E{p&DG6l/lyex#G[RFJJyƜ{w(߁K#M+_rմ^w^W#W_zv.נOύȕ~{.:Cq-jW FFܞ؏q[.ߖ0(I4-:ñلeul1RddW6-'>QuK,92Guȷ~x*v#sN?Zƙ/~qHgN}1 Ʀ#n5rƑGS/.lTɆG|{?[~'Mꖈr_SsSsscs񱦭s93ܻjS߱=;{fm|nY(ثQ dG_P;ڂPOO?iKYRTEÁQמ[M]6U~bG[27fL@FQ jsǭAu5ڔ) ')njOM 4[-HI)/(mQlŦHv?bޅafu;_|tim\4Wzh+r}unb;MS FWj7e%uԪ3}=U{-iKeSO-4 j9m`X*v :edGbW`SjGTĒ;qߣꟲ3ONrY l>wl.YPџM-w y3E맞j#"[o[ϚuƷ\ɏ* <ܺ#nҹN?nYS$;*8߹e>y}oO>[~?_3O~OOzq¼uxM?aӇ{_-tvuPWT)ʫ]}P +;rD۴;{kGGR\w绢ȩTHi7Y}} -]/}Wsk4;EͷIyzkk>~hi~?wsSx;uT>^xm-ڂjt憽{&O}rX6Wqo< 3RB@=J<6_[.YǭnQqSl%0:v-Kove{S:6%uUQg9xWi5ˈ k#꠪Uڸ~{ncge^-G T)(&)GwywVSTR{t£@v;n%O{?>wٽG=眷"OGW1^AyaD$/M5򩿓wrY<ɍo*<aˆh/|]?unݹU+uuw[qg ?{Q럻]㻺vױW2m shaph!]nikcjW rvs%Vv2ڈ:hi7Xry9يL CrkUޟdʤIKZi_C[uPTo9?B`AY 7qxy}}[낸_KyLzWˇp͇~͊|XйlZJ!kEdߥWjnYHÝ+eKS֕ǵThkkٶvj!K9#}:-Bu'P)>u# /}wַ˺9_?ϟ lr_q)FK8#?ll㖭~ޢ>[ɯlu׭?sΊ/|񢌪h5m0/Nuh1 lk"r7b)pĊ@CܒI8tbٺw O Cz=nnx!մ\z׈v{P*zTn})roWjqG6SummƺUxL۫c|9\M8"7f)qF̽dkR^F(p&'(wEx^t|X[DD4{'Je$ܲiLJе7 ^8Tzσ dx/k±KB3~SJPض(kcizy#}޻8id櫽}֌/ǘũӦy޸aC4 @(>Ē:}J}~hb!@x[_km-Yv[\nt?o @0/1Raub1EY@?{z{$}m6lݺN^Z+ۖ-k6mzqo)  $zK=@>^>}lmmmmw.KdQ]I@eCCaY@uMۇlWI0# N :$zxHHShZgpp_|ԅٮKG$@Q~{lP(L=>@Pgu:DO@ZʗG5Eի:E,*koWv'2v:E-LGD 3" &b_Z+̱},̦!PW_f%TPJ1 ۆ%w @ @@b ۉIBm @ 1Ĥ G!\ XFܞ b@ Ws1. zs%lg6@#l'/gx @%lg6@#l'/gx @%lg6@#l'/gx @%lg6v.sVwelua5[4f0dBZq%/v-Ԩ@ v Bٮu @@cN Z ۵P Pkp\CgɪS8e%p `(kp_gC)ƒ,U4V @ $vH 1@=cZ D $f @@gL   !  @ zvihhп?0va.A@@ @=da]/ /)qGhTȶ/@M $T( @٦@CNLp%x2uVKnsd;"ԉqa.[g0N$d.@H d;1Q@M $T( @٦@CNLp l z(jKZW\GhHȶi)2VA_D+}%S; v( @/Z TAٮE!@@O * U( Pe4pT[v:H02VJY^+|\(b *d;T DIَ.!@@Cʼn1@@(b *d;T DIَ.!1WuX+ ѕ  @ r[nIn@H d;1Q@M"'(рmkH `  uB];;jBLٮ3p Nٮ5!@u&l8Aj'lΎ :@ @@kgGM@?V w0)2vJ80@F[&Eٮiځ &lF@@ "M; 1@d^i&zYk=]m: P,X+ z6$l x@ @*  @@b ۉIBm @ 1Ĥ G!h `8l <@j mi4ڎB`> > Q `dی< @d$@ l  lD@ oDAd@?@R\Ēw :R B"lGE ۡ#  @ *vTd @:R B"lGE ۡ#  AX#v(1#&-,g!@ a% w!@ ,g!@ a% w!@ ,g!P'񮗕61mdZp #^%I]! m(@{ p  @@cO@@ @ vv)@_ȶ_R`0V  t@ ru[+# E00mprp  p d@H d;1Q@M $T(K }kpQr{'lg@2 ^QݱXeH)d;%,@H#d;Y%&@H)d;%,@H#d;Y%&@H)d;%,@H#d;Y%&@H)d;%,FX̰.Twf! Yna&(:d;t DEَ,v!@@CGA@@Tb :d;t]/+}òLr#^%_h0ȶa @@i6 vbR d>@H d;1Q@M $T(MX,msr'H--RQd$@ l  lD@m3 m(#5(X6lvH ^QݱXR򎟡@CGA@@Tb :d;t DEَ,v!@@CGA@@Tb :d;t<+qbB#F r20W¤e; $. d; $. d;D zF3F@L NA uX˱W@  @@cO@@ @ vv)@_ȶ_R Nَ=8@KKr@ `Au5dDNnKceF@ NA$l# @!l'&U8 @@ @*@r o x#JnO T&p+;L)%l4@i$l1@)%l4@i$l1@)%l4@i$l1@)%l4+%7D # s-WC'l  Q. @ tvH1@YBB'l@euzX Y>C~X˱W@ -F6,!@(M٦w@CNLp l @!l'&U8 @@ @*  @@b ۉIBm @{kwWΉݝ:&tّok˷6ܜS[k|Ht~d;( {z{c7n۶auZٶlYiӋwH a A nv݄!`|}|{8::]lKI#NΏlמ]jB  ö.dW#_}vZ{AF2#횄 2,(ң:-#rwpp$!&w~d;MX fpU-vzmP($V `;?mFO GR+W~ EnXz͘[Eݍs ѝ^C }㣚 +dn\lWd =}Q ,Ob7uܹGWZ%׬Y9s u >w~d;} ڕ[iVA>L"`~GM/SX?Rh3 j̍*;؃@ hmV?3g4kL/0&ɓg" `~Gq+2͚5ˮ+@* JMv*{AA XyR b7/NMg#Fyl{eBa@F&K$󭡵!@ΏlMp&ذa~)Sfm3mԹ]]\;@ Dt`ahe˖.?kT-K?@SH W67n|W.h^a::͙sBiveI`rX?"O]{,X0l_wնݿ*#Z\Uh6{l3D\,'c(5e~[ $ 5jݻ”mSRb%l$޽}`R}֯AV)HHa„MܼyUkǔ, PIݝ՞Ńm6TjaZ@?vl%M4;okmhmm/ho>Nmmmmmw׮. `ubVu>T9$LM`9}h~yrxA3}XyL tjl9gq È$C?TQ'QK~)Ԙc!P8\,}q80bNH'&tϦʲ],a:3ZҔ!L-d!06jŶkgq4 cc ?}]Z@={v.ר9pi6@CO\L_9XfZY0bNȔ'&tϦW{/]jMշ-4z\N@MXf"r"w8a$nMLMe[:i^zWmm[ s}9W\N3#8L_ ϙ3G _NQ@ 0Y5[nRY08@읿F+U{p1&~ͩNRm륾Ֆ J#F-3CR!Rʏ[ѿV;ůʬs=A ,#($x >}W1~HTr\7W}PN=W Ǫ r*Fyb`W$i+o" ,݁%\ӟ̴iGʕOta&O`@=lBgq+1#ʹE QB*/ݼq}}rU]( [tH,1nΜw`YBk|Cgq0RKڨ;{ب ^pZD cHivjYa$}&"7w珈R9پ3V1 CFҚhrpt툚, @в]w۵Y @Q@M@@$Hb d; ؄ DBq+)܅ۍHQD *X2B7 IJ#`nܽgY:FШl2$|CCh!I w,=;9ZlY)ٮgn$-C1%] 20 C ]$B֓@w۩Ԝ\DPjm>MCjڔ|瘠ʑ@\Jͮs5}_,%:@ NYP8$dۨ.3@dAEJX>'U-u\D>Y{aDmqQ'T"N?2>T*Oµ3Xb5|NJ_l+P:ԖCd)$)iUEӊ%c$0u&#uRUCM*꫊"Ǹs4Kk짖煾ß>'%t*۞UTi׸} σ>(s_CP7 qO%jRfCpDPkJ9+kf|Α 9;Q W!ڡRbu\]h,>>k*> jHUq7Qq49ѵY;L@k(?CiTBUǤp?=zp,xUO T'^c_li =˭{N !v(l ,{Ǵ'migwM*MPPE԰Y&GŊmiU5Б߯l"9.WSzVA?=O7y%ILPB-B@2 QJBCORUj#35#h6˵*u VɊ{eJUVDjV]pomJC.XJĎ94k'AUӪKD,CH3WiFFl>5[RѠ6NA@Tc$d]& ȂZoU9lW эRqFM %(#iܒVʴ+ބeO&߸ IJ#S`j^pe !(,cT2ek~t[ edgg.X""'E$f!@fZuS90gKg| {a  g~F? K' @%9K"ǂz @H(ʲ-:b{ic !@ %PYK[ rUؾ>h7/ *5V]]1vO@N4]g]Ŕ@ղyȕs4Abސs9CG P >n[,io4*R`ʲ]=u=Y3r8H}AvTD}bFmQ@eٖZbKݏ`eDwK´ր 8Yg"  &`?Ԍ''fA)τVln |6#`Jr㋢2Rn;7xZI@<w'JyX[jOrŋ-[QpgUz ,Y#|R*ԫSI;kNk(N*>b~Lv0ěT2jCKh/S>xmnъ>^'TIOzoxqRC ٖkVRe%Uzښrm\lj:@@RT!ێKR-YRqT.Ɏ}Wc @@m2ٯwK+_OYtI9 @ v.p+]+NWZ~1_ѷͩH}F2 @ x˶R&$#UqWyW%WvB)HX?% ", -^l'8g}ڽn @ vG]q 柲`@ LSHg, TKI /8 @ RIhэq@j#/ xA[2IENDB`ADd@'[[<  C Ab@{.Õ8OM)=i@&dna@{.Õ8OM)=PNG  IHDR@7sRGB pHYsjj?IDATx^ UypHD$*Z,jKE@E J[Tj`|^V|ث@%Z)H0/B II~9++3yY3߿Lf[_ogyWk/NxAGGGww@@&&&ĀGeg?s1wl߾&^7[v.;;=yA\&pş^hёqܰagzDɾkzv ‰.{Vo?ޏx},Iʎ+WJܳg]uLvo~~웮|MM@"+:>1׀??T)}5gTO@ܡၩ񮎩މ)IsO|nl߻gQ/T'[}Ju]gnI'g~Caa鑇  f[ȁsNVՙ(|Sݽ}]|z]1=>9٩OO[|_L?0:691v~>|1Gzm8--x7w:;?Io  P 2m}*|J&F'%ؿs'7!Qyj񭿚:+-IRoU%cΎͿz?_Ćz=owt܏GVyx甬ߍOugi7xWۚOUSWIiOPsݔ7G3K0k51 BvR]6v6{HL7l*%#p{[h:M߼%|-gugsm97Xqm cm~%;W{cL+9H)7KV{GK%"/DR"gABɍw,}_nG|##:}wu{vvގ]⍢w_bҾI]}>.镕.{?emӛn-0)G5޾am7_~'Ʌ=:b׿q^zYK$ZC/5=sL^߽[UkӥOUE%25/ʹB*%?FVQ$ZZެ E1oqlhh&]594ܽF:Ds^L?9<7u @|+Uo {Wn?c=ӟ3asb|tlG6޳scx+>_mfxww.Mz2zgXeJTa"< 3>"iڦ-׃mؔ)bڜ+ ]h3(ICVS6ijKJ`sfz!EwKCWJ1ϥxߤ *o] ]5G ȐiCJIY=L%jiR"_ dSC/('{N\7~{8n鑛{bzǟydQ/e/X>y )+I?~{ժh9Q6y,Acw*̋fU\ W+7u6'i龘'U̼A;" MtBw%HX󠡝 m&y:{NxuS) y[=ڜ+aY;JfRͣE hfd3ô f-a*N Ah$ h#x%\iʃͤ &-z.]yY%xՖ@c2yl1xqEVT%5RJ5919>)wo:NR% W亼IO^]utS+cY<|]q՚|kW9M_ɲgoڥ~%8w|Q}ѻ_=rw)'r}Ճ[q;#eCN|JT8ԗѢރ#ô?#**+*#E#GP^$=;u]pQU(Mv+0sa*5@ME@pyƦՃ2yESX !6/4# I::9Ba "oL%ml}zuiYUOt_q7uBH8\MMȈK)OI#vntp/zyo 3^o׹R9_u׺'Z?wY`c2f햖b>|.+P`Ju3iA=% TR羞ti =<\nzckz9~nsk_K%w b=;~?/S"wƦN+OE?p"/ry$:Q7DƧ$~{q [~yac߾K6<61awރʼod|Of[˖/AEMaESu*zHh->A`DHM)4 Fшs߃2iFR y9R\5Cל}##ro_~~ԻߡYw=_%ZQx~'OXi;&^ g~fo1{ƣEo|/Z=ӒS:}* QV}A>uYew#)@Z{d)7盛qnUƿӏ2yZC{䭙 {7T/f/)S~USr7`7x~ Q%N/g!V }q-8;{ϐ*A7Fp[ ؼiӝ?Dk]uZG-.$q{=V2Q$Zx(̤ Fyϗ7;7m~@%λW(b @u}}!@!yM?g}'}Jid @h3lA 0CPM_ 8MPt` @PM 8MPt` @PM 8MPt` @PM 8MPt` @[o  {\rFLy{zH@NH~r @\yP4RƝ ΟPkS}%W[ki3lhF,1":N]uN`Q R8;v|J"o߸m9zj[ۼ{w{&ynqm>X3}ENL%l[:jgJ-F U$Ee5%Nߵk걬GDtߛHJ:E&m#@?^UgUSP/ZHy50Ҩ,jN "M*Nڵ|Hk +F_dμә#Ea իU/[L[^Ek>װceg;BuX=8 hF@Eb>2.]jF^#D߾Pl k|5)Zߙ]ŋ˾w"*G;DV_'W-/64 )azX# P ˗/WQYut Б:C%r#{I&6;VGgLOӥm^1}JY42aTǡVXGb1:]hQAG Ο PI5(B@=D?eDX=E?ȬN-v֐P]ވhE`Μ1drcllTGekLdزyg;?J _ ƍ;cY`ҙc>r{#xr>C.w~U;M0E}6=>2[caIwvuu ^}Fld&PXB|l?+ِ6urw˻4N~zك{,~׈mﭷ<} Cu%Uω9E- @ ѡ:;oJ&/g%R9iĜ 4} M.OQͻS ݏ_/EM+ q:q3QN#JGnE߼?[m)=ʵP&P~}8H<{G X X6&Ng% |Cu/lյG P -/ s'? I@@; D 0xlNuvp%le7Sno0@B!z1eq&ңNi&I/'o!Ly{MNn*IR@N⦱ w3vAmYD?%7Fad^X@h3 p,NtLoR%K|did@\&id(Д]n$l ::1qVQb $#`Nsxp[;FgR 6CS$#B)@ [RXI{7C%m@mef.5+UYXqw,\C,XO9eYݜɡ=dnlgCSWNW9UZ@lm(!@(0T @!@  @0S1 @چ2 D4?| LmfSE DT (لWY;~ X=L/YՉ:ԃM71m{(-/Kb 3K 0<9G$MI@Rכ ӞVe=]ZC>`! @n\\ * TW*LP]5@BuZ @n\\ * ru!w kK%J6e5R$"OC\I`$KUUNCJ̲$K2#(; Xl«bk/{gCu&y5㓌 ڌ" P+OM +B"`6b`<]t2kŋ< T@tw`ymMd֪|A@K zU-ӬCsB, M@BC`GqV:qr-3-Lp컿,:ABC>'\,{Bu\C BuV$@ȅ:( dEPI@r!@+J!@Y TgE= \D9Z & MЄ<4 D 4sp.- P-$rdY-2$x&b`Y ;!PR*ul%mKmt[!*I*T\ɶ)@(P+5q3ykF P%3Vx+U_eR J @#345 ,U צ -'!-T*bf˩ONm 𸾅2o&X>seUh#D& 2w-Y:ѡt.a0 @JUjM|  TWQq DP]@ Bu @JUjM|  ա p"aYE h?h'Ѳl RcCpX3O@4CJAvf\Z7f@@XɬUv`@ PMf46@@ DL"V&Q@5$PZuj؜  T/U9Ę7UuW̬%ۙ7bCj6kR=nCu݈/ @)jc @~j @ij @j @ij @o 5>2kѽ EZ6)ѯF zUd֪[g_p09UMՐ@2BfL0jH zU2ɆYCĸ @HC6TٞX:Q@PmJZɸQ  `aRw<{湾U)bB$Plζ.GXdRYˑ6 N& f m&`lA    n   n   Dd/6>Yˆ2QHCG@tLKA_HfHD@JAgG zU 22ke% PCI0~TgՐ).C2$xk+ng3 @%"Ц p2kO`* 8E p2k9T/UՎ[ UuhɬeC ԁ@RNդ:|4 DjxA P Bu MP @@§j@@4Bu4#$ @ T!@C5)"$@,|Ynu#EɬU΄%`rRD7!Uu&PȬ F@@ xh 2 @pѫm o{  R 35VȬE @B 2uSG,֋Zp! (6Ujj?V Y+4@jmnVTP ;@%`]uVR; @յmz r TjKP]ۦq@(Bu9 +!@C]jcp B&W&H DCXR ݖ%( PNc8bO :T+IĐ (2T7.Cp+Tn+n!@'Pd&VB@zV>L5nb *֣t '`Y˗_+4M۲ *Fm)jRQźD(r<8 @ T @N T;<@ T @N T;<@ T @N-2k%Lii '{Y ` \ ЌleSՍ@tfFmؑYˆ2Sڤ* |$-%#Vh (2T׍5Bp+T'B: @Ze% @HYKzsxkgȬU`cS5 !Pl^H#Rid2cŽZŶ7C5Ix67 iD*-@M  TjJP]ӆm@( BuYZ ;!@5mx܆  TjJ :TȬbd֪iGzMz:zMJc Z@e:Wc=PԥdP*$@ ԍ@Pu dt/M)@@Y$ Yi2k`' H If-zf'd֊D*FzbwlYˆ2@*mK9UR5KH x d@@Y r @5!@IC& - P44nB@Y r @5!ɬUȏleSʯ&PMf-7[ P&*Ieiw̐@tV "V2n ZH WUخt Hͅ6{ HB%$TgPɬl0@p@ZYe,]"%( P桪^8bO If-ƦV]Ӝ"eL6!DI« H^1@p6@@N@p8@>@p8@@tͬ%xN,NP4? 9՞VwDfON;ЇV M@E 4JAӴeKJ :T:I2k`6 @PIn@(/$Z_'o+[mm, hIB݉iY+1: B@}$ɬY`Y+.!PmUG@ZRMUd֊BCږr&UKB,I6cU0 @iУ, @ wS @ Buz NP;b* !@NC DT-d6Z7)@=˲ɗeOɽƢ| DfZ"VvDT6ɥŖ6Bfآ*C y  8B aֻV#1 @PU@%V, Ԅ@ZYe,yYb bPUt '0Vۿ,2kٷ  $j8bI j @HOP! @9 T  #BupQ @HOP! @9 T  #BupQ @HOP! P ϛ3kYs:|xpYC}}=}}ө}7jOO} ݽ޽cΧyfˎo߸m9zj[ۼ{wJ*COL7dC`tt__@P`a500$BHfS%Z g;?ڍp䤑yBN傺Ֆ8@v0$ v~Bu͋T''h,ճَ߸g;? BY=ۍŴ>a*pYՏ*uc8ݱv]U}聀3\jg@ 8ce[劊z&c!l'Tgh@eVxh͚5wݺK,VwU_OB~ 3Z8=#B5S)v~Bu@ ޏ|E3Y`Fj; 6A@:k-_\Yt6UGOί X\K.5czJY}n$f'Tm!CGG̜˼5xl^ g;?2} G 9sǐ1:_Q9Y1cƆIe}}TAOv` q;c-XtXbx'a5V@ .wo=;W*G{o_oT@"W[z7mz|dd,!eaIwvuu ^}vO YxQR5;z9 W];0@~cڽ;bsL5 L#5.[(4$ٶRRwt # M`pQwOi$&F3v#d{&KJD~Ѹ2~gϞe˚9Z@ ysfcq+j4? 9H$N 6 688[=;2E;53e=,)5:iigL䭢%)̯*Ig{>y/@2SGտh쇩'GqKL# [Bv45 12%/U]Vq e$ 7UiȍF{9Q_fQ4i6M-BcT}*NK1Hp@c:d2dg; `q{T:#P?7ex.!03SLb㣶wv(vr`if| 83RVj$lٲ.TOvwup@P -ۘ-e cݺQټ2H4NǨ%.tlGS'fzy"Ze`gz(RX)c׬Y%}84iP+\َavZ ꓲ=2@3>DO#(6T3$i6dAΟ!:BB?=P T154 ;N/ʩ&BU% L#Umh uCuNՠ dZHR dFPJA @΃*:!@ TgE <Tm+V^k+Ԡy%:!PBUQudq#f8(!zNi7o mv0ԌQNPaL2p G%ۙ?UPBu ^Yk j '/Tdhu9 jarʩ.:#J@=J1L5YMY̋ %[mecjuH[Y'PS]m kM=|êRxgl;9Iz,#T6v$}U|>Bk)UkR͢کf  h6q7z;*uSM!ҵ39楠r8&lSٶAIWheSЏ$z55Ћ>?/'p*q K Z~XciMo{9M9olNnuȻ<ۆj$77Aʑ4Lʲls.S $^kQ9|j{ &iLlv\GǂƤ/Xog1߮hs1xzd{DՆjߏB}}HYXfp쾅qrdM"bz4b]\N5S}}͏<*I ZS)]ٰ J`_T] '99== .Vڷ`HNKaKmGnJSMBe!Csj=pwC%#]@&AW,jl!C##7۷mZo07mjmA ]1]jT6@N|s_V~VI<-ĝj2 E:QAtmQd4F j. I0г*m*4*@{ ][uNj`h@ õf827,s[%mt7}I^U($#AW=MvΖ4 a(laOMMeh^um$@d!yg.U8TzJk7!bkyz V_JeP=}+V^k#7g!# X/AZ vvv~K7LؑI&_*đFpV^^RBuQ̨dܩ9=OP^C IG&L|G%+N8@@xپPu;B j !\HjB SLq (ux5}j !\w% 1J3"࿭[2\q5\rFL'*9#euWdF$6[rTI&$TO +W^=B, DjDm3Qz%ZeO2ԷХ3 Mc,Ie(2'~,^]pһvv3hȰ,oP̲`J^U`Epն6Ʒ|lr4Nsx1N|;$Z5L>oG!aҬ'[;T'rZSbSL见 cAJL]WsE>X64bȊ@zh' &BgdY=m jOi3*N,%[j~B zQb?_a-Ql`*=*8'SPb25);TqgfZ8HѡY%kl37@0\ni5r2i4jJmƗP,ÍXvgRU>rKjYط BR4@}Wm3ld0[*Y6zUzq:y1M [D4&>v&cnE2467[~1g{k"f}#RF,q+0KV0:T^j_E}aR)QbD_}EԠOɐT{+"KE k=*@ #N~ O90[hK8G֕UEec tL/}kMʰj(=E?-vzEPmt"&S90UkfaJO`vHX$r}`6xT2?]b$`&nL&JN27}A?-׌$ X$N[U:U?tn`o}^>J۴B%?8L}0֕dZ:YKT;:AcUr%@  T۸dXĥi|E6#SLŶu%'.SQ; @ T 8H`:T_4 @' FK.:Ůه= :PO:$T_vL!@N;gJB5w;(@ T' @N T;<@ T @N T;<@ T @N T;<@ T @N T;<@h-^!,Sڨ @6JNS7h@k%JLbmx4zm @pm/ꋦLkBS!x=n7}F*u6}7 @2lCM"F6K[_|UW{⵲֦V?p8[# 8P[zk07[Gg}qW}G Ԝ@HF#s]یWkXۺ27qy3> :ZFN3GnGrli-:%`zj鵥f @BBFfW"#륶+:R&ex3y5JV> 4#yM?g}'TpEnFoyT@(9Ss&/  ԁ@a:ns:>B@\$!JjIENDB`HDd}'VV<  C AbG /~lRwG&dnG /~lRwPNG  IHDRGsRGB pHYsjjGdIDATx^ U}CB$XZ֊B`}R[T`}\Q{[ŏ+Zm(ڒP^ZZI@#!<:geek왽|Nvfߵffg{jrxך= @m'3* /L._va,\xdC$@vܱg[\ y~g?w_'ooo/ @h;I;~o7oE;G??*}'ZyGM>ľJ N&0gށ9s7~7xgf?}ǎvdL@܁#=ik\zکgرwݷoܓX  uԂ#<,?yX0r޵I6Cއnhg|pRE9Y Y#t$ ]fd{pwDz -;,?z9?k~q%Blk?}N/=zb®ûfRt|xW;}˟׭yc';?ן]oqfd^gpɢ5Ȅ @g7 K3_|;8ϓ qw ɧ-v{v1o<|T~M/}uk.Y+=gߜW֙_.b@h^rġws ?{<_ q2ߘY0g|dhzk_>cOzb|}χu3裏] '__8p b >ug_p4=6 6oy9sf`t~㥧BOӽ=C\ux{9;15ݭ߼# 'G?yl[>Lf;zH4[>Zǂ)8/@@%twղM6:np{y򦫰LMLؿkmMzz`z#{Gb#b/,l oL %fJߥD6/]A' a>S]]]ou!-NLK)mm f{5|WXe~7=qƩCأ^EW_ڼQNUo*pOz_묳N, hKW O}[žR~ZTN#2<+w9 g[{Zqb̶[ խޏe-Y_ ݦg>>YC뾦>ub%e}"챟z/sn=k)O/7Wv@׼Oxbs?.~]O]?e[zL ٟlٸӞ闿o/?X-L'9q׾Ht֧ډ붋O̲}j-''Ƨo'_糧y+HwFp>uC_c?{O_{vM}_֗nw^zc2;>1΁#^-ZJک ʕ9^S٣}-cXiHtzS=Z("5(M)as4Tvd6& 10[Mpe+ǺCv?R^LATEBK #Kl& ĸLYmRJʪa:QCM7SDVC5&.+&l=4odww?oxq+z'm>ƟmoYU[PpUw Monpz sYp`B;Woθzsg: 2M3<3}"UfCа }4tRdf~[PIoz3gx/⍭S P`kC@m*Qc*c:QmO '"ߙ ˷r!lkm6}dHlRwC2l4oFeW<yUϸg;_wVw櫟WK">~(}'}CEz|+R]+cSJ*Po₌ L`bfT-)=$U x-'2Riͤ% & Ez.>:[%L@qyXX6G=ZuӉOlN~j8K9|bJ~m&Tzњie {d|T`˜z@Egm#ޘ1t;ﶏ[y;G3{}~ʼno{KDw/{`[gN~z=6*ZN37~WAEWo₌ LGbbgȌ=Vl/*):ߊs4R0)I|m>? bFM\u,K`lu$ \,}`\}ÛڤUt"T9 TebBVɷ{Z>G mO'^J~΁Ί}P,ȦJ~?[byyu??gsɿT AY ʻ==ā`e̬#eMXNTz{#[BtzRGGef$td ۋ̷‡fU/ޔy<'f4LV3 TKGg,K_=hcik&hrS f)Da~']]/=\k3 ;Gk;Ir608]fl{=Ak^ {54ɧb#b/'3:+_]o3on䁪m_ZU /Yo,y7޶eyt ek_ҸOK]]' /}{D_"wGۿ09|^+YNش'S=~i\-OOw#ai@~KY7۾G ?0۝u =OZ6r'Λgn19j~EGf_nf7~k|Ao}fUKil4}OU E"kЇm*?]T:儦9ot=pl4b 4k͂}9)fn)v`^viFG%W<$7kR̝6\v.NLP'osDǃ i`_do]?3z̪rk<~77\wd3Lhܮ#-YOi]>O?qeۻW@$ŧϜSGsLG?IJ5d8G@]׸}E7u}/}Liqc<+QºUYэ4Dܧ)Ϋ`J˲_rǝa8 BK ^}̑ˎ^d@̍C~`ǖ'M:.=훧wdb/;iyML:{̢g8O>F}= ucƭwjw1Us|4Ym0rs>?x0h_^v^WQL o _rڟfƉxkNvZگsY#~5,̶/G^C)  lۺ?(Z;&q1fgN3*~7.Zt̶?  @H.. xN`F-[ tdZ\!@7 C@'@;*Nٮx> t軤_ + ,?FM/ #2|E;ITRŸjF`KG/ 6Ht";IecW~q xK`ף1;mG@_R.ܓ$@ f?{]Uޱc#C[d۾}mwݻKR=p'L%'iV@ ؾ9Ís'ܡ9wϞ@;?]F.(쫫K'k:p. ;| yG}$=5)[CgtZG4[.z@<~ɶꥁ=N5^}XLNJ53#KunfuY}uY}8_8W*Cfwugc%t[K-r86nKʛ˪;el;WzO 3FL53adYc ^R%UTR1 "͖6mGPm2rwaMMQ/NRf@BN͸]5p[f>Ոc&/"a=&ON jcY(2VTQ$L']3L\5ǃCC(VM6[$K虲WI o6j\"uZ*pkKǑ>,AYJ3{HJBt puVF:)?IIgu*2O8H8EpY"ZsTЩyԞ+W77oq8@5v 1sٺsn84uF* :>KcLdޑ<:mdf0VZZJ[`7Oo{۹[rhro[els5"N–3yg:XEƩ%c%GOf3ԬCd` "Z-bBUٸ4\rgqAǟմH썝~ xfKs:U;;{թ~vj1H}N3I)6sQmUVfȝ҂{5f£,#yGkzz3jfUT͟L1.m|dd@&*@4;?MDžlaq1+/^1-el{ȑ7*!wYsUW_n݆ o:飗(׭tD;yp֭wxw==s[}mwXL_RyvIxq x`~ɸũ2zz{}73_i?c_rcfΜWtpEu*f$ OI͋eM~i/X˃YU] Uј^̼e:|>.rdH8B$M Drx7kxZ+jeؔTFN- >67VwLҼXV׫ʚ1;zfqA32/2k7=d=}|V@Bpr1[!N3Ų-­9DF{q-̨--H>pz%B}zav_Ƒ\PR%ՃrYLHR˶7[:=i0 PRd;<2yn)M~xz7nfYjQG,~ '*KMK)5e}Q>aduif}nzp2S\̑Z(vYCT2%3Z2Yy*gB.k,JBVn{wje(8"W&3HL\0UD. XnN"]72<ǂI@dRړ}JI{0A%/DZ{qVnxX{śϨUvRDҘ)&92q'[[ v ^Vj8#`t,a'kqnwO!lq~7uW2voQ]˼"+R* tw9YMNEg׹ RtJf U#@@nԽm}屺D*|_S񣯏4.]Qަ#t=B>2u]ْf\T 1875cEDtlBG&rt=ULz67#Ss<[[ρ"`ʄ ŭ`HsEҥI ExَCi8*Is\Ѷ/eJI8OjUQg{Zc@~ɶFƉngLXm3ET 9O$2oHu"A(tVxx^kNqʧXR1陜ly>Si`.&G&/"wK=JnMi*#;CjFQ\_2vj~:Een&w=ϲN}\2H턩HUiלgquYYueJc;8&atqR[&4~CV?MߙDMX|vfG"tنQ\4zۻ QHK/Mb8 J@+|I;NKʿ qRR v[S) @ d;5@Bn v* !lF@@[ʶucecbTN8%Qe5άծ`Uo039@θlq?4Sĸ(N-=FW0%'AX8қYc9"QKEƙj,'_"sk gԚz$L=$F ;Ъ75fx׌lYuUK7s 7䮫]OùК(@ZžS32 ,Ȑ\&!#ix":$82t-*4]@aԃ@SCL=:.ʿ>I4&r$|=t9^ʊȼN' gdF: {6CҟTᛖ(Os-nST 2Mv\e +.ӣQkqErqRִUו0k.MsTڟ@,S+u!  P?v܄;n#A5swg\4i5 L^pR'VczF7w:9 Wc̬+Y;zvO7!ZIY{Y&Td~Y<q=G{Vړ ʥsOu!#6l8N2]BO{'wθVA݇;, $*V+G),6]_bC'2@@W@@  Pdx @.*.!@@W@ D@_n~{줋u&d3۝!j3eȶ7MA  4v!> xC) FN# o 4@\x ZwK"l? 0jdu}w -j6Y @ M T]"P@M T]"P@M T]"PTry;GǍR@6<اeu 5jLR @@5"lר1INٮ{  Ԉ]$xLz<˝MMh@w@@p.ku&d3۝!@J6AC@g@;*Iٮd4 t&d3۝!@J6AC@g@;m l+,]ֆ&J 4!@0ݼ)"ۭL B ۅ`  @VP@@!B0 v+(S l+,]FXv6=Cxs)ȶ@ ȶ$L @~@h 8@ a@G; @ @m?ځ( xs)u@!6hZ:d!@.$y@@@;IBٮKK td!\/wJ4)! $l+,]ց]M7 T]"P@M T]"P@M T]"P@MZDVX<+EF5@=k@M 0VӮ괐V>@@nvnt j@M΍ V@[M Йܟm˳:@@\/zSjQQgmp @mz @24Bm @24Bm @24Bxs)U?>v>n `<,[:M׀ T]"P@M T]"P@MZAz<˝R+ڌ:$l{,:p. c!tv:#, @@=i€ @a@IC @  @'mO0 @tFX@p. +QpR9v嚌!PI<'U4_ @ M׀ T]"P@M T]"PTtyVX;7Cne! xs)e@i 5jLR @@5"lר1INٮ{  Ԉ]$@;d-L~ P#vT 7\/wJ~6ѕE.,~!O `@ @@+ ۭL B ۅ`  @VP@@!B0H!s\Nױmz@ ? Kgȶ@ ȶ$L @~@h 8@ a@G; @ @m?ځ( ܟm˳:ːbdnO `gPL Pv]Z< @ Ȥ@u!lץ%:LtyVMJ!l;B \/zS.DB٦@*CٮLS( @٦@*CٮLS( @٦@*CٮLS( @٦@-"s\NEF5@=k@M 0VӮ괐V>@@nvnt j@M΍ V@[M Йxs)uf/"k!l p. kQQgmp @mz @24Bm @24Bm @24Bm @24Bm p}GΟ`9|dx޼s[m zDGE߿tv=s;vl}z^|pl۷o޶{wI2P,b|A66HVE,?JS~&=00488gppwa644whhݳgxcqC@GCH*M_$Sd{v=s5^yx'wPC@Q|睿l;Gq È?"~4˶߂?)vwCQw(uvT YO@L(VϖqupO> hF'Ї_"3CRu+͖ͼJޞn6@됣gqFŅ4V #tzGC/hJF ^Z*ME&r-' Qc(6N6me 4 #tΉě_!vcyeN@-Xf"r weQ\@0nЙ ?e;i6mzx4 ;oܸQ&˖- % 4' #tFG/xJY$ׇt*UV+1SPC# P(֚-?RiQ0RD3#wۮn>.v" 0.-!@3nsdu.1m[]*YpZT%CMmU EUHaooi&3϶Տ*BYT-kL]ct}LYU΁Vlzd+ܭvXr#vNU"O2R.gD.E2 tjq혩No42gJPXFqL-a4"k\ ;wDo>."'$Tq<ێ$5%FWFT$(ɼcU?GRua%~X5ii5%]|Ãy&0rṍ|R%tȟm'n29MZ0Th\F@U&ji%d2ƹYv蕀sG`G̳:pY'bNuޙ Vt?gȨ"/#&PU!9D5-FY̫?l[R Zxe;rn/IWdlHed C氠*yTfU3㆚f|f-[PYj{G m NdL7hl9Rtd#LR@u DVCM[ZćG L+_+Tq<1W̯BNֺp]+smʔvW8&'BU!ǁ=y1+oB.`R;G?ꭼxڽ!R*Ġ{͚Ku6lXID9Uͭ0QǷ8@1n` #jI]5Q81-9>!@&n}x1wۭ ˽=G,!t8av{;t;V"Z&`$ UxI>!(7*SUOrF4G䮱ܨu"$3<\f=ZS҃'Y܋d;3)tU+ϑj7 R9BCc }rй4lVN-+Vɬq*;O"L] d̥Tr>ͅ2{#-@8i8>}`IUr(rީ-WNd329dr|H-j`aqw49A*#NG7y`&xӃUTEAۘ[s6T`W;/V~1T%H&`}<>XRLfq+$нfͥW]}ٺu6餏^>S<3sO<3>7Z>S/7 ֒ݬ 8dj=*(%vߊ? ;>U;Bs_بSl<vI!P޶ fѲ-+T;jyD@@۸dd+];ǪKrI!P޶ wT@LE+>zAf @|w\@2l>P yѲ-.\5!@@@+Vqea @@ֲ̟]{I @+T @@ @+T @@ @+T @@ @+T @@ H˖MoEԧ.\l +@;tvbz[$A $R!. [ZT.N L lMdIi$'>ZgRdd# jC l˜Um zgV}Uܪ=Z{BdkH*A l[SR-*t\yxLIjoR !+ae2qmRu7I7 J6&:jy2{*%zk5>5ꔁc֎1 8mL$=i+9=ޣU S3%M @ @5^uemذO^qm7Z+. Mark MeyerDC:\Documents and Settings\All Users\Desktop\labman 8-9\LABS\lab7.doc Deborah Hovland & Kelly Bucheger:Intellectual Baggage:Desktop Folder:Lab Text:LABS:LAB7.DOC Deborah Hovland & Kelly BuchegerBIntellectual Baggage:Desktop Folder:Lab Text:Revised Labs:LAB7.DOC Deborah Hovland & K!!!!!! 9  '<. ef  @ANO$%b c @ A 0 1 c d v w Q R efno /BUhi89;<*+,./    34;<>Omt0=*+-={TUWh;<>OajQ[Z[\ """"X$Y$$$$$$$$ %%%&&F'R'^'j'u''''''''n(o(p(((+)Z)8*:*;*<*****+++,,- --- -)-1-2-s-t->.!!!!!!!!!!!!!ɫ !!R!!!!9!!!!!!!!!!a!!!!!!!!!!!!a!a!!!g!!)'#!!!!!!a!a!a!a!a!a!!!!!!W2!!!!!V!2!!!!a!!4 !!!!!!W2!!! tY a tattT  a tattt&Z a tatt a tatt a tattT  a tattt&Z!elly BuchegervIntellectual Baggage:Kelly s Stuff: Canisius Lab Down & Up:Fall 2002:Lab Text:Revised Labs: RE-revised labs:LAB07.DOC Deborah Hovland & Kelly BuchegervIntellectual Baggage:Kelly s Stuff: Canisius Lab Down & Up:Fall 2002:Lab Text:Revised Labs: RE-revised labs:LAB07.DOC Deborah Hovland & Kelly BuchegervIntellectual Baggage:Kelly s Stuff: Canisius Lab Down & Up:Fall 2002:Lab Text:Revised Labs: RE-revised labs:LAB07.DOC Deborah Hovland & Kelly BuchegervIntellectual Baggage:Kelly s Stuff: Canisius Lab Down & Up:Fall 2002:Lab Text:Revised Labs: RE-revised labs:LAB07.DOC Deborah Hovland & Kelly BuchegervIntellectual Baggage:Kelly s Stuff: Canisius Lab Down & Up:Fall 2002:Lab Text:Revised Labs: RE-revised labs:LAB07.DOC Deborah Hovland & Kelly BuchegervIntellectual Baggage:Kelly s Stuff: Canisius Lab Down & Up:Fall 2002:Lab Text:Revised Labs: RE-revised labs:LAB07.DOC Deborah Hovland & Kelly BuchegervIntellectual Baggage:Kelly s Stuff: Canisius Lab Down & Up:Fall 2002:Lab Text:Revised Labs: RE-revised labs:LAB07.DOC@<*<*C<*<*8 # 5OJQJOJQJppHGCJmH "pHGCJmH 5OJQJFpHGCJmH  -IJM z  R ^ h m n 089CFTYetUY`d4>V`mst}it01CPSZ]^   o%4 !,]a./;>Omt0=-={Wh>OajQ[".[\_uz|v !!o!!!!""""##############$2$H$Y$Z$$$$$<*;.<.`@a @a"JataZJ`@a@a@a@`@a@`@ata$ta@a!@`!@a`JaxJa|"@aJa"@aJa"@aF#@a(Ka8Ka:Ka#@aNKana na"na@natnanapara:raHrapararara.tara#@a sa#@ajKaH$@aKa`$@at$@aKa$@aKaK`$@a6ta%@a~La%@aLaLa&@at&@aLa&@a&@`MaMaMa&MadMafMahMaMaMaMa8taN`&@a Na'@a Na'@aLNaPN`.(@aNa(@aN`b)@aNa+@aNa+@aBt`+@aNaN`-@` -@a2.@aNaP.@aNa.@a.@a.@a.@`.@a^OadOa&PaDtaPa.@aPa"/@aPaN/@aPa/@`/@a/@aXtaPaPa4Q`1@`1@a8QanQaQaQaRaRadRalRanRaRaRaRaS`0S`2Sa4S`6S`8S`XSaSaS`S`S`S`S`4T`BT`U`6U`U`U`W`W`PX``X`Z`*Z`Z`Za2[a8[aN[`P[`[`[`\`.\`$]`F]`]`^a^a^a_a_a^_ah_`_a_`_``a`a`a1@aD`a1@`H`a``a02@ `22@ `42@ap`ar`a62@av`a`a`a~2@a`aa`bababa$ba&ba\ba2@ahba2@arba23@azba04@ab`5@aba>5@ab`b5@abaj8@abal8@a8@abababacap9@a ca9@aBca9@aPcac`cacacaFd`Hd`;@ `;@`~F@`|N@GTimes New Roman5Symbol3 Arial? Courier New"qh+j-j [8@8 NormalCJ_HaJmH sH tH B@B Heading 1$$@&a$CJ OJQJ^Jf@f Heading 2)$p$d@&N^p`56OJQJ\]^JR@R Heading 3$ @ Hp@&^p5OJQJ\^J<A@< Default Paragraph Font<C@< Body Text Indent p^p.U@. Hyperlink >*B*phHR@H Body Text Indent 2 ^ `5.J !!!!!!! !  v '5*5. Sef  @AMN#$a b ? @ / 0 b c u v : ; NOYZ(;NO!" !#4RYj""`hy9:<M{ !#4FO6@?@Ayzv w !!u"v"P$Q$}$~$$$$$$%%%&&>'J'V'b'm'y'''''''f(g(h(((#)R)0*2*3******++,,,- ---"-*-+-l-m-7.!!!!!!!!!!!!!ɫ !!R!!!!9!!!!!!!!!!a!!!!!!!!!!!!a!a!!!g!!)'#!!!!!!a!a!a!a!a!a!!!!!!W2!!!!!V!2!!!!a!!4 !!!!!!W2!!! tY a tattT  a tattt&Z a tatt a tatt a tattT  a tattt&Z!!!!a!!!!N=!!!!!!!!!!!+!!!!!!!!!!!!!!!!!!!!!!+!!!!!!a!!!!!!E!!!!a!a!a!a!a!a!a!!!!M@ c u v : ; NOYZ(;NO!" !#4RYj""`hy9:<M{ !#4FO6@?@Ayzv w !!u"v"P$Q$}$~$$$$$$%%%&&>'J'V'b'm'y'''''''f(g(h(((#)R)0*2*3*4******++,,,- ---"-*-+-l-m-7.AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA(@@@!!!a!!!!N=!!!!!!!!!!!+!!!!!!!!!!!!!!!!!!!!!!+!!!!!!a!!"!!!!!E!!!!a!a!a!a!a!a!a!!!!NA d v w Q R efno /BUhi89;<*+,./    34;<>Omt0=*+-={TUWh;<>OajQ[Z[\ """"X$Y$$$$$$$$ %%%&&F'R'^'j'u''''''''n(o(p(((+)Z)8*:*;*<*****+++,,- --- -)-1-2-s-t->. AAAAAAAAAAAAAAAAAAAAAAAAAAA(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@66666666666666666666666666666666666h h h h h h h h (h *#*#*#*#*#*#*#*#*#*#NKs3 s<#?'W^Ld !#$456?'"Unknown Deborah Hovland & Kelly Bucheger"+4:)/GK Y _ bhqwf l b!h!A,J,7. Mark Meyer]C:\Documents and Settings\meyer\Application Data\Microsoft\Word\AutoRecovery save of lab7.asd Mark MeyerDC:\Documents and Settings\All Users\Desktop\labman 8-9\LABS\lab7.doc Deborah Hovland & Kelly Bucheger:Intellectual Baggage:Desktop Folder:Lab Text:LABS:LAB7.DOC Deborah Hovland & Kelly BuchegerBIntellectual Baggage:Desktop Folder:Lab Text:Revised Labs:LAB7.DOC Deborah Hovland & Kelly BuchegervIntellectual Baggage:Kelly s Stuff: Canisius Lab Down & Up:Fall 2002:Lab Text:Revised Labs: RE-revised labs:LAB07.DOC Deborah Hovland & Kelly BuchegervIntellectual Baggage:Kelly s Stuff: Canisius Lab Down & Up:Fall 2002:Lab Text:Revised Labs: RE-revised labs:LAB07.DOC Deborah Hovland & Kelly BuchegervIntellectual Baggage:Kelly s Stuff: Canisius Lab Down & Up:Fall 2002:Lab Text:Revised Labs: RE-revised labs:LAB07.DOC Deborah Hovland & Kelly BuchegervIntellectual Baggage:Kelly s Stuff: Canisius Lab Down & Up:Fall 2002:Lab Text:Revised Labs: RE-revised labs:LAB07.DOC Deborah Hovland & Kelly BuchegervIntellectual Baggage:Kelly s Stuff: Canisius Lab Down & Up:Fall 2002:Lab Text:Revised Labs: RE-revised labs:LAB07.DOC Deborah Hovland & Kelly BuchegervIntellectual Baggage:Kelly s Stuff: Canisius Lab Down & Up:Fall 2002:Lab Text:Revised Labs: RE-revised labs:LAB07.DOC@MMCMM8 # 5OJQJOJQJppHGCJmH "pHGCJmH 5OJQJFpHGCJmH t -L y ~ ; G Q V W w !",/=BN]w>BIqr}M)AKX^_hOZe{})69@~U BFjnox #4RY""`h<M{#4FO6@@ADZ_anz[ u w } T!p!!!!!!"################$*$@$Q$R${$|$~$$4.5.`@a @a"J`@a@a@a@`@a@`@a!@`!@a`JaxJa|"@aJa"@aJa"@aF#@a(Ka8Ka:Ka#@aNKana na"na@natnanapara:raHraparararapara#@a sa#@ajKaH$@aKa`$@at$@aKa$@aKaK`$@a~La%@aLaLa&@at&@aLa&@a&@`MaMaMa&MadMafMahMaMaMaM`&@a Na'@a Na'@aLNaPN`.(@aNa(@aN`b)@aNa+@aN`+@aNaN`-@` -@a2.@aNaP.@aNa.@a.@a.@a.@`.@a^OadOa&Pa.@aPa"/@aPaN/@aPa/@`/@a/@aPaPa4Q`1@`1@a8QanQaQaQaRaRadRalRanRaRaRaRaS`0S`2Sa4S`6S`8S`XSaSaS`S`S`S`S`4T`BT`U`6U`U`U`W`W`PX``X`Z`*Z`Z`Za2[a8[aN[`P[`[`[`\`.\`$]`F]`]`^a^a^a_a_a^_ah_`_a_`_``a`a`a1@aD`a1@`H`a``a02@ `22@ `42@ap`ar`a62@av`a`a`a~2@a`aa`bababa$ba&ba\ba2@ahba2@arba23@azba04@ab`5@aba>5@ab`b5@abaj8@abal8@aba8@abababacap9@a ca9@a"caBca9@aPcac`cacacaFd`Hd`;@ `;@`|N@GTimes New Roman5Symbol3 Arial? Courier New"qh+j+jg&5% O 0d-Lab 7: Low-Level Languages Mark Meyer Deborah Hovland & Kelly Bucheger@@@@@@@@@6666666666666666666666666666666666h h h h h h h h (h *#*#*#*#*#*#*#*#*#*#NKv3 s<#?'W^Ld !#$456?'"Unknown Deborah Hovland & Kelly Bucheger"+4:)/JL Z ` } }!!H,Q,>. Deborah Hovland & Kelly Bucheger:Intellectual Baggage:Desktop Folder:Lab Text:LABS:LAB7.DOC Deborah Hovland & Kelly BuchegerBIntellectual Baggage:Desktop Folder:Lab Text:Revised Labs:LAB7.DOC Deborah Hovland & Kelly BuchegervIntellectual Baggage:Kelly s Stuff: Canisius Lab Down & Up:Fall 2002:Lab Text:Revised Labs: RE-revised labs:LAB07.DOC Deborah Hovland & Kelly BuchegervIntellectual Baggage:Kelly s Stuff: Canisius Lab Down & Up:Fall 2002:Lab Text:Revised Labs: RE-revised labs:LAB07.DOC Deborah Hovland & Kelly BuchegervIntellectual Baggage:Kelly s Stuff: Canisius Lab Down & Up:Fall 2002:Lab Text:Revised Labs: RE-revised labs:LAB07.DOC Deborah Hovland & Kelly BuchegervIntellectual Baggage:Kelly s Stuff: Canisius Lab Down & Up:Fall 2002:Lab Text:Revised Labs: RE-revised labs:LAB07.DOC Deborah Hovland & Kelly BuchegervIntellectual Baggage:Kelly s Stuff: Canisius Lab Down & Up:Fall 2002:Lab Text:Revised Labs: RE-revised labs:LAB07.DOC Deborah Hovland & Kelly BuchegervIntellectual Baggage:Kelly s Stuff: Canisius Lab Down & Up:Fall 2002:Lab Text:Revised Labs: RE-revised labs:LAB07.DOC Deborah Hovland & Kelly BuchegervIntellectual Baggage:Kelly s Stuff: Canisius Lab Down & Up:Fall 2002:Lab Text:Revised Labs: RE-revised labs:LAB07.DOC Deborah Hovland & Kelly BuchegervIntellectual Baggage:Kelly s Stuff: Canisius Lab Down & Up:Fall 2002:Lab Text:Revised Labs: RE-revised labs:LAB07.DOC@N" 5OJQJOJQJppHGCJmH "pHGCJmH 5OJQJFpHGCJmH ( -IJM z  R ^ h m n 089CFTYetUY`d4>V`mst}it01CPSZ]^   o%4 !,]a./;>Omt0=-={Wh>OajQ[".[\_uzto understand just what is the purpose of a given line of code.if not Close the assembler window, returningfrom the Examples menu, Here s the program that will load into memory (the opcodes are separated from the operands here just to make it easier to r|v !!o!!!!""""##############$2$H$Y$Z$$$$$<*;.<.0@1 @1"J1t1ZJ0@1@1@1@0@1@0@1t1$t1@1!@0!@1`J1xJ1|"@1J1"@1J1"@1F#@1(K18K1:K1#@1NK1n1 n1"n1@nead):Even with tand operands separatedit s still not easy to make out what this program doesCMwell, sort ofSure, t JNG couldwith an identifier that tells what its function is,Let s take a look at a version of this program in assembler that takes full advantage of the power of identifiers to create an easier to comprehend program. First, cclearsmenu, once you understand how assembly language uses identifiers. To help you understand how assembly language uses identifiers, the chart below goes step-by-step through each line of the machine language version of this program, showing its corresponding assembly language version and explaining the identifiers used: Memory LocationMachine Language instructionAssembly Language instruction00100000000010100 Load 20 into the accumulator.LDI 20 LDI: the opcode. 20: the value contained in the operand, which should be loaded into the accumulator.11001000000000100 Jump to memory location 4 if the value in the accumulator is < 0.TOP JNG DONE TOP: identifier given to this memory location, since it represents the top of a loop that first examines the contents of the accumulator to see if it is < 0. JNG: the opcode. DONE: the identifier given to memory location 4 (see below).2001000000000101 Subtract the value in memory location 5 from the accumulator.SUB ONE SUB: the opcode. ONE: instead of referring to memory location 5, this instruction refers to an identifier called ONE (see below). Since ONE has a defined value of 1, 1 will be subtracted from the accumulator.31000000000000001 Jump to the instruction at memory location 1.JMP TOP JMP: the opcode. TOP: instead of referring to memory location 1, it refers to the identifier TOP. At this point the program jumps up to the top of the loop.41111000000000000 Stop the program.DONE STP DONE: identifier given to this memory location, since it contains the instruction to stop the program. STP: the opcode.50000000000000001 The value 1 is stored in this memory location, to be referred to by the program as needed.ONE DAT 1 ONE: identifier for this chunk of data, since it has the value of 1. DAT: this is not one of the opcodes; instead, it is a pseudo-op that tells the assembler software that this is data. 1: the value of the data that is to be linked to the identifie1tn1n1p1r1:r1Hr1p1r1r1r1.t1r1#@1 s1#@1jK1H$@1K1`$@1t$@1K1$@1K1K0$@16t1%@1~L1%@1L1L1&@1t&@1L1&@1&@0M1M1M1&M1dM1fM1hM1M1M1M18t1N0&@1 N1'@1 N1'@1LN1PN0.(@1N1(@1N0b)@1N1+@1N1+@1Bt0+@1N1N0-@0 -@12.@1N1P.@1N1.@1.@1.@1.@0.@1^O1dO1&P1v1v1Dt1P1.@1P1"/@1P1N/@1P1/@0/@1/@1Xt1P1P14Q01@01@18Q1nQ1Q1Q1R1R1dR1lR1nR1R1R1R1S00S02S14S06S08S0XS1S1S0S0S0S0S04T0BTg&1&Q0d.Lab 7: Low-Lev'     !"#$%;<=ABCDEFG0U06U0U0U0W0W0PX0`X0Z0*Z0Z0Z12[18[1N[0P[0[0[0\0.\0$]0F]0]0^1^1^1_1_1^_1h_0_1_0_0`1`1`11@1D`11@0H`1``102@ 022@ 042@1p`1r`162@1v`1`1`1~2@1`1a0b1b1b1$b1&b1\b12@1hb12@1rb123@1zb104@1b05@1b1>5@1b0b5@1b1j8@1b1l8@18@1b1b1b1c1p9@1 c19@1Bc19@1Pc1c0c1c1c1Fd0Hd0;@ 0;@0~F@0|N@GTimes New Roman5Symbol3 Arial? Courier New"qh+jƖ2jg&6&Q0d.Lab 7: Low-Level Languages Mark Meyer Deborah Hovland & Kelly BuchegeraLaLa&@at&@aLa&@a&@`MaMaMa&MadMafMahMaMaMaM`&@a Na'@a Na'@aLNaPN`.(@aNa(@aN`b)@aNa+@aN`+@aNaN`-@` -@a2.@aNaP.@aNa.@a.@a.@a.@`.@a^OadOa&Pa.@aPa"/@aPaN/@aPa/@`/@a/@aPaPa4Q`1@`1@a8QanQaQaQaRaRadRalRanRaRaRaRaS`0S`2Sa4S`6S`8S`XSaSaS`S`S`S`S`4T`BT`U`6U`U`U`W`W`PX``X`Z`*Z`Z`Za2[a8[aN[`P[`[`[`\`.\`$]`F]`]`^a^a^a_a_a^_ah_`_a_`_``a`a`a1@aD`a1@`H`a``a02@ `22@ `42@ap`ar`a62@av`a`a`a~2@a`aa`bababa$ba&ba\ba2@ahba2@arba23@azba04@ab`5@aba>5@ab`b5@abaj8@abal8@aba8@abababacap9@a ca9@a"caBca9@aPcac`cacacaFd`Hd`;@ `;@`|N@GTimes New Roman5Symbol3 Arial? Courier New"qh+j+jg&5% O 0d-Lab 7: Low-Level Languages Mark Meyer Deborah Hovland & Kelly Bucheger [8@8 NormalCJ_HaJmH sH tH B@B Heading 1$$@&a$C FMicrosoft Word DocumentNB6WWord.Document.8 ՜.+,D՜.+,H hp|  '7:Q.b Lab 7: Low-Level Languages Title 6> _PID_GUID'AN{DEA56087-B9A9-11D6-A2DE-003065111A3E} Oh+'0 $0 L X d p|'Lab 7: Low-Level Languages0ab  Mark MeyerLarkNormaly!Deborah Hovland & Kelly Buchegerros8boMicrosoft Word 8.0e@'eq@J % MQex{ "`>B*~H Y!^!r!|!<#=#L####$$$$%%&4&?'8KNKOJQJ>*56OJQJH* jU jbU j#NU 5OJQJ jU6 5OJQJ56OJQJ5Lef  @A  Hp H  ppef  @A O P   % & c d AB12dewx~{yyy]^./\]jkmnDE  \|}  / O P   % & c d AB12dewx<=qr_`s p @ Hp H "Gfl<=qr_`sde  $%"(12bc67Nsde Hp H p @ H  $%"  p   p$d H Hp HH T ` l w p!q!r!!!-"\":#<#=#>#####$$$%&&&&&#&,&4&5&v&w&?'.H T ` l w p!q!r!!!-"\":#<#  @ p   $  <#=#>#####$$$%&&&&&#&,&4&5&v&w&?' p @ Hp H p H p$d H H  d 1h/ =!"#$@%de list in this manual on p.xx.From what we ve seen s,straightforward translation of machine language, easier to read certainly but, using identifiersAn identifier meaningful identifiers such as or SALESTAX With identifiers, it s easier vN+@8B7@=l@Cm&-to-s l?'jbjb xkk<.]}9X;;;;;< mWmWmWmWWL%IqAXAXAXAXAXAXAXAX)d+d+d+d+d+d+d,qsWd ;AXAXAXAXAXWd#Y;;AXAXWX#Y#Y#YAX;AX;AX)d;T=<T;;;;AX)d#Y #Y)d;;)dWŹ%IHmW#Y)dLab 7: Low-Level Languages OBJECTIVES Study simple machine language and assembly language programs. REFERENCES Software needed: 1) a web browser (Internet Explorer or Netscape) 2) applet from the lab website: a.) Super Simple CPU Textbook reference: Chapter 7. BACKGROUND Chapter 7, Low-Level Programming Languages, discusses the basic concepts of machine and assembly programming. In this lab we will use the same Super Simple CPU applet that we used in Chapter 5 instead of Pep/7. You should review Lab 5 for basic instructions on how to use the Super Simple CPU. ACTIVITY In Chapter 5 we studied the fetch-execute cycle while watching the Super Simple CPU run a few programs. In this lab we will look at a further refinement, assembler programming. Start the applet and click on the Assembler Window button. When the window appears, click Load Example. This puts a short assembler program in the left window. Now click on Assemble. Heres what you should see:  The machine language equivalent of the assembler program appears in the right window. Since there are 16 words in the memory of the Super Simple CPU, the assembler creates sixteen 16-bit values, one per memory word, padded out with 0s as necessary to make up 16 bits. Assembler language (also called assembly language) is the human readable encoding of machine language instructions. There is one assembler line per machine language instruction. The Super Simple CPU is so basic and small that one instruction can fit neatly into just one memory word. As discussed in Lab 5, the first 4 bits are the opcode and the last 12 bits are the operand (see Lab 5 if you need a reminder). (Also remember from Lab 5 that you can see what the numerical 4-bit opcodes are and what they do from the help buttons on the main window of the applet, or from the opcode list in this manual on p.xx.) To demonstrate how machine language can be translated into assembler language, well start with the first machine language instruction that appears in the program we loaded into the CPU applet: 0100000000000101 (Believe it or not, many early programmers, including some still alive today, programmed computers in lines of binary machine language code just like this. Imagine how tricky it is to create, and especially debug, a large program in machine language! Thats exactly why assembler language was invented around 1952.) Lets convert this instruction. First, assembler language replaces the 4-digit opcode with its 3-letter mnemonic (this strangely-spelled word the leading m is silent comes from a Greek word meaning to remember). Looking up 0100 from the opcode list, we see it corresponds to LDI, the load immediate instruction. So the assembler language instruction should begin with LDI. Next, we convert the 12-digit binary operand into decimal, which gives us 5. So the complete assembler language equivalent of 0100000000000101 is LDI 5. (If you wish, you can specify the operand as a binary number instead of a decimal number. However, to keep Super Simple fromr ONE. Let s look at that final ofr program: ONE DAT It , because there is no machine opcode for DATInstead, DAT is what is known as a pseudo-op, a directive that is meaningful for the assembler software but that does not correspond to an opcode commandel Languages Mark Meyer Deborah Hovland & Kelly Bucheger FMicrosoft Word DocumentNB6WWord.Document.8 ՜.+,D՜.+,H hp|  '7:Q.b Lab 7: Low-Level Languages Title 6> _PID_GUID'AN{DEA56087-B9A9-11D6-A2DE-003065111A3E} Oh+'0 $0 L X d p|'Lab 7: Low-Level Languages0ab  Mark MeyerLarkNormaly!Deborah Hovland & Kelly Buchegerros7boMicrosoft Word 8.0e@f*@8B7@=l@x|l& in the assembler code  f1 hereDunderstand  s \?'jbjb vkk<.]XXXXXX L6(*************,79V* XV*XXlXXX(*lTTXXXX(*v (*XX(*PX2ŹH(*Lab 7: Low-Level Languages OBJECTIVES Study simple machine language and assembly language programs. REFERENCES Software needed: 1) a web browser (Internet Explorer or Netscape) 2) applet from the lab website: a.) Super Simple CPU Textbook reference: Chapter 7. BACKGROUND Chapter 7, Low-Level Programming Languages, discusses the basic concepts of machine and assembly programming. In this lab we will use the same Super Simple CPU applet that we used in Chapter 5 instead of Pep/7. You should review Lab 5 for basic instructions on how to use the Super Simple CPU. ACTIVITY In Chapter 5 we studied the fetch-execute cycle while watching the Super Simple CPU run a few programs. In this lab we will look at a further refinement, assembler programming. Start the applet and click on the Assembler Window button. When the window appears, click Load Example. This puts a short assembler program in the left window. Now click on Assemble. Heres what you should see:  The machine language equivalent of the assembler program appears in the right window. Since there are 16 words in the memory of the Super Simple CPU, the assembler creates sixteen 16-bit values, one per memory word, padded out with 0s as necessary to make up 16 bits. Assembler language (also called assembly language) is the human readable encoding of machine language instructions. There is one assembler line per machine language instruction. The Super Simple CPU is so basic and small that one instruction can fit neatly into just one memory word. As discussed in Lab 5, the first 4 bits are the opcode and the last 12 bits are the operand (see Lab 5 if you need a reminder). (Also remember from Lab 5 that you can see what the numerical 4-bit opcodes are and what they do from the help buttons on the main window of the applet, or from the opcode list in this manual on p.xx.) To demonstrate how machine language can be translated into assembler language, well start with the first machine language instruction that appears in the program we loaded into the CPU applet: 0100000000000101 (Believe it or not, many early programmers, including some still alive today, programmed computers in lines of binary machine language code just like this. Imagine how tricky it is to create, and especially debug, a large program in machine language! Thats exactly why assembler language was invented around 1952.) Lets convert this instruction. First, assembler language replaces the 4-digit opcode with its 3-letter mnemonic (this strangely-spelled word the leading m is silent comes from a Greek word meaning to remember). Looking up 0100 from the opcode list, we see it corresponds to LDI, the load immediate instruction. So the assembler language instruction should begin with LDI. Next, we convert the 12-digit binary operand into decimal, which gives us 5. So the complete assembler language equivalent of 0100000000000101 is LDI 5. (If you wish, you can specify the operand as a binary number instead of a decimal number. However, to keep Super Simple fromr ONE. Let s look at that final ofr program: ONE DAT It , because there is no machine opcode for DATInstead, DAT is what is known as a pseudo-op, a directive that is meaningful for the assembler software but that does not correspond to an opcode command. Here, ONE DAT 1 instructs the assembler to changestorelinkcorresponding opcode called useCand willhelp to and modify the code, because usefulsalways seems to undergo as ever-greater demands are made on them. As the old programmer s lament goes:  If the program works, it must be changed! NKKK8SSSS4TBTU6UUUWWPX`XZ*ZZZ[[\.\$]F]]^__``p`b$bLdnp:rHrs^t65 5OJQJ)?'M M2S4S8SXSSSSSS4TBTdTUUU6UUUW4WWW|@Ҩ$$l 8,"$$$p HWWWPX`XXZZZ*ZZZZ[[[[\.\\] ]$]F]]^ܜܜ$$l 8,"$$$^^_```^```bbccJdLdp H H$$l 8,"$ . Here, ONE DAT 1 instructs the assembler to changestorelinkcorresponding opcode called useCand willhelp to and modify the code, because usefulsalways seems to undergo as ever-greater demands are made on them. As the old programmer s lament goes:  If the program works, it must be changed! NKKK8SSSS4TBTU6UUUWWPX`XZ*ZZZ[[\.\$]F]]^__``p`b$bLdnp:rHrs^tv65 5OJQJ*is a descriptive word or phrase used by the programmer to aid in understand the role of a memory address or data. Unlike opcodes, which are a defined set of instructions, a programmer can make That identifier is then used instead of referencing the memory address. can make up the identifiers to suit the situation. For examplememory ?'M M2S4S8SXSSSSSS4TBTdTUUU6UUUW4WWW|@Ҩ$$l 8,"$$$p HWWWPX`XXZZZ*ZZZZ[[[[\.\\] ]$]F]]^ܜܜ$$l 8,"$$$^^_```^```bbccJdLdp H H$$l 8,"$ is a descriptive word or phrase used by the programmer to aid in understand the role of a memory address or data. Unlike opcodes, which are a defined set of instructions, a programmer can make That identifier is then used instead of referencing the memory address. can make up the identifiers to suit the situation. For examplememory in the assembler code  f1 hereDunderstand