2.用除法指令计算7FA2H÷03DDH。
要求有具体步骤和结果,刚学汇编语言,希望大家多多指教。
9 个解决方案
#1
有符号数乘法用imul,除法用idiv
1.MOV AL,0FEH
MOV CL,11H
IMUL CL
因为源操作数cl是字节,结果在AX中
ps:有符号是补码系统
2.无符号数的:
SUB DX,DX
MOV AX,7FA2H
MOV BX,03DDH
DIV BX
结果:商在AX中,余数在DX中
有符号数同理
1.MOV AL,0FEH
MOV CL,11H
IMUL CL
因为源操作数cl是字节,结果在AX中
ps:有符号是补码系统
2.无符号数的:
SUB DX,DX
MOV AX,7FA2H
MOV BX,03DDH
DIV BX
结果:商在AX中,余数在DX中
有符号数同理
#2
帮你找了些资料:
1. 乘法指令
在乘法指令中,一个操作数总是隐含在寄存器AL(8位)或AX(16位)中
另一个操作数可采用除立即寻址之外的任一寻址方式
(1)无符号数乘法指令MUL
MUL OPRD
两个8位数相乘得16位放在AX中,两个16位数相乘得32位,高位字放在DX,低位字存放AX中。
若乘积高半部分不等于0,则CF=1,OF=1,否则CF=OF=0
(2)有符号数乘法指令IMUL
IMUL OPRD
把乘数和被乘数均作为有符号数对待
操作与MUL类似
如果乘积的高半部分不是低半部分的符号扩展,则CF=OF=1,否则CF=OF=0
2. 除法指令
被除数总是隐含在AX(除数是8位)或DX和AX(除数是16位)中,寻址方式同乘法指令。
(1)无符号数除法指令DIV
DIV OPRD
16位: AX / OPRD(8位) = AL(商) … AH(余数)
32位:DXAX / OPRD(16位) = AX(商)… DX(余数)
若除数为0,或在8位数除时商超过8位,或16位时商超过16位,则认为是溢出,引起0号中断。
(2)有符号数除法指令IDIV
IDIV OPRD
把被除数和除数作为有符号数,操作与DIV类似
当除数为0,或商太大((8位)>127,(16位)>32767),或商太小((8位)<-127,(16位)<-32767),引起0号中断
3. 符号扩展指令
不影响标志位
(1)字节转换为字指令CBW
CBW
把AL中的符号扩展到AH
AL>0,则(AH)=00H;若AL>0,则(AH)=FFH
(2)字转换为双字指令CWD
CWD
把AX中的符号到DX
类似CBW。
1. 乘法指令
在乘法指令中,一个操作数总是隐含在寄存器AL(8位)或AX(16位)中
另一个操作数可采用除立即寻址之外的任一寻址方式
(1)无符号数乘法指令MUL
MUL OPRD
两个8位数相乘得16位放在AX中,两个16位数相乘得32位,高位字放在DX,低位字存放AX中。
若乘积高半部分不等于0,则CF=1,OF=1,否则CF=OF=0
(2)有符号数乘法指令IMUL
IMUL OPRD
把乘数和被乘数均作为有符号数对待
操作与MUL类似
如果乘积的高半部分不是低半部分的符号扩展,则CF=OF=1,否则CF=OF=0
2. 除法指令
被除数总是隐含在AX(除数是8位)或DX和AX(除数是16位)中,寻址方式同乘法指令。
(1)无符号数除法指令DIV
DIV OPRD
16位: AX / OPRD(8位) = AL(商) … AH(余数)
32位:DXAX / OPRD(16位) = AX(商)… DX(余数)
若除数为0,或在8位数除时商超过8位,或16位时商超过16位,则认为是溢出,引起0号中断。
(2)有符号数除法指令IDIV
IDIV OPRD
把被除数和除数作为有符号数,操作与DIV类似
当除数为0,或商太大((8位)>127,(16位)>32767),或商太小((8位)<-127,(16位)<-32767),引起0号中断
3. 符号扩展指令
不影响标志位
(1)字节转换为字指令CBW
CBW
把AL中的符号扩展到AH
AL>0,则(AH)=00H;若AL>0,则(AH)=FFH
(2)字转换为双字指令CWD
CWD
把AX中的符号到DX
类似CBW。
#3
1.
IMUL CL,结果在AX里面。
2.
MOV AX,7FA2H
CWD
MOV CX,03DDH
IDIV CX
执行后AX是商,DX是余数。
IMUL CL,结果在AX里面。
2.
MOV AX,7FA2H
CWD
MOV CX,03DDH
IDIV CX
执行后AX是商,DX是余数。
#4
1,2楼已经说得很好,不在多说了
#5
请教楼上各位,为什么在51的乘除法指令前加个I啊?使用的哪款单片机啊?
小弟一直只用过PIC和C51的单片机。
IMUL使用的是PC上的汇编语言吗?
小弟一直只用过PIC和C51的单片机。
IMUL使用的是PC上的汇编语言吗?
#6
支持一下吧。2楼3楼说得很清楚了。
#7
1.AL=FEH=-2,CL=11H=17
结果保存在AX=FFDEH=-34
2.AX=7FA2H,BX=03DDH
商AX=0021H,余数DX=0025H
先全部化成十进制数进行除法计算,得到的商和余数再分别化为十六进制即为结果
结果保存在AX=FFDEH=-34
2.AX=7FA2H,BX=03DDH
商AX=0021H,余数DX=0025H
先全部化成十进制数进行除法计算,得到的商和余数再分别化为十六进制即为结果
#8
友情提示:CSDN论坛是禁止倒分了,如果倒分被人举报,所有得分都会被扣除。
#9
求解,16位有符号数除以8位得到的商的符号位在哪里?比如:
ax是-9
bx是3
ax除以bx:
idiv bx
其中ah是余数,al是商,但是商的符号位在哪里?求解答。。。
ax是-9
bx是3
ax除以bx:
idiv bx
其中ah是余数,al是商,但是商的符号位在哪里?求解答。。。
#1
有符号数乘法用imul,除法用idiv
1.MOV AL,0FEH
MOV CL,11H
IMUL CL
因为源操作数cl是字节,结果在AX中
ps:有符号是补码系统
2.无符号数的:
SUB DX,DX
MOV AX,7FA2H
MOV BX,03DDH
DIV BX
结果:商在AX中,余数在DX中
有符号数同理
1.MOV AL,0FEH
MOV CL,11H
IMUL CL
因为源操作数cl是字节,结果在AX中
ps:有符号是补码系统
2.无符号数的:
SUB DX,DX
MOV AX,7FA2H
MOV BX,03DDH
DIV BX
结果:商在AX中,余数在DX中
有符号数同理
#2
帮你找了些资料:
1. 乘法指令
在乘法指令中,一个操作数总是隐含在寄存器AL(8位)或AX(16位)中
另一个操作数可采用除立即寻址之外的任一寻址方式
(1)无符号数乘法指令MUL
MUL OPRD
两个8位数相乘得16位放在AX中,两个16位数相乘得32位,高位字放在DX,低位字存放AX中。
若乘积高半部分不等于0,则CF=1,OF=1,否则CF=OF=0
(2)有符号数乘法指令IMUL
IMUL OPRD
把乘数和被乘数均作为有符号数对待
操作与MUL类似
如果乘积的高半部分不是低半部分的符号扩展,则CF=OF=1,否则CF=OF=0
2. 除法指令
被除数总是隐含在AX(除数是8位)或DX和AX(除数是16位)中,寻址方式同乘法指令。
(1)无符号数除法指令DIV
DIV OPRD
16位: AX / OPRD(8位) = AL(商) … AH(余数)
32位:DXAX / OPRD(16位) = AX(商)… DX(余数)
若除数为0,或在8位数除时商超过8位,或16位时商超过16位,则认为是溢出,引起0号中断。
(2)有符号数除法指令IDIV
IDIV OPRD
把被除数和除数作为有符号数,操作与DIV类似
当除数为0,或商太大((8位)>127,(16位)>32767),或商太小((8位)<-127,(16位)<-32767),引起0号中断
3. 符号扩展指令
不影响标志位
(1)字节转换为字指令CBW
CBW
把AL中的符号扩展到AH
AL>0,则(AH)=00H;若AL>0,则(AH)=FFH
(2)字转换为双字指令CWD
CWD
把AX中的符号到DX
类似CBW。
1. 乘法指令
在乘法指令中,一个操作数总是隐含在寄存器AL(8位)或AX(16位)中
另一个操作数可采用除立即寻址之外的任一寻址方式
(1)无符号数乘法指令MUL
MUL OPRD
两个8位数相乘得16位放在AX中,两个16位数相乘得32位,高位字放在DX,低位字存放AX中。
若乘积高半部分不等于0,则CF=1,OF=1,否则CF=OF=0
(2)有符号数乘法指令IMUL
IMUL OPRD
把乘数和被乘数均作为有符号数对待
操作与MUL类似
如果乘积的高半部分不是低半部分的符号扩展,则CF=OF=1,否则CF=OF=0
2. 除法指令
被除数总是隐含在AX(除数是8位)或DX和AX(除数是16位)中,寻址方式同乘法指令。
(1)无符号数除法指令DIV
DIV OPRD
16位: AX / OPRD(8位) = AL(商) … AH(余数)
32位:DXAX / OPRD(16位) = AX(商)… DX(余数)
若除数为0,或在8位数除时商超过8位,或16位时商超过16位,则认为是溢出,引起0号中断。
(2)有符号数除法指令IDIV
IDIV OPRD
把被除数和除数作为有符号数,操作与DIV类似
当除数为0,或商太大((8位)>127,(16位)>32767),或商太小((8位)<-127,(16位)<-32767),引起0号中断
3. 符号扩展指令
不影响标志位
(1)字节转换为字指令CBW
CBW
把AL中的符号扩展到AH
AL>0,则(AH)=00H;若AL>0,则(AH)=FFH
(2)字转换为双字指令CWD
CWD
把AX中的符号到DX
类似CBW。
#3
1.
IMUL CL,结果在AX里面。
2.
MOV AX,7FA2H
CWD
MOV CX,03DDH
IDIV CX
执行后AX是商,DX是余数。
IMUL CL,结果在AX里面。
2.
MOV AX,7FA2H
CWD
MOV CX,03DDH
IDIV CX
执行后AX是商,DX是余数。
#4
1,2楼已经说得很好,不在多说了
#5
请教楼上各位,为什么在51的乘除法指令前加个I啊?使用的哪款单片机啊?
小弟一直只用过PIC和C51的单片机。
IMUL使用的是PC上的汇编语言吗?
小弟一直只用过PIC和C51的单片机。
IMUL使用的是PC上的汇编语言吗?
#6
支持一下吧。2楼3楼说得很清楚了。
#7
1.AL=FEH=-2,CL=11H=17
结果保存在AX=FFDEH=-34
2.AX=7FA2H,BX=03DDH
商AX=0021H,余数DX=0025H
先全部化成十进制数进行除法计算,得到的商和余数再分别化为十六进制即为结果
结果保存在AX=FFDEH=-34
2.AX=7FA2H,BX=03DDH
商AX=0021H,余数DX=0025H
先全部化成十进制数进行除法计算,得到的商和余数再分别化为十六进制即为结果
#8
友情提示:CSDN论坛是禁止倒分了,如果倒分被人举报,所有得分都会被扣除。
#9
求解,16位有符号数除以8位得到的商的符号位在哪里?比如:
ax是-9
bx是3
ax除以bx:
idiv bx
其中ah是余数,al是商,但是商的符号位在哪里?求解答。。。
ax是-9
bx是3
ax除以bx:
idiv bx
其中ah是余数,al是商,但是商的符号位在哪里?求解答。。。