linux汇编div除法,【汇编语言】除法指令div和乘法指令mul

除法指令div

除数:

分8位和16位,存放在reg(寄存器)或内存单元

被除数:

分16位和32位

被除数为16位,则除数为8位,被除数默认存放在AX中;

被除数为32位,则除数为16位,被除数存放在AX和DX中,AX低8位,DX高8位

被除数32位16位

除数16位8位

被除数存放位置AXAX(低8位)

DX(高8位)

结果:

除数为8位,AL存放商,AH存放余数

除数为16位,AX存放商,DX存放余数

计算100001 / 100

被除数:16位最大表示65535,所以被除数100001只能用两个16位寄存器ax和dx存放

除数:100小于255,可以用8位表示,但被除数为32位,所以除数必须用16位寄存器存放

Debug数据默认16位,所以要先把被除数和除数转换成16进制

100001 = 186a1H

100 = 64H

程序如下:mov dx,1

mov ax,86a1

mov bx,100

dix bx

计算1001 / 100

被除数:1001  < 65535,用16位寄存器AX存放

除数:被除数用16位,除数用8位

转换16进制

1001 = 03e9H

100 = 64H

程序如下:mov ax,03e9

mov bl,64

div bl

乘法指令mul

两个相乘的数都是8位或都是16位

8位的话,一个默认存放在AL中,另一个存放在8位寄存器或内存字节单元中

若是16位,一个默认存放在AX中,另一个存放在16位寄存器或内存字单元中

相乘的积:8位乘法默认存放在AX中

若是16位,高8位默认放在DX,低位放在AX

示例程序:

8位乘法,100 * 2mov al,100

mov bl,2

mul bl

16位乘法,100 * 10000mov ax,100

mov bx,10000

mul bx

你可能感兴趣的:(linux汇编div除法)