ডস-এ x86 মেশিন কোড - 14 13 11 বাইট
ঠিক আছে, এটি আবার খাটো হয়ে গেল! কোনও সম্পর্কযুক্ত চ্যালেঞ্জের জন্য একটি সমাধান লেখার পরে , আমি লক্ষ্য করেছি যে একই কৌশলটি এখানেও প্রয়োগ করা যেতে পারে। সুতরাং আমরা এখানে যেতে:
00000000 b4 08 cd 21 35 01 0a 86 c2 eb f7 |...!5......|
0000000b
মন্তব্য সমাবেশ:
org 100h
section .text
start:
mov ah,8 ; start with "read character with no echo"
lop:
; this loop runs twice per character read; first with ah=8,
; so "read character with no echo", then with ah=2, so
; "write character"; the switch is performed by the xor below
int 21h ; perform syscall
; ah is the syscall number; xor with 0x0a changes 8 to 2 and
; viceversa (so, switch read <=> write)
; al is the read character (when we did read); xor the low
; bit to change 0 to 1 and reverse
xor ax,0x0a01
mov dl,al ; put the read (and inverted character) in dl,
; where syscall 2 looks for the character to print
jmp lop ; loop
পূর্ববর্তী সমাধান - 13 বাইট
আমি মনে করি এটি এর চেয়ে খুব ছোট হয় না getআসলে, এটা কি! আরও একটি বাইট শেভ করার জন্য @ নিনজালজকে ধন্যবাদ।
00000000 b4 08 cd 21 34 01 92 b4 02 cd 21 eb f3 |...!4.....!..|
0000000d
এই সংস্করণে উন্নত ইন্টারঅ্যাকটিভিটির বৈশিষ্ট্য রয়েছে ™ - কমান্ড লাইন থেকে চালানোর পরে এটি "উল্টানো" অক্ষরগুলি ছড়িয়ে দেয় যতক্ষণ আপনি ইনপুট অঙ্কগুলি লেখেন (যা প্রতিধ্বনিত হয় না); প্রস্থান করতে, কেবল একটি Ctrl-C করুন।
পূর্ববর্তী সমাধানের বিপরীতে, ডসবক্সে চলতে কিছুটা সমস্যা রয়েছে - যেহেতু ডসবক্স সঠিকভাবে Ctrl-C সমর্থন করে না , আপনি প্রস্থান করতে চাইলে আপনাকে ডসবক্স উইন্ডোটি বন্ধ করতে বাধ্য করা হবে। পরিবর্তে ডস a.০ সহ একটি ভিএম-তে, এটি ইচ্ছাকৃতভাবে চলে।
এনএএসএম উত্স:
org 100h
section .text
start:
mov ah,8
int 21h
xor al,1
xchg dx,ax
mov ah,2
int 21h
jmp start
পুরানো সমাধান - 27 25 22 বাইট
এটি কমান্ড লাইন থেকে তার ইনপুট গ্রহণ করেছে; ডসবক্সে .COM ফাইল হিসাবে সুচারুভাবে চালিত হয়।
00000000 bb 01 00 b4 02 8a 97 81 00 80 f2 01 cd 21 43 3a |.............!C:|
00000010 1e 80 00 7c f0 c3 |...|..|
এনএএসএম ইনপুট:
org 100h
section .text
start:
mov bx, 1
mov ah, 2
loop:
mov dl, byte[bx+81h]
xor dl, 1
int 21h
inc bx
cmp bl, byte[80h]
jl loop
exit:
ret