<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[האם ההבנה שלי נכונה?]]></title><description><![CDATA[<p dir="rtl">בהמשך לפוסט  <a href="https://tchumim.com/topic/17643/%D7%9E%D7%94-%D7%96%D7%94-%D7%A2%D7%95%D7%A9%D7%94/6">הזה</a><br />
קיבלתי משוב קצת כועס מר' <a class="plugin-mentions-user plugin-mentions-a" href="/user/dovid" aria-label="Profile: dovid">@<bdi>dovid</bdi></a> בצדק מסוים למרות שלא מסכים עם הכול.<br />
בכל מקרה השקעתי כמו שהוא אמר ולמדתי את הנושא לעומק אני כותב כאן את ההבנה שלי<br />
ואשמח לקבל פידבק ממי שיוכל להשקיע מזמנו ללמד מתכנת מתחיל. אציין שהשקעתי ביומים האחרונים כמה שעות בלמידה ואני לא בא חלילה להטריח.<br />
יש את הקטע קוד הזה</p>
<pre><code>global main
extern GetStdHandle
extern WriteConsoleA
extern ExitProcess
 
section .bss
    buffer  resb 8
    written resd 1
 
section .text
main:
    push    r12
    push    r13
    sub     rsp, 40
 
    mov     eax, 10000
    lea     rdi, [rel buffer+7]
    mov     byte [rdi], 10
    dec     rdi
 
.convert_loop:
    xor     edx, edx
    mov     ecx, 10
    div     ecx
    add     edx, '0'
    mov     [rdi], dl
    dec     rdi
    test    eax, eax
    jnz     .convert_loop
 
    lea     rax, [rel buffer+8]
    sub     rax, rdi
    mov     r13d, eax
    mov     r12, rdi
 
    mov     ecx, -11
    call    GetStdHandle
 
    mov     rcx, rax
    mov     rdx, r12
    mov     r8d, r13d
    lea     r9, [rel written]
    mov     qword [rsp+32], 0
    call    WriteConsoleA
 
    xor     ecx, ecx
    call    ExitProcess
</code></pre>
<p dir="rtl">אני כותב כאן את הדברים לפי סדר השורות ואשמח לתיקון:</p>
<ol>
<li>משאיר Main גלוי שיהיה גלוי ללינקר<br />
2/3/4. הצהרה על זה שהקוד מחוץ לקובץ האסמבלי הזה.</li>
<li>מקטע נתונים בלתי מאותחלים<br />
7.שומר תוית בזיכרון בשם באפר של עד 8 בתים<br />
8.שומר דאבל וורד אחד</li>
<li>מקטע הקוד</li>
<li>התחלת המיין כלומר הקוד<br />
12/13. דוחף את R12 R13 למחסנית לשמור נתונים לפני דריסה של התוכנית</li>
<li>מוריד 40 בתים מRSP (שהוא מצביע על המחסנית) 32 כי זה מוסכמת הABI ועוד 8 לפרמטר חמישי.</li>
<li>מעביר את 10000 לאוגר EAX</li>
<li>חיבור של באפר ועוד 7 (סוגריים מרובעים- שווה כתובת) את הערך שומר בRDI</li>
<li>מעביר תו 10 בגודל ביט אחד לRDI יותר נכון לכתובת עליה הוא מצביע (ירידת שורה)</li>
<li>מוריד 1 מRDI שהתוכנית לא תדרוס את התו אז מוריד תו אחד למטה</li>
<li>מתחת הוא כבר עושה לולאה על 10000 מחלק כל פעם ב10 ושומר שארית 0 ואז מחבר בדיוק כמו ש@yossiz היקר הסביר.<br />
עד פה בערך חפרתי וניסיתי להבין אחרי הנזיפה של דוד אציין שלא נעזרתי בAI לכתיבת הפוסט או למושגים כל מה שכתבתי זה ההבנה הטהורה שלי נטו (נכונה או אם לא) באמצעות שבירת ראש וAI<br />
אשמח להארות והערות.</li>
</ol>
]]></description><link>https://tchumim.com/topic/17647/האם-ההבנה-שלי-נכונה</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 07:39:55 GMT</lastBuildDate><atom:link href="https://tchumim.com/topic/17647.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 09 Sep 2026 16:14:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to האם ההבנה שלי נכונה? on Wed, 09 Sep 2026 22:29:33 GMT]]></title><description><![CDATA[<p dir="rtl">השורות 18 ו19 מיותרות לחלוטין.<br />
גם את השורות 33, 34 ניתן לפשט<br />
כתבתי מחדש (קימפלתי והרצתי, זה עובד):</p>
<pre><code>main:
    push    r12
    push    r13
    sub     rsp, 40
 
    mov     eax, 10000
    lea     rdi, [rel buffer+7]
 
.convert_loop:
    xor     edx, edx
    mov     ecx, 10
    div     ecx
    add     edx, '0'
    mov     [rdi], dl
    dec     rdi
    test    eax, eax
    jnz     .convert_loop
 
    lea     rax, [rel buffer+8]
    sub     rax, rdi
    mov     r8d, eax
    mov     rdx, rdi
 
    mov     ecx, -11
    call    GetStdHandle
 
    mov     rcx, rax
    lea     r9, [rel written]
    call    WriteConsoleA
</code></pre>
]]></description><link>https://tchumim.com/post/172119</link><guid isPermaLink="true">https://tchumim.com/post/172119</guid><dc:creator><![CDATA[לי ראש]]></dc:creator><pubDate>Wed, 09 Sep 2026 22:29:33 GMT</pubDate></item></channel></rss>