階乗を計算するための次のコードがあります。
jmp start
; variables
num1 DD 0001h
start: mov cl, al
factorial_loop: ; cx = ax -> 1
mov al, cl
mul num1
; combine dx and ax into num1
mov num1, dx
shl num1, 16
add num1, ax
loop factorial_loop
mov ah, 0
int 16h
ret
コードの最初で、num1 を 4 バイト変数として宣言しました。num1 が num1(左) と num1(右) の 2 つのバイト グループに分割されているとします。ビットをシフトすると、num1(right) から num1(left) に移動しません。どうすればこれを解決できますか?