השאלה הפתוחה מתחרות שלב ב

עמוד

ברוכים הבאים לאתר תחרויות קודגורו! פורומים חידות השאלה הפתוחה מתחרות שלב ב

מוצגות 13 תגובות – 1 עד 13 (מתוך 13 סה״כ)
  • מאת
    תגובות
  • #77275
    CodeGuru
    מנהל בפורום

    כתוב קטע קוד בשפת אסמבלי קצר ככל האפשר שפעולתו זהה לקטע הבא

    PUSHF
    ADD   BX,CX
    SUB     CX,BX
    ADD   BX,CX
    XOR   CX,FFFF
    INC    CX
    POPF
    #78852
    Alon
    משתתף

    כותרת: my answer
    strange , when i did the test i thougth it does cx=-bx , i dont know why i thought so . when i checked it again(today ) i was notice that its just exchange between cx and bx (wired – probably there is a trick. when there is overflow or something )
    but if there is not trick
    just do XCHG cx,bx (takes 3 clocks . doesnt change the flags) so you dont need to push and pop.)

    Bye
    Alon

    #78853
    eToken
    משתתף

    כותרת: בדיוק, אבל בדיוק ממש מה שקרה לי!!

    #78857

    כותרת: התשובה שלי
    add bx, cx ; bx´ := bx + cx
    sub cx, bx ; cx´ := cx – bx´ => cx := cx – bx -cx = (-bx)
    add bx, cx ; bx´ := bx´ + cx´ => bx´ := bx + cx + (-bx) = cx
    xor cx 0FFFF
    inc cx ; These two last instructions as far as I remember make (-bx)
    ; into (bx)

    so, it can be written :

    mov ax, cx
    mov cx, bx
    mov bx, ax

    Can be as well written without ax, but it will still take 3 instructions.

    #78861
    דניאל ק
    משתתף

    כותרת: כן

    #78862
    דניאל ק
    משתתף

    כותרת: זה באמת מחליף

    #78863
    דניאל ק
    משתתף

    כותרת: זה באמת מחליף

    #78864
    דניאל ק
    משתתף

    כותרת: זה באמת מחליף, אבל אתה שוכח דבר אחד:
    בקוד שלך אתה משתמש באוגר נוסף, כך שהקוד אינו זהה.
    אני נקטתי בשיטה שונה(אבל לא הנכונה ביותר שהיא XCHG)
    PUSH BX
    PUSH CX
    POP BX
    POP CX

    על ידי שימוש במחסנית הכנסתי את ערכי BX וCX ואז שלפתי אותם בסדר הפוך.

    #78865
    דניאל ק
    משתתף

    כותרת: אופס, זה לא היה אמור לקרות

    #78878
    Alon
    משתתף

    כותרת: you are right but slow

    hii
    you answer with push and pop , nice but slower …

    if you compare it to xchg or to Venndigram´s answer:

    the problem with Venndigram´s answer that you need another register… the problem with your answer that pop is kinda slow … , another thing . size bytes .: xchg 2 bytes

    the moves answer – 3 mov , every mov 2 bytes = 6 bytes
    push and pop each one of them 1 byte * 4 =4 bytes ,.

    bye

    Alon

    #78879
    דניאל ק
    משתתף

    כותרת: אני יודע ש XCHG זאת הדרך, אבל חבל שלא ידעתי את זה
    בשלב התחרות. זה לא משנה כי זה לא השפיע על הציון, רק במקרה של תיקו זה היה משפיע

    #78893
    דוד
    משתתף

    כותרת: יש עוד דרך להחלפה מהירה:
    ללא שימוש במחסנית או אוגר נוסף.
    XOR CX, BX
    XOR BX, CX
    XOR CX, BX

    #78945
    old_t
    משתתף

    כותרת: אני אוהב את התשובה הזו
    PUSHF
    XOR BX,CX
    XOR CX,BX
    XOR BX,CX
    POPF

מוצגות 13 תגובות – 1 עד 13 (מתוך 13 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.