繁体   English   中英

16位MUL组件

[英]16 bit MUL assembly

在x86 16位汇编程序上,如果ax在a中为1 ,在cl 0x1016 ),则以下代码不会在cl放入0x1000

mul cl  ; ax = 0x  10
mul cl  ; ax = 0x 100
mul cl  ; ax = 0x0000 (not 0x1000)

为什么此代码无法按预期工作?

您的源是8位( cl ),因此乘法仅在al上执行。

请改用mul cx

说明:如果ax = 100h ,则al = 00h 由于mul cl的结果放在ax ,因此您要做的基本上是用00h*cl替换ax的内容,即00h

操作码MUL

CPU:i8086 +指令类型:用户

受影响的标志:CF,OF,AF,PF,SF,ZF

说明:MUL src

注意:累加器与源的无符号乘法。 如果“ src”是字节值,则将AL用作另一个被乘数,并将结果放在AX中。 如果“ src”是单词值,则将AX乘以“ src”,然后DX:AX接收结果。 如果“ src”是双字值,则将EAX乘以“ src”,然后EDX:EAX接收结果。 386+使用早期算法,可以使EAX中的任何大小值在8或16位寄存器中快速相乘。

++++++++++++++++++++++++++++++++++++++++
时钟(i486):MUL reg8 13-18 MUL reg16 13-26 MUL reg32 13-42 MUL mem8 13-18 MUL mem16 13-26 MUL mem32 13-42

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM