您的位置:首页 > 其它

汇编语言——第2次上机实验

2016-03-29 10:36 309 查看

实验要求:

求表达式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的用法,熟悉高位计算。

练习结构化编程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: