- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验2-汇编语言上机环境及基本操作
实验二 汇编语言上机环境及基本操作
一、实验目的及要求
1.掌握汇编语言源程序的书写格式和要求
2.掌握在计算机上建立、汇编、连接、调试及运行程序的方法。
3.学会使用记事本、MASM、LINK、DEBUG等软件工具。
4.掌握将数据和代码都放在代码段的程序设计方法。
5.掌握将数据和代码放不同段的程序设计方法。
6.掌握用LOOP指令构建循环程序
二、实验内容
1.练习:计算机上建立、汇编、连接、调试及运行程序的方法
编写程序,计算2^12
1)在D盘建立一文件夹,命名(例如101),将MASM.EXE和LINK.EXE复制到此文件夹;在此文件夹中新建文本文件,文件名改为汇编源程序名,例如:2e12.asm
用记事本打开2e12.asm,输入源程序并保存。
源程序:
assume cs:code
code segment
mov ax,2
mov cx,11
s: add ax,ax
loop s
mov ax,4c00h
int 21h
code ends
end
2)汇编源程序
点开始菜单,点运行,输入CMD按回车,进入命令提示符窗口;
输入D:并回车,打开D盘,再输入CD 101并回车,进入101文件夹;
输入MASM 2e12并回车,一路按回车,进行汇编
汇编过程的错误分警告错误(Warning Errors)和严重错误(Severe Errors)两种。其中警告错误是指汇编程序认为的一般性错误;严重错误是指汇编程序认为无法进行正确汇编的错误,并给出错误的个数、错误的性质。这时,就要对错误进行分析,找出原因和问题,然后再调用屏幕编辑程序加以修改,修改以后再重新汇编,一直到汇编无错误为止。汇编通过后,会生成目标文件2e12.obj
3)连接目标程序、
输入LINK 2e12并回车,一路按回车
连接成功后,会生成可执行文件2e12.exe
4)跟踪并调试可执行程序
输入DEBUG 2e12.exe并按回车,进入DEBUG调试程序
单步运行程序,跟踪程序,每执行一条指令,检查相关寄存器或存储器的数据,看看程序是否按我们的意愿运行,若有出入,修改源程序,重新汇编、连接、运行调试,直到成功
编写程序计算100×300,用循环结构实现
完成否?
2.将数据和代码都放在代码段的程序设计方法
程序功能:将8个字数据累加求和,存入AX
便于大家检查验证,将8个字设为1,2,3,4,5,6,7,8
assume cs:codesg
codesg segment
dw 1,2,3,4,5,6,7,8
start: mov bx,0
mov ax,0
mov cx,8
s: add ax,cs:[bx]
add bx,2
loop s
mov ax,4c00h
int 21h
codesg ends
end start
调试程序,结果是否正确?
若将程序中的标号start去掉,结果如何?
add ax,cs:[bx]语句中段前缀为什么用CS,能去掉吗?能改为DS吗?
3.将数据和代码都放在不同的段,实现题2的功能
assume cs:codesg,ds:datasg
datasg segment
array dw 1,2,3,4,5,6,7,8
datasg ends
codesg segment
start:
mov ax,datasg
mov ds,ax
mov bx,offset array
mov ax,0
mov cx,8
s: add ax,ds:[bx]
add bx,2
loop s
mov ax,4c00h
int 21h
codesg ends
end start
调试程序,结果如何?
比较3和2的源程序,多段程序设计与单一段程序设计
4.对题3的程序稍做修改,求出8个数中的最小数和最大数分别存入MIN和MAX单元(若能力有限,只求其中之一)
提示:用比较指令(P62)结合条件转移指令(P89),产生不同的程序分支
要求简要描述解题思路,源程序要加上必要的注释。范例:
;在ADDR单元中存放着数Y的地址
;功能:将Y中1的个数存入COUNT单元
;测试数据存于CS:2字单元
;测试1:修改CS:2字单元内容为0007H,结果为3
;测试2:修改CS:2字单元内容为0FFFFH,结果为10H
;解题思路:从高到低逐位判断是否为1,累计1的个数到CX
;左移16次,根据符号位可实现上述功能
;并且左移16次后,数必然为0,刚好作为循环结束条件
CODE SEGMENT
ASSUME CS:CODE
ADDR DW
文档评论(0)