zoukankan      html  css  js  c++  java
  • ***汇编语言 实验10.2 解决除法溢出的问题

    汇编语言 实验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,4240H
    mov dx,000FH
    mov cx,0AH
    call divdw
    结果:(dx)=0001H,(ax)=86A0H,(cx)=0
    

    代码

    assume cs:code,ss:stack
    stack segment
        dw 0,0
    stack ends
    code segment
    start:  mov ax,stack
        mov ss,ax
        mov sp,10h
        mov ax,4240h
        mov dx,000fh
        mov cx,0ah
        call divdw
    
        mov ax,4c00h
        int 21h
    
    divdw:  push ax
        mov ax,dx
        mov dx,0
        div cx
        mov bx,ax
        pop ax
        div cx
        mov cx,dx;余数
        mov dx,bx;高八位的商
        ;此时ax中存储的就是低八位的商
        ret
    
    code ends
    end start
  • 相关阅读:
    uva 532 Dungeon Master
    hrbeu 哈工程 Tunnels
    poj 1088 滑雪
    hrbeu 哈工程 Eular Graph
    uva 567 Risk
    hrbeu 哈工程 Minimum time
    产品要不要做先回答的10个问题
    用icacls命令行给目录赋权
    SQL Server的FileStream和FileTable
    cygwin 离线安装包(包括vim,ssh,scp)
  • 原文地址:https://www.cnblogs.com/litlife/p/7512774.html
Copyright © 2011-2022 走看看