use*_*774 9 x86 assembly multiplication
我正在使用DosBox模拟器学习x86的汇编.我正在尝试执行乘法.我不知道它是如何工作的.当我写下面的代码时:
mov al, 3
mul 2
Run Code Online (Sandbox Code Playgroud)
我收到一个错误.虽然,在我使用的参考文献中,它在乘法中说,它假设AX始终是占位符,因此,如果我写:
mul, 2
Run Code Online (Sandbox Code Playgroud)
它将al值乘以2.但它不适用于我.
当我尝试以下内容时:
mov al, 3
mul al,2
int 3
Run Code Online (Sandbox Code Playgroud)
我在ax中得到了结果9.请参阅此图片以获得澄清:

另一个问题:我可以直接使用内存位置吗?例:
mov si,100
mul [si],5
Run Code Online (Sandbox Code Playgroud)
Mic*_*ael 12
没有任何形式MUL接受立即操作数.
要么:
mov al,3
mov bl,2
mul bl ; the product is in ax
Run Code Online (Sandbox Code Playgroud)
要么:
mov ax,3
imul ax,2 ; imul is for signed multiplication, but that doesn't matter here
; the product is in ax
Run Code Online (Sandbox Code Playgroud)
要么:
mov al,3
add al,al ; same thing as multiplying by 2
Run Code Online (Sandbox Code Playgroud)
要么:
mov al,3
shl al,1 ; same thing as multiplying by 2
Run Code Online (Sandbox Code Playgroud)