From 5a0c4a49c7ae1ed644539156bb81cb9750b1a4ec Mon Sep 17 00:00:00 2001 From: Lauri Koskenniemi Date: Tue, 24 Jun 2025 10:54:16 +0300 Subject: [PATCH] Continued to lesson 28 --- lesson19/l19 | Bin 0 -> 9128 bytes lesson19/l19.asm | 24 ++++++++++++++++++++++++ lesson19/l19.o | Bin 0 -> 1392 bytes lesson20/l20 | Bin 0 -> 9116 bytes lesson20/l20.asm | 28 ++++++++++++++++++++++++++++ lesson20/l20.o | Bin 0 -> 1328 bytes lesson21/l21 | Bin 0 -> 9036 bytes lesson21/l21.asm | 20 ++++++++++++++++++++ lesson21/l21.o | Bin 0 -> 1232 bytes lesson22/l22 | Bin 0 -> 9028 bytes lesson22/l22.asm | 18 ++++++++++++++++++ lesson22/l22.o | Bin 0 -> 1200 bytes lesson23/l23 | Bin 0 -> 9064 bytes lesson23/l23.asm | 25 +++++++++++++++++++++++++ lesson23/l23.o | Bin 0 -> 1264 bytes lesson24/l24 | Bin 0 -> 9064 bytes lesson24/l24.asm | 31 +++++++++++++++++++++++++++++++ lesson24/l24.o | Bin 0 -> 1312 bytes lesson25/l25 | Bin 0 -> 9136 bytes lesson25/l25.asm | 42 ++++++++++++++++++++++++++++++++++++++++++ lesson25/l25.o | Bin 0 -> 1424 bytes lesson26/l26 | Bin 0 -> 9136 bytes lesson26/l26.asm | 46 ++++++++++++++++++++++++++++++++++++++++++++++ lesson26/l26.o | Bin 0 -> 1440 bytes lesson27/l27 | Bin 0 -> 9060 bytes lesson27/l27.asm | 31 +++++++++++++++++++++++++++++++ lesson27/l27.o | Bin 0 -> 1296 bytes lesson28/l28 | Bin 0 -> 9028 bytes lesson28/l28.asm | 17 +++++++++++++++++ lesson28/l28.o | Bin 0 -> 1200 bytes 30 files changed, 282 insertions(+) create mode 100755 lesson19/l19 create mode 100644 lesson19/l19.asm create mode 100644 lesson19/l19.o create mode 100755 lesson20/l20 create mode 100644 lesson20/l20.asm create mode 100644 lesson20/l20.o create mode 100755 lesson21/l21 create mode 100644 lesson21/l21.asm create mode 100644 lesson21/l21.o create mode 100755 lesson22/l22 create mode 100644 lesson22/l22.asm create mode 100644 lesson22/l22.o create mode 100755 lesson23/l23 create mode 100644 lesson23/l23.asm create mode 100644 lesson23/l23.o create mode 100755 lesson24/l24 create mode 100644 lesson24/l24.asm create mode 100644 lesson24/l24.o create mode 100755 lesson25/l25 create mode 100644 lesson25/l25.asm create mode 100644 lesson25/l25.o create mode 100755 lesson26/l26 create mode 100644 lesson26/l26.asm create mode 100644 lesson26/l26.o create mode 100755 lesson27/l27 create mode 100644 lesson27/l27.asm create mode 100644 lesson27/l27.o create mode 100755 lesson28/l28 create mode 100644 lesson28/l28.asm create mode 100644 lesson28/l28.o diff --git a/lesson19/l19 b/lesson19/l19 new file mode 100755 index 0000000000000000000000000000000000000000..b0848de843982520d66fb422f1bd1e4ae1e98acf GIT binary patch literal 9128 zcmeHNK}Zx~6n?v|Wd^l{;Gqs%9n{OX3qskYgc2hUt3s_x%IHq*!0e39%vyrrfQML5 z5)s|%=%ri1>OznkL4njI5-NziEP2Wf8A99l{&8#yf)3sKAH4Ve@BiNaX8G95{PSkd z_jX4j5eh6yb;Rh+LadwZA2|d_1v1G4@ z@A3((?}LZ8V9CA*&b&0KfK)&#AQg}bNCl(hoHymM(E&8th?aGnIj2#XCiA-Pw(;wzc6( zf8Rj5T18=TB~yG-<_n1u-!80r!-GSW>ib_>yaYmvGI%O+>8e**K7o6MrDlXO-!PQ+ zi|y(fO1Vs$R6r^q6_5%@1*8H}0jYpgKq?>=kP1iz{x1dE$8@t@8_!wPqZx*kxNO-* z_L%rI--s9IKZ?Qc*@4CAbB*8Q#rJ-(8KGw6IDh}&!EMM&2%iK#9m3~;&xG(r;GPh^ z0z4AJCh%kkUkAP!!ZX10Av_O!D}?U?-wEM+zz;)s5%@(2KL8f<3Y;lQj}U(f6eYg? z;OhovnSYANcMt*szs7=RDj3HxA@K^iWrvT0fAPM%cP z(nV161;f=RjOkv>n(%k7>Zb1Gw5*S8&2cSTBYncwO?M|LS$#^+YT}GfD1r`c^mdbD zXr>5?soikLbE@s5-3K^+Pe0+nWI=an+{))w6Hm9Vr8pGwn&~>EnNzxLnG9%jbj)!^ z9apun*0QRrBH;)r&UD^Y$BP1Y;aQZxf^if4 z;M1& literal 0 HcmV?d00001 diff --git a/lesson19/l19.asm b/lesson19/l19.asm new file mode 100644 index 0000000..e7fb593 --- /dev/null +++ b/lesson19/l19.asm @@ -0,0 +1,24 @@ + +; %include '../lib/fl.asm' ; local +%include 'lib/fl.asm' ; build.sh + +SECTION .data +command db '/bin/echo', 0h +arg1 db 'Hello World!', 0h +arguments dd command + dd arg1 + dd 0h +environment dd 0h + +SECTION .text +global _start + +_start: +mov edx, environment +mov ecx, arguments +mov ebx, command +mov eax, 11 +int 80h + +call quit + diff --git a/lesson19/l19.o b/lesson19/l19.o new file mode 100644 index 0000000000000000000000000000000000000000..f8340e7759700fe1e48bf7b6a223abc70e7fd4c3 GIT binary patch literal 1392 zcmbVLK}Zx~6n?W>T2VhkRS0q;D3H3j5JK2x$xGQGL&&~2^UwO*u?PQq-}m14-aj+{KU3Fwx-?Cr z*feUOZAR1~3+Kalj+#;bALE(4;_d+CtTL!k;wGuvE%_{T>x!;L;{Ay6EKbcPh%U<- z2i}YAC>Ba}`wmh-aThX2uy|jdc@j&VcNc|aNaiLJ$1|V?Cfa>i1vp5AJ^a8ceC`a%-K11sn0Vf4g{OY z$-}{B`_#c;EvZ!(xbxT7&b8I)-z1tM`g3@2V5pKtd)U`G&)u&><)7)rWZ(1#6~A3C zeW@jp&!Dlmj*d*F_I_(?D_v$`8r4Hw%~bkJmEa?%8n5q!7yS0btW8OcuM*6X1x1E0i-;V_G`)^w!ykGI1vB}Z?jYFy5Z-^5Uv$EJzuni zRj?;|T(=Nq?pcoI=ge%xJkuAhXOdO$EJw(oXRUE7Ylb~hK@ZDHqNj^|+jK&wJGdyL zIm3%seFHz583im+Mym literal 0 HcmV?d00001 diff --git a/lesson20/l20 b/lesson20/l20 new file mode 100755 index 0000000000000000000000000000000000000000..32f65f449b392f41dbb590cf2b12c81967454b58 GIT binary patch literal 9116 zcmeI2O=uHA6vtoMv{nyom4XK?q+Ya_7)!yAix#ygR!Ccrw8e&Pvzmo;lkQH`LZJ&q zBt40Uc(X?jdJ~BjL>sUu6v2xX5sF1v?8$ntQZWACY*I(@;K7s3z?-+fc^^ssnM)=! zb+V^B6beyw)KD!ky}2H4=!CzwCx~=X1d)AIPjxabSG{lp!EOTB!o1i_K^&gYgN@s> z)v56aU>0#$D<0YEVO+0=RzNGD70?Q31+)TM0j+>mKr5gX&2D;q1o&lmaA2quN4c!)dd$^N zWajtj`B>ldI^{o|E-d>otS3;IUqeNrg(-~`#us2^NGTVvY286QZfuh%*L% z0a^YMrXn9X_(ev3D_o_ARzNGD70?Q31+)TM0j+>mKr5gX&#sXl5?`7 zrt4DNa7zg!H_PWWd2-@n4`@KJ>if{!SC0(?~AGvHGS zp9c>sY=g%Yz6`#m@FaLf;TiA^g>QpzDSQX~K;gUKmkQqp%Xyni+Wla!>%CNG~(@k#1wB;1F z%`0LwZ8!mKzJMF_3>*r^^Om4d-b`oRi{ffr8T)72+|*Qcn=g*1OPb|H)Rsk~3Z+Vh$YPlU;p&y%Vn5+U-i$nh2!d+xavCVRp2m~A8a7(B|E`|#KfQ}eFkj?G>f38re^4=h;` A#Q*>R literal 0 HcmV?d00001 diff --git a/lesson20/l20.asm b/lesson20/l20.asm new file mode 100644 index 0000000..5bc33f2 --- /dev/null +++ b/lesson20/l20.asm @@ -0,0 +1,28 @@ + +; %include '../lib/fl.asm' ; local +%include 'lib/fl.asm' ; build.sh + +SECTION .data +childMsg db 'Child process', 0h +parentMsg db 'Parent process', 0h + +SECTION .text +global _start + +_start: +mov eax, 2 +int 80h + +cmp eax, 0 +jz child + +parent: +mov eax, parentMsg +call sprintLF +call quit + +child: +mov eax, childMsg +call sprintLF +call quit + diff --git a/lesson20/l20.o b/lesson20/l20.o new file mode 100644 index 0000000000000000000000000000000000000000..0a6b74ff034dbe5a6b14b05ff322f7a8be7c2eef GIT binary patch literal 1328 zcmbVLJ!lj`6n=Y&Mg@}~qK#rYO|xEt;7?4INns@5`Mv$Q%wgw)nfHC~d+*K6&g|^D%z&aO zl$b&-w8e<}V&Pcmk5C)*|1s{#BdNXya!_j28soM&Z+pyL30}`oke@enyp)+L6I~(ICQ!C#^dzoJoS8;JJ9ZKrf2rLn$p5F!G z*Ghlwd*wHYwur8ekB*G_S(Jx${V%xsWtjP=vXCCCY*2aiLiJmaMm&eY@){~~e(<(l zuV+0@%tGD6YR(_7`tAu5Eq%3(?&UFmXmB_i1W2qdkn>J%Jd3++14 z^kn2?ZtG^0(^UK~N$!o6R{GhrT=Prk`%e*nk1b1u?!jsu^P_*vl7 z62Az1UgB4P$0cq7Pf7eX@Lh?|0MALB@qLLu1b!g#N5D@d{uub3#Gf=U1BISp=KG0E zp+$g|gyOvKf!8Gd3ixx(JNd<%c-KX%H+|IXO{C+ZnF n6ik&3K@umb;9fpq`C*~+Ub zUHXKU65!X7p}}D@6 zTy_4OT}TYfu8H#JQX0{ILMmRE5im~wc47^fKq z#ZmEW6TjTVB5yiQ(QZ#3%C{$V!zl{tg>qh66ZxsWVsRqKT(E4*88>qQl}tw# zOQx_UN|r6xgPyZ4Svgak2@1L@hZ23g!pWPqT6EjIBFDy!Qa~FY-~@LD0S6|_mJ|i& zqR3`P9VhEZqa;Pv%o)-^uygpUI#UH{j3UZX5Xb8~iO&$a>Lp$N#`d9!{V?dVBuNmP z1VgaP0Me0gCh(^qiTeK-^`sM5-#{`dG#ZX@GRoT zN-V_;tEi_gYgS58Q|jb|GL;Ha^0T?Cjd#JMR}@e`uZw`)Hjq|eG6(oE;YXT3dRdqSlh&kg6F^Q z^?KPRC1z1QLTbUwH$3+&@S${fYpk>26UzqQI{q zUKF^6cuC-Q5kC<43gR_^6MiW0$A}*Z{0ZV00)LA5gTSBlF#!plWtae zxO&A&{8?X6jb(kuALVVp(%S)*ryao}t5nrJBK^!fwNL#x;jW8vt}@E8z$K3vH0z A5dZ)H literal 0 HcmV?d00001 diff --git a/lesson22/l22 b/lesson22/l22 new file mode 100755 index 0000000000000000000000000000000000000000..6ca2e6ba944cbdc1b82a4352bdd4da65cd0dcaf5 GIT binary patch literal 9028 zcmeI2PiPZC6viiMT5BmIU93xzK9 zAn8d&#G4+ycoRtt2sR*8s2(kdAbJTF59+~6!T7zIri|jjgE!xUH*bFP-kXpwd)dj% z^$qlgLLt$xuxJuQuWv?LyAdxO(3x%#Mdpxb5zQ*ER)a{ZfZqm?M`*D_=scpp9^{`e zC2xjr<)fJ2M;_jWDR~Q=@@%XCE5Hh{0;~WlzzVPetN<&(3a|pK04wls6&M;!UMxK? z)253w9DTE}e@Czpo81#^oS54gti?jB6?!@U_MvC({rqgSD{8B7Azb=X&&z9cRVpvb1vG@fYscLPxUau$0RG2_^H)T`Rp;9$CE@ac`we_ym z(Q0yVC{e4Su(XsaJ*&`xM43((R)W#tk!tPjFI&6xEFlN;B(+J244n`8SH_l4Za4xVel+?!Qch(EraiZ z?-+a!{K()3;1>oz1gkp<6h#>42l^faQ3q}{JVtDzI}3`#V(B+t2Dck|k#&4O@5SRs zvhlcO`#E9DysHK)SIkOxDmycf&rj)<3Dkt(3et%Ms%xSI z=^NGeMF`30WQdGv!fK|6_9)Jnut@n`aEi3&cDULLk?c~Z5HIyqjkFIL^_X>saTn&G J%IKj{_Y+gx?56+# literal 0 HcmV?d00001 diff --git a/lesson22/l22.asm b/lesson22/l22.asm new file mode 100644 index 0000000..1475519 --- /dev/null +++ b/lesson22/l22.asm @@ -0,0 +1,18 @@ + +; %include '../lib/fl.asm' ; local +%include 'lib/fl.asm' ; build.sh + +SECTION .data +filename db 'README.md', 0h + +SECTION .text +global _start + +_start: +mov ecx, 0777o +mov ebx, filename +mov eax, 8 +int 80h + +call quit + diff --git a/lesson22/l22.o b/lesson22/l22.o new file mode 100644 index 0000000000000000000000000000000000000000..aaa1792284f2924c31cf28e67d849f55b1a886ce GIT binary patch literal 1200 zcmbVLO=uHQ5S~q|Q9&&#co95mFKZeEe=a7_6vYT>0+KdZyP7Ro*!*<&MJ*J%kb|U0 z58}-py?7Hz4GMNaPzW9^NTKK@7(A#4D}}~y_9uP4cyM6eeBaDB^LYE-E~U~FilR_x z3JuXNBT58?^IkklQPls(cqV(;JqvP38Z;c>XrS94@EUaACEZAX4dDR&xcv20_D>ff$4H@h+9^JuL9L`UB3zVG+@nHCE(s2<~L-pw^# z=OT%rL~m zKbH7Y;1?2q2K+(d&j*-+LNBp?3UVX-B2C@4tCe{CoEeX+nq4MMR1I%Y%XL#2HFF_d zt=9a^oKZ3Cl3w(grQ4!v>15O_qauQ!7L9vGQTKZMg6fr}M0$d3Q?Gc7TEWHNEoqj| i1{>J^Oh2GuzHSJbGtj1$b-HZ}%@TZ!4Y(rxz<&X)Rnyb} literal 0 HcmV?d00001 diff --git a/lesson23/l23 b/lesson23/l23 new file mode 100755 index 0000000000000000000000000000000000000000..ec20122dec280562b04aa82af5843c7742ce7be1 GIT binary patch literal 9064 zcmeI2Pe>F|9LL}4Y9>)z1PXQ7x|Ek`Q=vbX5>$+g))it^Y8%}V2WDq<=4~nn4tR+5 z6cN#_j$OJ%tS%He5oAcvMInNy%aW(+kRh~ve{XiGmKo+H7jD>l4h91JG zA*?~p#{u_{hqYiy)(E3|HIxEM0i}RaKq;UUPzopolmbctrGQdEDWDYiw+ajnq%IYn z7pdtIO~>CX9^CD3C+7D1+o$ID_?wByMyVNzuOGTL-!FV)d`F01t_%;21WA;Ox~^ra zek^u=Usy?`7PeUa)kq*i)DwRsINE?&L?xSov7%T+-Nyh8XZf>=0 zj0CBH!DP9NjfItT;c1E99~9~B!kRxaG#r%Q{?g(V2rWv;vm$L>^Mj=d7A1PQP;3&B z-5< z@n!H8iEZ$d#M9vG63>AbC0+#Il=u$#w#0YA4<)`2UX}O(Se#EF&+6DC%=Gp^Aov*; zbVhD)2Jq~-D!Hz%#xe#e;% zBjcuRdJ{%AB-ik`;~LDIbWNLAot8DPnOQ^Bgb7Wgr9gi#^DM&_lV%$;d~8B@L;86E zFYFmQ6inq!&c;oY={bXqIW{+J?y*c})blbP*ImvsMpoxKoSnsg?#<@7J_^s>&`;D> z99LwT*b6cKavZ=uy7$D{5Yn5@he$VL?YIctvJ|d|iT^Dgo+%-uL2r*}(4IQ63a8dM rV^1{YWlmtv+qH1@*eeHU?F=7`9IQ*GZ5O?~;1 literal 0 HcmV?d00001 diff --git a/lesson23/l23.asm b/lesson23/l23.asm new file mode 100644 index 0000000..80eb526 --- /dev/null +++ b/lesson23/l23.asm @@ -0,0 +1,25 @@ + +; %include '../lib/fl.asm' ; local +%include 'lib/fl.asm' ; build.sh + +SECTION .data +filename db 'README.md', 0h +contents db 'Hello world!', 0h + +SECTION .text +global _start + +_start: +mov ecx, 0777o +mov ebx, filename +mov eax, 8 +int 80h + +mov edx, 12 +mov ecx, contents +mov ebx, eax +mov eax, 4 +int 80h + +call quit + diff --git a/lesson23/l23.o b/lesson23/l23.o new file mode 100644 index 0000000000000000000000000000000000000000..30f63d84bc5a9ea456bd9a36d3c8aa5f384e9f25 GIT binary patch literal 1264 zcmbVKO=uHA6n>jlqvB7Hf)_zOX)kNq3jSPdpeYq2qzOpcV0GCuCD^XkQ$NYa2mT_{)x9xX_r=w&e=s0S+r<9oZa>Ga~k2Q%OIz3;s@%C`pYu4cJIJ*gHFBNccnmR`MJYE1FvL9q zYNMbt(CWoo6j?M6U}gXpol7&%;1cI0&{)S@6w$o%m^d6I5x239`e_cGLwE>R6uES2 z>{ePXt1zJ%hIMwqvJLfI`5+$?&z$$ZxLv9P{YsK0B`=>B^V3*Jlg#^{d@qAB+ZVsIJxH9?Odzb@#T$R`AS z2lZ}-6?5msBFz)maTzav2~Mi zkX8MGu4+L~Xvl#rBr@aR7@8SuvWX92wxrmh>K)*OGef|J`Kr!fPRBN-tih~hGRl??vOy=P$ literal 0 HcmV?d00001 diff --git a/lesson24/l24 b/lesson24/l24 new file mode 100755 index 0000000000000000000000000000000000000000..0c847438053ca4e58b95d304928fb5d2ed00662d GIT binary patch literal 9064 zcmeI2Pe>F|9LL}4Y8p{ngb8(6yOft{lZF0VN+>ZBS`}hdavj|f2WDq<=54MZIN%}H zQ$$3!I(F$MvAR&?L{K3?mxKtSE=!)OLx#}y{k_?ZS9IvmDc%p>`@PTa_j|w9@62W2 zzJ>FBJ&{O+)vbXwGNRYlqb*7J!r?HJWN~DUvS!vK@*?U-TNuVo0F5XGV=T=?YE9-z**4?QbXM_xszY7WVj?iO5EIClX&jbZ@?2{Koi>5WkEL4~+yVY!~~w zS84Y{QTcswEitgT#qu976yH@6h^MhJ{~0^dLFHMsT1}OxFooad9PDmgU4}9oNcs{Newj@6~mSvQJg|-Y$OM7r_WS03V~@`)k|@uSt9Y zd|Kjj;4>0m1oujO1w1OT4W5yB7JNw&waAXF7~bnzrdp8QG9rJTu2Nm^tm5Hm^A?YhE?8hS(D(G?A79eLc*x3|mZ^ zZ4~&#luFXXvnDCU0^!X=0n6GuVVGD6o0c?R`f?gszXqn%FDEh(4R{RB}N`rg; z8ar8X5*Sj$wm@WEQEE$q{)8g5jZG=?9u2H9QWaM*dM@}KcMg54|g$Aaywwy}B$!q3k= z+n*MGk!VTikFk;A(J+VdxUOe~t6#;LzZcfBg9|%U{&KUj6=f06qpW)aa`-lCK{Sp|(Gn(5X?npB2I<1Y8R~w~ z7oITg0nL^YpK{N%lN?$156|Bxt(m^5E8+fCmES{#_F4~=4y5X0|5Uv$ZdZ}y+Ys#MOcipKZGHE%MUo;B| z^YB}6J(H{{&vHcS^n!KYDwuIiBIvQK1p0f)w@oLWbO#S%qG)&tYb@X=Jrjq5>9Qqg l(n6V0GHJqfgy{&M?)t*;M6#WD-o&h7TVGSpe}&AY{Q=2n=^Ow6 literal 0 HcmV?d00001 diff --git a/lesson25/l25 b/lesson25/l25 new file mode 100755 index 0000000000000000000000000000000000000000..6e360291ffbe0a230f94edd2bad2d2cc953ecbec GIT binary patch literal 9136 zcmeI2O=uHA7=|Zpw5^E7A8J7lsTVEC8cT~m7cFY3*hAWaq%AgVn=M_~Y|`w+wovFo z51M)r5$QotZ(h8Kqzx!`K~OB>$%2TY9)dlo2P*~R`^{!$gdRM25oTcKo9FwPP2Sl{ zCNp!kyE7CDv7ptkT1NExTDZOqc7DGfX=71D4zfD7S;U3c4c9aD8vyEIaz>aRhhG{d~-EUMm42?Qa~x76i^B%1(X6x0i}RaKq;UUPzopo{+$AS zJ-rtSPm8qR0u4vr%y|Zg9|M^_ueK`hy0)_dns7QF_XO&7NUZli0qB|*?@cIg#dyMhg zQ>$w&D}!EdPhY%TMq*(pQFv0q*#Ilj>B6!**gxQv-~O@0OAwYQA4VJ`e7a_#${nVjDaz@dWs?#M9t8iRZxAC7uW0l=wFI zfyDQ~&n3PO7WWg#vKsafBb^=y1V6@v&IWw0Wv?)yI}^ka+<^#`K&|zaQZEYx)KS<9U;_Q4?i) z+F&CYn;SNFgy(bs$>gx(Bpt5jI7=ESo$D}m3NM5+mFD^|EYJCNESPaTo@pXiLp9X- zyS5i;^lpl~Bcwm>ozPvApwTrHYV=N%n~rtFzDBVhG_N*scLnnU=(LHHNBh?p#Y9>! y$Rk$`deEApjAh}ZlcZhflt<5QKo`%1rFNy6u}}U~jKR`7KysdidpCzR$omB$^%M~R literal 0 HcmV?d00001 diff --git a/lesson25/l25.asm b/lesson25/l25.asm new file mode 100644 index 0000000..290bef4 --- /dev/null +++ b/lesson25/l25.asm @@ -0,0 +1,42 @@ + +; %include '../lib/fl.asm' ; local +%include 'lib/fl.asm' ; build.sh + +SECTION .data +filename db 'test.txt', 0h +contents db 'Hello world!', 0h + +SECTION .bss +fileContents resb 255, + +SECTION .text +global _start + +_start: +mov ecx, 0777o +mov ebx, filename +mov eax, 8 +int 80h + +mov edx, 12 +mov ecx, contents +mov ebx, eax +mov eax, 4 +int 80h + +mov ecx, 0 +mov ebx, filename +mov eax, 5 +int 80h + +mov edx, 12 +mov ecx, fileContents +mov ebx, eax +mov eax, 3 +int 80h + +mov eax, fileContents +call sprintLF + +call quit + diff --git a/lesson25/l25.o b/lesson25/l25.o new file mode 100644 index 0000000000000000000000000000000000000000..c0d2d19f7da266e83017ac80d4b747fbf3cf805e GIT binary patch literal 1424 zcmb7EPe>GD6o2DdT11INT|5|cP>5-h?B6A&5+e_*Laa*G=#DrrJG0Jwn+bvg9%Aj* zAvy$g?9we_RVZ>GC|U|SB!m!k84`l(kRi1F-uziV!AlS3d%xd%zxTesyK|TNdK5*W z#1u-=79;A46DLF8MvYXTNdL=oPySMIl?QT2>X3A8K&(;HJ%X;fgKi&U+;4ZBW1Y%@ z*qUPB44=%&q4#w}r{WyDq@)EHshTyRsDLE*=XLV>xaU!Paz77=4~Qj}^gD*Yo+Jo= zV;4~yJX~1M{dk{3cZDi$3F_5N({7!%9W!?X@x%uE2dj$r^)oP~9!VI!}e%Y))Sn|CyBvM`L8||wj{y_g=CI}!btz=6tmwD4= z-ciLH85;J3wQVilfuY4R@>FJN#q$@d08xZbq2ev^g)Z`mmHfC>xb8^9roF+6<$6S|Gq2pjxchVJ((8hpf@{y0ZqnnY2d+uz!-o)zZhx`9g%Z6qztA!=2P~5p(d{u^pX^f@4@Bc52SJY2@^< zCQ7JbS_<^_kZbBzIH(rh$oQn@M65P}8}*DF3Z{yNpa}zIT3)Ad+Y-7Z+%R$>A=h1@ cIbz#}X$@4tv-lo+{;Or)%pTisjeSz}4F|9LL|fTWUmYe=wmAYnKvY+C;RvlvHBmVO5A#$z^m$9GIP1ciyIg;DCo( zyF^8Jt8QJoMXW9qIS>>{bV`sYs>70}>X0F{eSdFuVge5xx&-gRd%ySj{eJJw@O^XH zx4)Tl-JPLOi21FCg&EPC>yf%v*!hEAq?N@GIm~L=RuLCoCsN1IZvm)B$Qfl`9F}1Z z>h0K&`j%ik2DpnjdIP47h;OaN$;c)ZkP1izqyka_sen{KDj*e*3P=T{0#X5~z`s+V zuc!B7;aQP3T%h6D>fC`H&PIHCud{JtW~Z|j53Q88A@KcU$J&S4AB@*}_-$yQf6z@} zxmee+NUI-<%%8JM@!r{Wmj8Ud@V*>}KZ%9;uUL_E%g-y7N}@=K2}E~OH0kygT<19B z;nQpD%`1a$Z%<#MTt;GHDOq@0!rcHX((S^sGuS`imf!xd#VZiDC?U>@l)CJ=3l&UC zbh%Kh6Q0HGFbnl?6x`}o;=R2bx|vvZyqrcaCoEh=qVhF*lhq>KPb@p-n;^_&lL|-$ zqyka_sen{KDj*e*3P=T{0#X5~!2hEF*KDrvNzS@7!?0o#R?bK_ZSwl`yV`FN_N79< z+r|I;!Wm-wV59VZf0dhIl>oPcPX_ob_*8%|fV%>G2|N^F6FeT^3GkHwPlM+IJO{oJ z;Cb-v0N(*W4DfyMivT|Wi~0nztcE?pNVf+9!A~%uy8(~G>@_A-GeI0h1;k5OKORNp z#0t2fnjgjbcND+p=i{=$&}`c>TiT8qEp3WwXPC+@T?|SlZ*Vxx5gM_Svct?X%9N((X;E(#WP{4U2S6QlQ$Kkzx6IqFwa2U&5=#= FegSWj7nA@1 literal 0 HcmV?d00001 diff --git a/lesson26/l26.asm b/lesson26/l26.asm new file mode 100644 index 0000000..10c52d2 --- /dev/null +++ b/lesson26/l26.asm @@ -0,0 +1,46 @@ + +; %include '../lib/fl.asm' ; local +%include 'lib/fl.asm' ; build.sh + +SECTION .data +filename db 'test.txt', 0h +contents db 'Hello world!', 0h + +SECTION .bss +fileContents resb 255, + +SECTION .text +global _start + +_start: +mov ecx, 0777o +mov ebx, filename +mov eax, 8 +int 80h + +mov edx, 12 +mov ecx, contents +mov ebx, eax +mov eax, 4 +int 80h + +mov ecx, 0 +mov ebx, filename +mov eax, 5 +int 80h + +mov edx, 12 +mov ecx, fileContents +mov ebx, eax +mov eax, 3 +int 80h + +mov eax, fileContents +call sprintLF + +mov ebx, ebx ; not needed: takes fd from ebx +mov eax, 6 +int 80h + +call quit + diff --git a/lesson26/l26.o b/lesson26/l26.o new file mode 100644 index 0000000000000000000000000000000000000000..c92c9fc8f76db79332ea6cac9b06582a5bb201b7 GIT binary patch literal 1440 zcmb7EPe>GD6o1oNT11INT|5|cP>5-h(CU&>iIIm@Ayy@0bVnSRompqT%>=;#53zQM zg6LMqF5Mzlg(3%nqNPKJ1QDbzLqbp;GK99@n?LI(b?L!;@ArG}_uhQ}X67#U^(cx$ zi7Aw#9Y)j@C(eYvl^Uonk^YzGp8TZZDi7qS)FJ6wk644GdkkImAG(8xald_Wj&+?J zh^;a9P4LM(Ikd5ds3Xp?OG=u7k*Zk>iV8?_f1W4Lk9(fLBlo+D#0SI@OZuHeV1E*X zFYG01g@+64xgW1n=&n%3EkV7yY1%E*wqxdwBc9k`|G>4<>oU_t9!{?a;3Bp zq!G`eu=pJnSwDDFtyVK-7G{v;{mW+k!IJNtC6Vgd+-h4L@dx?`GeH1hX(d~Fwakky z^NK3o$k4DKtnX^^9tldf=tHU>14k9^D>-HbFz@!y{3 zpI9AzlU~H12fapyZw=;f~b9(o7R_c{{D1EfdFtZeB;N<`efRsm?|n)BcgwxJ zg)@Wwp-@QFtwA&jqBqyVEj{q^V36q%QDhE_X3?bbD(Zz>1jY>jjW7ixBFMuF^q|p( zhBTV=d=zj8d5kt((rCt@^=zyFE5Hh{0;~WlzzVPetN<&(3a|pK04wls6&M*BK3{xR zqNd9<9o<+uu*=(y&9{5o#}{^co3YS(c_$KIKlE+BU;HNIjsU+*jE#=_aV%Hs`c`Q5 zBUSl*aWyu)xFrf7&lTTQVu&ZOu<#ix5`N`*wOWmrs4$M~Udkr?k)rP%6SDEt=2qwW zxIa8J60cNHSX@mMpOk4sqC~q3Yu@sY$`OD{9g)4 z%aw+lm7=SVOPSJ2b^ZDK=v}&QVezR-@9gToeH9Feeee_o(C^!yac|k@h$L8jc8%Z z@KapS`3T|&PCGn?Z>!}a$iMuJUxVAVyhvNFn{~Q-kEFYM4b#mCQ)X>78JR*_+PU=H zU^bfzB2%_wyVF)GpgitZHg5?#m$w~Rb4JR(Y^N->CP)}6tpx`Ag`2hgd^1=R!ztoDHFKBz3DF73n~L!i|(5ouk2d5<)WCIU=JP x+6JmydsK*v2vVM&Y4X&Q_Jve0crw|6`yE`Wnfj3J!O-gla8~A!$^=ur?gw%_{RRL4 literal 0 HcmV?d00001 diff --git a/lesson27/l27.asm b/lesson27/l27.asm new file mode 100644 index 0000000..41d7551 --- /dev/null +++ b/lesson27/l27.asm @@ -0,0 +1,31 @@ + +; %include '../lib/fl.asm' ; local +%include 'lib/fl.asm' ; build.sh + +SECTION .data +filename db 'test.txt', 0h +contents db '-updated-', 0h + +SECTION .text +global _start + +_start: +mov ecx, 1 +mov ebx, filename +mov eax, 5 +int 80h + +mov edx, 2 +mov ecx, 0 +mov ebx, eax +mov eax, 19 +int 80h + +mov edx, 9 +mov ecx, contents +mov ebx, ebx +mov eax, 4 +int 80h + +call quit + diff --git a/lesson27/l27.o b/lesson27/l27.o new file mode 100644 index 0000000000000000000000000000000000000000..c3204c9a04aaf57f711f23ba44cffb4177f5f5ff GIT binary patch literal 1296 zcmbVMO=uHQ5S~q|Q9&(Q@FIBB9=fJQsCuylEs8m$2}s&tb#1nEA=#w6FKVICg&bsi z^dR2!=*638(tu(Y3JSrag;FSb3Ff38tQ3sj>`(dvo*Z~@zHh#nd3|puUAdN=R1}3G zQ>c&j8PRwsT=4xlibMY&boE(rAGZBj)!>%L+)@M7lt+v`lIksFAhDA5sicz zyQt(8Fr=>SfTSQEKx7b$&*h$Hu;hLT2pfn+7WF%ez~Ly!9*wx3`|vsJ4`D?nbX%z6 zp`hVPIj;#lKO8B6&rGFnxf?Ymb>2p{R!<*u_7cm3&fcY!<4!xFY&MQS`1N(7{iXVw zL_DBBXJ@8!UJB)Y-NYJKzx6Z!RM!*f>Mm8j-EenW3BmKtA#{&J?p-2@a1cKv!;`qp7C1SJuNpp_vzUj|;4IOE3>e+v9W;?ICzN&E%yM~T1eVg?Gm#=bw_3cUmW z%o1#XC%mBBcF7zaJ6{+bQ#HFtnkX6mrWPv&VU!C?$x^8tMCJ|Cuov`vz%2Y0N|sJW z*)mKKIyGX|oe;q0ogM zBt40Uc+;a7Zz9oxU;{#h>d}G-QZI`=X%AKk#{bPEWfTt{y!i&+y!qz6H%tEHvXeJ= zzP~RLiHOFCiY7ty?slxT8~*ZP9qATvM2?CU(X8TXH;A8L_K^9_3 z)(qQ@$FY8hIIImzvKAP{d9VVk04u->umY?AE5Hh{0;~WlzzVPetiZojU}#|QO8HfV z4t++`iT4W!cLiIC*?qy*skz<3dLpvAxD$bIpL*BV=D!QML*vHi$Z)!vM7gT#eNNRc zROXNQrNrR;rYL>BSpFC$u%AL<=_@Ky)o{61t0gOxm_&3hMN`$Gay94?vgz#lX6I_U zIyf+t3_~QAmr~`Ii*zATq1%O(AU!-%4L|&H#9I)KSVUY@D0L+O;9fyJWF-jKkU&8m ztN<&(3a|pK04u->umY?AE5Hh{0<6IQs(^HSX~}8%r_WFC(v1-lUuyKOuKv?kn-Q@e zzJvbbuX887W$;PxX@k#!&lr3Oe8J#r;8BA;@RY$f!M6;a1uq!90KQ}JeegYlAAp}2 z{0RKo;KyLqlR#cX1>Go69|Tbcx*DFsw^7f6;;2~qjhDggMqK0^-!FJwJ;!rhJ(lg~ zg)IxNnyh>&C*8^1On;#;sdvU*&-EvqtfnHqmqO7I?qt#RWZhX=_lBEwRE-W;Dr{`@ z_X$7ecxtjdXIfsLu#1|uAK>dVwL`&F$(3T z&*Y^&1}}@+Pc&8%4-%HjC2{_896%oZ##G-2>5Sfw(5P*+f*h*nHBpT8jq839LK>>? z1fI@{(nfu>$8pDmO^WYEKPva^c@J27yOy|&`8Z+-0dSQ;Jh@KjGKLNOp B>y7{b literal 0 HcmV?d00001 diff --git a/lesson28/l28.asm b/lesson28/l28.asm new file mode 100644 index 0000000..b186fbb --- /dev/null +++ b/lesson28/l28.asm @@ -0,0 +1,17 @@ + +; %include '../lib/fl.asm' ; local +%include 'lib/fl.asm' ; build.sh + +SECTION .data +filename db 'test.txt', 0h + +SECTION .text +global _start + +_start: +mov ebx, filename +mov eax, 10 +int 80h + +call quit + diff --git a/lesson28/l28.o b/lesson28/l28.o new file mode 100644 index 0000000000000000000000000000000000000000..104512faac308ff3a6dc301292a36b4679191d3c GIT binary patch literal 1200 zcmbVLO=uHA6n;soQ9&&#co95mFKb!^qZd=qqL@RPfTRu9u4YRXHk)*Jq818W$U)Mh z2k~Z)Uc8A!gMwWU6oN+sB9wYr%t<|1DVTn5f0F6Jiw|br_r34^WHPg>S2NSGSd1cz z(FhG0Q92aP`~EB?p#P6?PhL^=0?0wB(P)ShVc!0b*O2E)d1E0y3?KF4&_bMOBGlON zEVh$akOsC6l7_esk>glAmwTSZlKX9fyg@9osNWd`o|3q?E- z5zo)$ZZ_Yyn7-m|;>+5pBhF58<%F|yarLOvOUAnGLlAy{o9b;f{*Xun^w<2{Y|+i4 z+^?H@&DC%H%)gC|WUjGI_3zi4n_d#}0t)LtQBiQc5B+{W+v3D5)MKm`+6UuFZ#S@ku&Padyu2zV2!92@EaT(5c0#9Va9_q~my7NMO-7 zrKAd#6rtfiQ0%fTETP^3TCM~>ikJ69f9Pqs_mwBA{yhDro?;(0a zd}HGfl|e$BE&yMW_!Z#G62Ad_P2#tJ=Ou0eFG>79@I#5O0Ix}$@gs>p0e&p;r@${H z{tWn|#Gel^gBZQU{yB_|@ryJx+pe0EsdL6;N>S|!siLa;n^LJ8La!OinQFBbL>6^Z zx64{7U>4qP)zV0>S-L4gr