实验要求:
求表达式x*y+z-200的值
实验步骤:
1.按照实验要求,画出相应的计算流程图
可以看到,先算x*y(保存在dx:cx),然后扩展z为双字节(dx:ax),计算x*y+z-200(保存在bx:cx),然后把结果移到w中。
2.按照基本的编辑步骤,编辑代码,并编译。
code:
DATA SEGMENT
X DW 1000
Y DW 2000
Z DW 3000
W DW 2 DUP(?) ;定义段结束
DATA ENDS
CODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AX,X IMUL YMOV CX,AX ;把乘积结果保存起来(低8位)MOV BX,DX ;高8位MOV AX,ZCWD ;位扩展,防止运算不匹配ADD CX,AXADC BX,DXSUB CX,200SUB BX,0MOV W,CX ;把结果保存到w(低16位)MOV W+2,BX ;高16位MOV AH,4CHINT 21HCODE ENDSEND START
每一步都有相应的注释。其中IMUL为有符号乘法,了解更多请
点击
编译并连接
3.单步调试查看结果
不停t命令,直到程序返回dos
然后查看内存,可以看到:
x:03E8, y:07D0 , z:0BD8
结果w :1E8F70
4.验证结果
打开系统自带的计算机并ALT+3调到程序员专用型。
输入表达式计算结果得到2002800
转化为16进制:
ok,到此结束,运行结果正确。
知识点:
掌握cwd扩展,明白为什么要进行扩展。
掌握IMUL的用法,熟悉高位计算。
练习结构化编程。