汇编语言——第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的用法,熟悉高位计算。
练习结构化编程。
相关文章推荐
- Android 快速开发系列 打造万能的ListView GridView 适配器
- 史上最详细的Hashtable详解--源码分析
- u-boot源码分析第一阶段之Start.S
- Android 快速开发系列 打造万能的ListView GridView 适配器
- Java中如何获取系统信息
- 搭建树莓派交叉编译环境
- iOS开发-beginUpdates && endUpdates用法
- 个人对B/S项目的一些理解(一)
- SimpleDateFormat 相关用法
- 一个开发眼中的运维
- 修改mysql全日志中一个sql多行的perl脚本
- JSP的八个内置对象
- 第十二章 图形用户接口
- 在ThinkPHP3.2中使用memcache
- 系统的分享。
- 3月第3周网络安全报告:被篡改.COM网站占74.3%
- 宏的应用
- ConcurrentHashMap和HashMap的区别
- UIScrollViewDelegate
- js 字符串转换数字