追加を実行するためにn個の数値を受け入れるアセンブリコードを記述しています。 入力と出力を表示するときにshlとrol命令が使用されるのはなぜですか?アセンブリ入力と出力でのshlとrolの使用
コード:
takeno:
print msg2,len2 ;calls a macro to display "Enter number"
accept var2,17 ;accepts number in var2
xor rbx,rbx
mov rsi,var2 ;how rsi works as array or array pointer?
mov ch,16
mov cl,4
up:
shl rbx,cl ;Why this step ?
mov al,[rsi]
call asciitohex ;convers ascii input to hex
add bl,al
inc rsi
dec ch
jnz up
add [var3],rbx
dec byte[var1]
jnz takeno
xor rbx,rbx
mov rbx,[var3]
mov rsi,var2
mov ch,16
mov cl,4
display:
rol rbx,cl ;why rol?
mov al,bl
and al,0f ;what this line does?
call asciitohex
mov [rsi],al
inc rsi
dec ch
jnz display
あなたは 'rol'を使用しているなぜ私は...知らないのですか?これはテストですか?それがあなたのコードだと私たちに伝えています。 –
4(in cl)ビットシフトし、0x0Fで 'anding'をシフトすると、blの上位ニブルが返されます。例えばBL = a3の場合は後でそれを表示するので、表示する16進値の上半分に16進数で変換することができます – Tommylee2k
@ Tommylee2k shl rbx、clはrolの代わりに使えますrbx、cl? – daemon7osh