王爽《汇编语言》实验10.2——解决除法溢出的问题
来源:互联网 发布:什么阅读软件最好 编辑:程序博客网 时间:2024/06/06 11:02
;====================================================================
;子程序DIVDW功能;进行不会产生溢出的除法运算。
;====================================================================
ASSUMECS:CODE,DS:DATA
DATASEGMENT
DB'Welcome to masm!',0
DATAENDS
CODESEGMENT
START:
MOVAX,DATA ;初始化DS
MOVDS,AX
MOVAX,4240H
MOVDX,000FH
MOVCX,0AH
CALL DIVDW
MOVAX,4C00H
INT21H
;-----------------------------------------------------------------
;名称:DIVDW
;功能:进行不会产生溢出的除法运算,被除数位dword型,除数为word型,
; 结果为dword型。
;参数:(AX)=dword型数据的低16位 ,(DX)=dword型数据的高16位 ,(CX)=除数
;返回:(AX)=结果的低16位 ,(DX)=结果的高16位 ,(CX)=余数
;应用的公式:X/N = INT(H/N)*FFFF + [REM(H/N)*FFFF+L]/N
;X=被除数(0~FFFFFFFF),N=除数(0~FFFF),H=X的高16位(0~FFFF),
;L=X的低16位(0~FFFF),INT():取商,REM():取余
DIVDWPROCNEAR
PUSHBX
PUSHCX
PUSHAX
MOVAX,DX ;把(DX)储存到AX中
MOVDX,0 ;(DX)置零
DIVCX ;16位除法,H/N,(AX)=商,(DX)=余数
MOVBX,AX ;把AX中高16位的结果转移到BX中
MOVAX,0 ;(DX)=REM(H/N)*FFFF高16位,(AX)=REM(H/N)*FFFF低16位=0
MOVCX,AX ;(CX)=REM(H/N)*FFFF低16位
POPAX ;(AX)=X的低16位
ADDCX,AX ;(CX)=REM(H/N)*FFFF+L的低16位
MOVAX,CX ;(AX)=REM(H/N)*FFFF+L的低16位
POPCX ;恢复除数N
DIVCX ;(AX)=结果的低16位,(DX)=结果的余数
MOVCX,DX ;(CX)=结果的余数
MOVDX,BX ;(DX)=结果的高16位
POPBX
RET
DIVDWENDP
;-------------------------------------------------------------------
CODEENDS
END START
- 王爽《汇编语言》实验10.2——解决除法溢出的问题
- ***汇编语言 实验10.2 解决除法溢出的问题
- 汇编语言 王爽 实验十 解决除法溢出问题
- 王爽《汇编语言》第十章实验之——除法溢出问题
- 汇编语言 第三版 王爽 实验10-2 编写子程序 之 解决除法溢出问题 divdw
- 2.解决除法溢出问题-汇编语言(王爽)-实验10 编写子程序
- 实验10.2_解决除法溢出的问题
- 汇编语言子函数——除法溢出问题
- 汇编语言解决除法溢出问题的小程序
- 汇编实验10-2 解决除法溢出的问题
- 解决除法溢出的问题
- 汇编语言 之 除法溢出问题
- 解决除法溢出问题
- 编写解决除法溢出问题的子程序
- 第十章实验(二)除法溢出的问题
- 除法中断错误的自定义处理 —王爽《汇编语言》
- 汇编中的除法溢出的解决
- 除法溢出问题
- 数据结构之选择排序的Java实现
- WEB前端-HTML-基础
- IOS开发-基础篇-Two
- 常见Android工具类之列表(未完待续)
- 什么叫死锁?产生死锁的条件和预防死锁的各种方法
- 王爽《汇编语言》实验10.2——解决除法溢出的问题
- ionic之与你相遇
- Linux
- Java enum
- Android Studio系列教程一--下载与安装
- 自己写个操作系统《一》制作启动U盘,真机启动
- tiny4412之环境设置
- 用nvm管理NodeJS
- 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?