8086 মেশিন কোড, 22 20 বাইট
8bd0 2bc3 740e 7902 f7d8 3d0500 7405 03d3 83fa05
Ungolfed:
ESD MACRO
LOCAL SUB_POS, DONE
MOV DX, AX ; Save AX to DX
SUB AX, BX ; AX = AX - BX
JZ DONE ; if 0, then they are equal, ZF=1
JNS SUB_POS ; if positive, go to SUB_POS
NEG AX ; otherwise negate the result
SUB_POS:
CMP AX, 5 ; if result is 5, ZF=1
JZ DONE
ADD DX, BX ; DX = DX + BX
CMP DX, 5 ; if 5, ZF=1
DONE:
ENDM
AX এবং BX এ সংখ্যার ইনপুট দেয় এবং ফলাফলটি সত্য হলে জিরো পতাকা (জেডএফ = 1) প্রদান করে। যদি ইচ্ছা হয় তবে নিম্নলিখিত শর্তগুলির সাথে কোন শর্তটি সত্য ছিল তাও আপনি নির্ধারণ করতে পারেন:
- জেডএফ = 1 এবং ডিএক্স = 5; যোগফল 5
- জেডএফ = 1 এবং এএক্স = 5; ডিফ 5
- জেডএফ = 1 এবং এএক্স = 0; সমান
- জেডএফ = 0; ফল মিথ্যা
যদি সংখ্যাগুলির মধ্যে পার্থক্য 0 হয়, আমরা জানি তারা সমান। অন্যথায় যদি ফলাফলটি নেতিবাচক হয় তবে প্রথমে এটিকে প্রত্যাখ্যান করুন এবং তারপরে 5 টি পরীক্ষা করুন যদি এখনও সত্য না হয় তবে 5 যোগ করে পরীক্ষা করে দেখুন।
নমুনা পিসি ডস পরীক্ষা প্রোগ্রাম। এটি এখানে ডাউনলোড করুন ( ESD.COM )।
START:
CALL INDEC ; input first number into AX
MOV BX, AX ; move to BX
CALL INDEC ; input second number into BX
ESD ; run "Equal, sum or difference" routine
JZ TRUE ; if ZF=1, result is true
FALSE:
MOV DX, OFFSET FALSY ; load Falsy string
JMP DONE
TRUE:
MOV DX, OFFSET TRUTHY ; load Truthy string
DONE:
MOV AH, 9 ; DOS display string
INT 21H ; execute
MOV AX, 4C00H ; DOS terminate
INT 21H ; execute
TRUTHY DB 'Truthy$'
FALSY DB 'Falsy$'
INCLUDE INDEC.ASM ; generic decimal input prompt routine
পরীক্ষা প্রোগ্রামের আউটপুট:
A>ESD.COM
: 4
: 1
Truthy
A>ESD.COM
: 10
: 10
Truthy
A>ESD.COM
: 1
: 3
Falsy
A>ESD.COM
: 6
: 2
Falsy
A>ESD.COM
: 1
: 6
Truthy
A>ESD.COM
: -256
: -251
Truthy
A>ESD.COM
: 6
: 1
Truthy
A>ESD.COM
: 9999999999
: 9999999994
Truthy