| outman |
2011-08-09 14:56 |
8086汇编函数:divdw
子程序要求: 名称:divdw 功能:进行不会产生溢出的除法运算,被除数为dword,除数为word,结果为dword。 参数:ax:dword被除数的低16位 dx:dword被除数的高16位 cx:8位除数 返回:ax::dword商的低16位 dx::dword商的高16位 cx:余数 PS:DIV指令可以做除法,但是在很多情况下会出现这种情况:
- mov ax,1000h
mov dx,1 mov bx,1 div bx
这个除法结果的商为11000h,而11000h在ax中放不下。 要求作出一个代替div指令的子程序。 有一公式:(c语言语法) X/N=(H/N)*65536+(H%N*65536+L)/N X%N=(H%N*65536+L)%N X:dword被除数 N:word除数 H:X的高十六位 L:X的第十六位
assume cs:code code segment start: mov ax,4241h mov dx,000fh mov cx,0ah call divdw mov ax,4ch int 21h
divdw: push ax mov ax,dx mov dx,0 div cx mov si,ax
pop ax div cx mov cx,dx mov dx,si
ret code ends end start
|
|