***汇编语言 实验10.2 解决除法溢出的问题

来源:互联网 发布:铁路四等站 知乎 编辑:程序博客网 时间:2024/06/01 08:23

汇编语言 实验10.2 解决除法溢出的问题

写给自己的一些题外话: 因为各种各样(考试,加上萎靡的精神状态)的原因,在这一题卡了好几天,就是搞不懂商和余数的表示,直到今天才恍然大悟,下面我先总结一下div的用法,就当做自己的知识梳理了,我知道也没有人会看。。

div

这是汇编语言中的除法运算    格式为:div [bx]
有两种运算模式:
    1.  被除数是16位,除数是8位。在这种情况下,被除数放在ax中,除数放在8位reg或者内存单元中。产生的结果:商放在al中,余数放在ah中    2.  被除数是32位,除数是16位。在这种情况下,被除数的高16位放在dx中,低16位放在ax中,除数放在16位reg或者内存单元中。产生的结果:商放在ax中,余数放在dx中。    3.  以上。是不是感觉很绕!    4.  下面开始程序描述

子程序描述

名称:divdw功能:进行不会产生溢出的除法运算,被除数为dword型,除数为word型,结果为dword型。参数:    (ax)=dword型数据的低16位    (dx)=dword型数据的高16位    (cx)=除数返回:    (dx)=结果的高16位    (ax)=结果的低16位    (cx)=余数应用举例:计算1000000/10(F4240H/0AH)mov ax,4240Hmov dx,000FHmov cx,0AHcall divdw结果:(dx)=0001H,(ax)=86A0H,(cx)=0

代码

assume cs:code,ss:stackstack segment    dw 0,0stack endscode segmentstart:  mov ax,stack    mov ss,ax    mov sp,10h    mov ax,4240h    mov dx,000fh    mov cx,0ah    call divdw    mov ax,4c00h    int 21hdivdw:  push ax    mov ax,dx    mov dx,0    div cx    mov bx,ax    pop ax    div cx    mov cx,dx;余数    mov dx,bx;高八位的商    ;此时ax中存储的就是低八位的商    retcode endsend start
原创粉丝点击