上一题下一题
跳转到
 
 
  世界如此多姿,发展如此迅速,窥一斑未必还能知全豹。但正如万花筒一样,每一个管窥都色彩斑斓。  
 
 
  知识通道 | 学习首页 | 教师首页 | PK首页 | 知识创造首页 | 企业首页 | 登录
 
本文对应知识领域
除法指令和类型转换指令
作者:未知 申领版权
2010年12月12日 共有 1612 次访问 【添加到收藏夹】 【我要附加题目
受欢迎度:

    除法指令
    除法指令的被除数是隐含操作数,除数在指令中显式地写出来。CPU会根据除数是8位、16位,还是32位,来自动选用被除数AX、DX-AX,还是EDX-EAX。
    除法指令功能是用显式操作数去除隐含操作数,可得到商和余数。当除数为0,或商超出数据类型所能表示的范围时,系统会自动产生0号中断。
    、无符号数除法指令DIV(Unsigned Divide Instruction)
    指令的格式:DIV  Reg/Mem
    指令的功能是用显式操作数去除隐含操作数(都作为无符号数),所得商和余数按表5.3的对应关系存放。指令对标志位的影响无定义。
    、有符号数除法指令IDIV(Signed Integer Divide Instruction)
    指令的格式:IDIV  Reg/Mem
    受影响的标志位:AF、CF、OF、PF、SF和ZF
    指令的功能是用显式操作数去除隐含操作数(都作为有符号数),所得商和余数的对应关系见表5.3。
    表5.3 除法指令除数、被除数、商和余数的对应关系

    
除数位数
    
隐含的被除数
    

    
余数
    
举例
    
8位
    
AX
    
AL
    
AH
    
DIV  BH
    
16位
    
DX-AX
    
AX
    
DX
    
DIV  BX
    
32位
    
EDX-EAX
    
EAX
    
EDX
    
DIV  ECX
    

 
    
    类型转换指令
    在作有符号除法时,有时需要把短位数的被除数转换成位数更长的数据类型。比如,要用BL中的数据去除AL,但根据除法指令的规定:除数是8位,则被除数必须是AX,于是就涉及到AH的取值问题。
    为了方便说明,假设:(AH)=1H,(AL)=90H=-112D,(BL)=10H。
    1)、在作除法运算前,必须处理AH的原有内容
    假设在作除法时,不管AH中的值,这时,(AH、AL)/BL的商是19H,但我们知道:AL/BL的商应是-7,这就导致:计算结果不是所预期的结果,所以,在作除法运算前,程序员必须要处理AH中的值。
    2)、作无符号数除法时
    可强置AH的值为0,于是,可得到正确的结果。
    3)、作有符号数除法时
    如果强置AH为0,则AX=0090H,这时,AX/BL的商为9,显然结果也不正确。
    如果把AL的符号位1,扩展到AH中,得:AX=0FF90H=-112D,这时,AX/BL的商就是我们所要的正确结果。
    综上所述,因为在进行有符号数除法时存在隐含操作数数据类型转换的问题,所以,系统提供了四条数据类型转换指令:CBW、CWDCWDECDQ
    、字节转换为字指令CBW(Convent Byte to Word)
    指令的格式:CBW
    该指令的隐含操作数为AH和AL。其功能是用AL的符号位去填充AH,即:当AL为正数,则AH=0,否则,AH=0FFH。
    指令的执行不影响任何标志位。
    、字转换为双字指令CWD(Convent Word to Doubleword)
    指令的格式:CWD
    该指令的隐含操作数为DX和AX,其功能是用AX的符号位去填充DX。指令的执行不影响任何标志位。
    、字转换为扩展的双字指令CWDE(Convent Word to Extended Doubleword)
    指令的格式:CWDE                ;80386
    该指令的隐含操作数为DX和AX,其功能是用AX的符号位填充EAX的高字位。指令的执行不影响任何标志位。
    、双字转换为四字指令CDQ(Convent Doubleword to Quadword)
    指令的格式:CDQ                  ;80386
    该指令的隐含操作数为EDX和EAX,指令的功能是用EAX的符号位填充EDX。指令的执行不影响任何标志位。
    下面是学习和掌握除法类指令的控件,可模拟执行DIVIDIVCBWCWDCWDECDQ等指令。
    
    例5.5 编写程序段,完成下面计算公式,并把所得的商和余数分别存入X和Y中(其中:A,B,C,X和Y都是有符号的字变量)。
    (C - 120   A*B) / C

    
解:
    
 
    

    
A
    
DW  ?
    
B
    
DW  ?
    
C
    
DW  ?
    
X
    
DW  ?
    
Y
    
DW  ?
    

    
MOV
    
AX, C
    
SUB
    
AX, 120D
    
;书写指令“ADD AX, -120D”也可以
    
CWD
    
MOV
    
CX, DX
    
MOV
    
BX, AX
    
;(CX, BX)←(DX, AX),调度寄存器,为作乘法准备必要的寄存器
    
MOV
    
AX, A
    
IMUL
    
B
    
;(DX, AX)←A*B
    
ADD
    
AX, BX
    
;计算32位二进制之和,为作除法作准备
    
ADC
    
DX, CX
    
IDIV
    
C
    
;AX是商,DX是余数
    
MOV
    
X, AX
    
;分别保存商和余数到指定的字变量单元里
    
MOV
    
Y, DX
    

    

 

相关新闻

缔约立富---赚钱靠真智慧
Excel图表创建步骤
运用购买指令成功缔结客户,最具诱惑力的催眠式销售方法
第1篇 计算机的基础知识
SQL优化34条
学习存储过程
大家来看一些不错的sql语句
SQL操作全集(1)
有机反应的主要类型
有关烃的计算类型

您可能对这些感兴趣  

干货分享|10本最受国外孩子喜爱的英文词典——上
从孩子的表现看父母的缺点!请家长对号入座,看看你是哪一类?
20条制作PPT的视觉原则
培训简史:培训者必知的历史轨迹
广田丰管理培训生人才培养调查报告
第4讲 作为上司的职业经理
第3讲 作为同事的职业经理
第2讲 作为下属的职业经理
第1讲 培养经理人的管理素养
酒店前台新员工上岗培训计划

题目筛选器
日期:
类型:
状态:
得分: <=
分类:
作者:
职业:
关键字:
搜索

 
 
 
  焦点事件
 
  知识体系
 
  职业列表
 
 
  最热文章
 
 
  最多引用文章
 
 
  最新文章
 
 
 
 
网站介绍 | 广告服务 | 招聘信息 | 保护隐私权 | 免责条款 | 法律顾问 | 意见反馈
版权所有 不得转载
沪ICP备 10203777 号 联系电话:021-54428255
  帮助提示    
《我的太学》是一种全新的应用,您在操作中遇到疑问或者问题,请拨打电话13564659895,15921448526。
《我的太学》