我正在學習使用DosBox仿真器的x86程序集。我正在嘗試執行乘法。我不知道它是如何工作的。當我寫下面的代碼:是否有可能在x86彙編中立即乘以mul?
mov al, 3
mul 2
我得到一個錯誤。雖然,在我使用的參考,它乘說,它假定AX始終是佔位符,因此,如果我寫:
mul, 2
它通過2乘以al
值,但它不與我合作。
當我嘗試以下方法:
mov al, 3
mul al,2
int 3
我的斧頭得到結果9。看到這張圖片的澄清:
另一個問題:我可以直接乘內存位置?例如:
mov si,100
mul [si],5
你的第二個代碼片段中的評論是錯誤的。在'imul ax,2'之後,產品在AX中(不在DX:AX中)。 –
還要注意'imul'-immediate是一個3操作數指令。所以你可以非破壞性地使用它,比如'imul cx,si,1234'。大多數彙編程序允許你編寫'imul cx,1234'作爲'imul cx,cx,1234'的簡寫,類似於寫入'vaddps ymm0,ymm1'而不是'vaddps ymm0,ymm0,ymm1':即當dst = SRC1。 –