文章转自
博主 没落的残阳
这节来学习下无符号整数的除法运算指令,div(无符号)指令执行8位、16位和32位无符号整数的除法运算。指令中必须是唯一的一个寄存器或内存操作数是除数。
div指令格式:
div 8位寄存器/8位内存操作数
div 16位寄存器/16位内存操作数
div 32位寄存器/32位内存操作数
div指令格式和我们的mul基本可以算作是相反的。那么我们看下被除数 、 除数、商、余数之间的关系。
被除数 除数 商 余数
ax 8位寄存器/8位内存操作数 al ah
dx:ax 16位寄存器/16位内存操作数 ax dx
edx:eax 32位寄存器/32位内存操作数 eax edx
1.
举个例子:
mov ax, 0060h
mov bl, 2
div bl ;al = 30h , ah = 00h
那么执行完后, 商是30h ,余数是00h
2.
在举个例子
执行(6005h/100h),由于我们的出示是16位,所以被除数是放在dx:ax中的。 但是由于被除数是6005h,所以我们必须将dx清0.
xor dx, dx
mov ax, 6005h
mov bx, 100h
div bx
那么执行后, 我们的ax = 0060h, dx = 0005h。 所以我们的商是60h, 余数是5h。
很简单。