资源描述
实验四 加减乘除算术运算类指令
一.实验目的
1.学习掌握加减乘除等算术运算类指令的功能
2.学习掌握加减乘除指令对FLAG的影响
二。实验工具软件
MS-DOS DEBUG PC机
三.实验过程及调试结果
1.加法指令
(1)实现无符号数相加 例如 25+36
-a 2000:0000
2000:0000 mov al,19
2000:0002 mov bl,24
2000:0004 add al,bl
2000:0006
-g=2000:0000 2000:0006
结果:
-r
(AL)=3D CF=0 ZF=0 PF=0
结果解释:(AL)=3D,该无符号数对应的真值是61。由CF标志位0标明无符号数没有进位(超出目的操作数表示范围),“和”结果可用。
人工验算真值“和”结果:正确的。
(2)实现有符号数相加例如(-25)+(-46)
-a 2000:0000
2000:0000 mov al,E7
2000:0002 mov bl,D2
2000:0004 add al,bl
2000:0006
-g=2000:0000 2000:0006
结果:
-r
(Al)=B9H=(-71)补 OF=0 SF=1 ZF=0
结果解释:结果解释:(AL)=?,对应的真值是?OF=?,表明结果是?SF=?表明?
人工验算真值“和”结果:
2.减法指令
(1)实现无符号数减。例如 36-15
-a 2000:0000
2000:0000 mov al,24
2000:0002 mov bl,0f
2000:0004 SUB al,bl
2000:0006
-g=2000:0000 2000:0006
观察 al,OF,CF,ZF,SF
结果解释:(AL)=?,对应的真值是?CF=?,表明结果是?
人工验算和计算机结果解释比较,结论是?
(2)实现有符号数(-25)-(-46)
-a 2000:0000
2000:0000 mov al,E7
2000:0002 mov bl,d2
2000:0004 SUB al,bl
2000:0006
-g=2000:0000 2000:0006
观察 al,OF,CF,ZF,SF,分析结果是否正确,并加以算术验证
结果解释:(AL)=?,对应的真值是?OF=?,表明结果是?SF=?表明?
3。乘法指令
(1) 实现无符号数。例如 36*15
-a 2000:0000
2000:0000 mov al,24
2000:0002 mov bl,0f
2000:0004 mul bl
2000:0006
-g=2000:0000 2000:0006
结果:(AX)=021CH=540 CF=1 OF=1
结果解释:(AX)=?,对应的真值是?CF=?OF?,表明结果是?
(2)实现有符号数(-25)*(-6)
-a 2000:0000
2000:0000 mov al,E7
2000:0002 mov bl,FA
2000:0004 imul bl
2000:0006
-g=2000:0000 2000:0006
结果:(AX)=0096H=(+150)补 CF=OF=1
结果解释:(AX)=?,对应的真值是?CF=?OF?,表明结果是?
4.除法指令
(1)无符号数436/15
-a 2000:0000
2000:0000 mov ax,01B4
2000:0003 mov bl,0f
2000:0005 idiv bl
2000:0007
-g=2000:0000 2000:0007
结果解释:(AL)=?(AH)=?,对应的真值是?怎样影响标志 ?
实现有符号数(-525)/(+6)
-a 2000:0000
2000:0000 MOV ax,FDF3
2000:0003 mov bl,06
2000:0005 idiv bl
2000:0007
-g=2000:0000 2000:0007
结果:(AX)=FDA9
(AH)=FDH=(-3)补 (AL)=A9H=(-87)补
结果解释:(AL)=?(AH)=?,对应的真值是?怎样影响标志 ?
四.实验思考
程序员应该如何理解运算结果标志的逻辑含义?
(1)无符号数加减的结果,哪些标志有意义?什么意义?
(2)有符号数加减的结果,哪些标志有意义?什么意义?
(3)无符号数相乘的结果,哪些标志有意义?什么意义?
(2)有符号数相乘的结果,哪些标志有意义?什么意义?
(4)除法运算的商不应该超出除数的位数,否则商溢出(出现除0中断)
展开阅读全文