雪球丶 发表于 2020-3-17 16:25:46

实验10(2)

本帖最后由 雪球丶 于 2020-3-17 16:30 编辑

assume cs:code

code segment
start:
                mov ax,4240H
                mov dx,000FH
                mov cx,0AH
                call divdw
       
                mov ax,4c00h
                int 21h
       
;子程序,被除数为dword型,除数为word型,结果为dword型
;输入参数:
;        (ax)=dword型数据的低16位
;        (dx)=dowrd型数据的高16位
;        (cx)=除数
;返回值:
;        (dx)=结果的高16位,(ax)=结果的低16位
;        (cx)=余数
;32位除法所需的寄存器:DX被除数的高16位,AX被除数的低16位,reg,除数(这里是cx)结果:AX商,DX余数
divdw:
                mov si,ax        ;低16位暂存在si中
                ;计算高16位,将16位计算转化为32位计算
                mov ax,dx
                mov dx,0
                div cx
                mov bx,ax         ;H/N存放在BX中
                ;计算低16位
                mov ax,si
                div cx
               
                mov cx,dx
                mov dx,bx
                ret
               
code ends
end start
页: [1]
查看完整版本: 实验10(2)