信捷MULTI是什么指令?8086中乘法指令怎么乘啊

本文目录
- 信捷MULTI是什么指令
- 8086中乘法指令怎么乘啊
- 汇编imul的一个问题
- IMUL DX,10H这条汇编指令是错的么
- 下面哪个指令代表有符号的乘法指令
- 汇编语言的imul是如何运算的
- 汇编语言那些指令会改变标志位
信捷MULTI是什么指令
乘法指令。
信捷MULTI是MUL是整数乘法指令,FD10是FLASH数据寄存器,K1是十进制常数,D100是数据寄存器。
信捷PLC的乘法运算指令的功用和动作: a 信捷PLC各源指定的软元件内容的乘积,以 32 位数据方式存入方针地址指定的软元件(低位)和紧接这以后的软元件(高位)中。 b 成果的最高位是正(0) 、负(1)符号位。c 要注意的是,上例中驱动输入X0 为ON 时,每个信捷PLC的扫描周期都执行一次乘法运算。
8086中乘法指令怎么乘啊
8086乘法运算指令分为无符号数乘MUL和有符号数乘IMUL。乘法在实现字节相乘时乘积放在AX寄存器中,字相乘时乘积放在DX和AX寄存器中,因此乘法指令不会产生溢出和进位,这时用OF和CF位来表示乘积有效数字的长度:若乘积的高半部分(字节乘法为AH,字乘法为DX)有效(MUL指令是指AH或DX中的内容不为0,IMUL指令指的则是AH或DX中的内容是否为符号位的扩展),则CF和OF都为1,表示DX或AH中含有乘积的有效数字,否则CF和OF为0。
给你举个例子吧。
无符号数0B4H与11H相乘
mov al,0b4h ;al=b4h=180d(被乘数放在al中)
mov bl,11h ;bl=11h=17d(乘数放在bl中)
mul bl ;ax=Obf4h=3060d,OF=CF=1(乘积放在ax中。AX高8位不为0)
再来一个有符号数乘法的例子。
有符号数0B4H与11H相乘
mov al,0b4h ;al=b4h=-76d
mov bl,11h ;bl=11h=17d
imul bl ;ax=faf4h=-1292d,OF=CF=1
;AX高8位不是低8位的符号扩展,表示含有有效数字
计算二进制数乘法:b4h×11h。如果把它当作无符号数,用MUL指令结果为0bf4h;如果看作是有符号数,用IMUL指令则结果为faf4h。由此可见,同样的二进制数看作无符号数与有符号数相乘,即采用MUL与IMUL指令,它们的结果是不相同的。
汇编imul的一个问题
我想,关于补码,LZ应该已经有所了解了,不再过多解释.
为什么96H会被看成负数?问题就出在IMUL指令上!
IMUL这个指令与MUL是有区别的:IMUL是整数乘法指令,对于乘数与被乘数,它都会当作有符号数来看待!
96H的最高位是1,当作有符号数的时候,它就是负数;而12H的最高位是0,是正数.
正负相乘,结果是负数.
96H的补码取反加1就是-106,-106*18=-1908,在这里,得到的1908其实是个绝对值!得转换成补码,1908的16进制是774H,经过取反加1后,是88CH.注意:两个8位相乘,结果返回到AX中!所以,AX的值应该是:88CH.但是,请LZ注意观察,在16位的AX中88CH却是个正数!(因为负数的最高位必须是1),结果不符!所以,IMUL指令默认对结果进行了"位扩展",88CH扩展后就是F88CH了.
个人理解,仅供参考.
IMUL DX,10H这条汇编指令是错的么
如果是8086的,绝对是错的
看样子你的书不是讲8086的,32位汇编的书吧
初学还是学16位的8086吧,16位的学会了,32位的就不难了
36位寄存器-_-!汗
8086中的IMUL只有一个操作数
操作数是一个乘数,另一个乘数在AL或AX中
下面哪个指令代表有符号的乘法指令
IMUL。
IMUL(有符号数乘法)指令执行有符号整数乘法。
与 MUL 指令不同,IMUL 会保留乘 积的符号,实现的方法是,将乘积低半部分的最高位符号扩展到高半部分。
汇编语言的imul是如何运算的
二进制竖式乘法,位移相加
用debug调试,一部一部跟踪不就知道了
IMUL带符号数乘法指令
格式:IMUL SRC
执行的操作:
字节操作数:(AX)←(AL)*(SRC)
字操作数: (DX,AX)←(AX)*(SRC)
双字操作数: (EDX,EAX)←(EAX)*(SRC)
注意:IMUL与MUL的差别是IMUL必须是带符号数
汇编语言那些指令会改变标志位
加法指令:ADD、ADC、INC、XADD除了INC不影响CF标志位外,都影响条件标志位。
CF、ZF、SF、OF
CF最高位是否有进位
DF若两个操作数符号相同而结果符号与之相反OF=1,否则OF=0.
减法指令:SUB、SBB、DEC、NEG、CMP、CMPXCHG、CMPXCHG8B
前六种除了DEC不影响CF标志外都影响标志位。CMPXHG8B只影响ZF。
CF说明无符号数相减的溢出,同时又确实是被减数最高有效位向高位的借位。
OF位则说明带符号数的溢出
无符号运算时,若减数》被减数,有借位CF=1,否则CF=0.
OF若两个数符号相反,而结果的符号与减数相同则OF=1.否则OF=0.
乘法指令:MUL、IMUL
MUL:如果乘积高一半为0,则CF和OF位均为0,否则CF和OF均为1.
IMUL:如果高一半是低一半符号的扩展,则CF位和OF位均为0,否则就均为1.
除法指令:DIV、IDIV 对所有条件位均无定义。
逻辑指令:AND、OR、NOT、XOR、TEST
NOT不允许使用立即数,其它4条指令除非源操作数是立即数,至少要有一个操作数必须存放在寄存器中。另一个操作数则可以使用任意寻址方式。
NOT不影响标志位,其余4种CF、OF、置0,AF无定义,SF、ZF、PF位看情况而定。
定位扫描指令:BSF正向位扫描、BSR反向位扫描
源操作数可以是除立即数以外的任一种寻址方式,目的操作数必须是寄存器,影响ZF位。

更多文章:
下载mysql的步骤(win10安装mysql的步骤和方法)
2026年9月7日 04:10
checked in(check in和check out的区别)
2026年9月7日 01:20
java经典上机编程题(java上机题 请问这道题应该怎么写)
2026年9月7日 01:10
影视剧中有哪些剧情颠覆了你的三观?金庸的武侠小说《白马啸西风》为什么没有被拍成电影或者电视剧
2026年9月7日 00:30
mysql varchar和char的区别(mysql中char、varchar、nvarchar区别)
2026年9月7日 00:10
linux命令的选项和参数(linux为什么要有参数和选项)
2026年9月6日 20:20





