实验要求:
求表达式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 SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,X IMUL Y MOV CX,AX ;把乘积结果保存起来(低8位) MOV BX,DX ;高8位 MOV AX,Z CWD ;位扩展,防止运算不匹配 ADD CX,AX ADC BX,DX SUB CX,200 SUB BX,0 MOV W,CX ;把结果保存到w(低16位) MOV W+2,BX ;高16位 MOV AH,4CH INT 21H CODE ENDS END START每一步都有相应的注释。其中IMUL为有符号乘法,了解更多请 点击
编译并连接
3.单步调试查看结果
不停t命令,直到程序返回dos
然后查看内存,可以看到:
x:03E8, y:07D0 , z:0BD8
结果w :1E8F70
4.验证结果
打开系统自带的计算机并ALT+3调到程序员专用型。
输入表达式计算结果得到2002800
转化为16进制:
ok,到此结束,运行结果正确。
知识点:
掌握cwd扩展,明白为什么要进行扩展。
掌握IMUL的用法,熟悉高位计算。
练习结构化编程。