ImageVerifierCode 换一换
格式:DOCX , 页数:58 ,大小:760.38KB ,
资源ID:16981340      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16981340.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汇编语言实验汇总福建农林大学最新文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

汇编语言实验汇总福建农林大学最新文档格式.docx

1、实验时间:指导教师签字:成绩:实验一 汇编程序的汇编及运行1实验目的和要求1、 熟悉汇编程序的汇编、连接、执行过程2、 生成LST文件,查看LST文件3、 生成OBJ文件,修改语法错误4、 生成EXE文件5、 执行2实验环境IBMPC机及其兼容机实验的软件环境是:操作系统:DOS 2.0以上;调试程序:DEBUG.COM;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。3实验内容及实验数据记录1、将数据段输入,取名1.txt,保存在MASM文件夹下。生成LST文件,

2、(不必连接、运行)用EDIT查看1.LST文件。试回答:DA1,DA2的偏移量分别是多少?COUNT的值为多少?DATA SEGMENT ORG 20H NUM1=8 NUM2=NUM1+10H DA1 DB IBM PC DA2 DB 0AH, 0DH COUNT EQU $-DA1 DATA ENDS END2、 输入有错误的文件,修改错误语句。(MASM没有出现错误即可。不必连接、运行。) DATA SEGMENT VAR1 DB 0, 25, ODH, 300 VAR2 DB 12H, A4H, 6BH VAR3 DB ABCDEF VAR4 DW 1234H, 5678H VAR5

3、DW 10H DUP(? DATA ENDS CODE SEGMENT ASSUME CS: CODE, DE: DATA BEING MOV AX, DATA MOV DS, AX LEA SI, VAR5 MOV BX, OFFSET VAR2 MOV SI, 0ABH MOV AX, VAR1+2 MOV BX, SI MOV VAR5+4, VAR4 MOV AH, 4CH INT 21H CODE ENDS END START3、 输入正确的程序,汇编、连接、运行STACKS SEGMENT STACK DW 128 DUP(? STACKS ENDS DATAS SEGMENT S

4、TRING DB WELCOME!, 13, 10, $ DATAS ENDS CODES SEGMENT ASSUME CS: CODES, DS: DATAS START: MOV AX, DATAS MOV DS, AX LEA DX, STRING MOV AH, 9 INT 21H MOV AH, 4CH CODES ENDS END START4算法描述及实验步骤实验1:新建1.txt文件-输入代码-在CMD中编译实验2:新建2.txt文件-在CMD中编译-改错实验3:新建3.txt文件在CMD中编译-连接-运行-输出5调试过程无6. 实验结果【实验1】分析:有上图可知,DA1,D

5、A2的偏移量分别是0020 0026 COUNT的值0008【实验2】由上图可知有 9个severe errors 错误信息如下改错:(1)VAR1 DB 0, 25, ODH, 300 超过一个字节,改为小于25的数即可(2)VAR2 DB 12H, A4H, 6BH 将A4H改为0A4H(3)ASSUME CS: DATA 将DE改为DS(4)BEGIN后面要加冒号(5)MOV SI, 0ABH 立即数送内存单元要指定字节或字 ,如前面加BYTE PTR(6)MOV AX, VAR1+2 字节数据不能送字寄存器(7)MOV BX, SI 内存单元不能传送数据(8)END START 应改为

6、 END BEGIN【实验3】3.1汇编3.2链接3.3运行,输出WELCOME!如下图7. 总结通过此次实验,掌握了用masm +文件名(含扩展名) 命令来编译程序,link+文件名命令来链接生成exe文件,熟悉了代码指令的修改及 编译指令的规范准则,为以后进一步学习打下基础。计算机专业:计算机年级: 实验室号_ 计算机号 2016-10-24指导教师签字:刘庆连成绩:实验二 DEBUG的使用(1)学习使用DEBUG的命令;(2)使用DEBUG命令在数据段中查看程序运行的结果;(3)利用DEBUG运行简单的程序段。 操作系统:1)输入程序观察寄存器变化 使用DEBUG,将下面的程序段写入内存

7、,逐条执行,观察每条指令执行后,CPU中相关寄存器的内容变化。注意用T命令执行时,CS: IP寄存器的内容使用DEBUG,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器的内容变化。 MOV AX, 4E20 ADD AX, 1416 MOV BX, 2000 ADD AX, BX MOV BX, AX MOV AX, 001A MOV BX, 0026 ADD AL, BL ADD AH, BL ADD BH, AL MOV AH, 0 ADD AL, 9C2)下列程序单步运行,注意AL,BX,CX寄存器的变化,并观察数据段字母的变化。如果是将小写字母改成大写字母带注

8、释的语句该如何修改? DSEG SEGMENT MSG1 DB abc DSEG ENDS CSEG SEGMENT ASSUME CS: CSEG, DS: DSEG START: MOV AX, DSEG LEA BX, MSG1 MOV CX, 3 S: MOV AL, BX AND AL, 11011111B ;将AL中的ASCII码的第5位置0, ;变成大写字母。 MOV BX, AL INC BX LOOP S MOV AL, 0 CSEG ENDS3)程序的跟踪执行操作 在DOS下直接输入文件主名就可以执行文件了,有的程序会显示结果,可能执行后什么结果都没有,是因为程序中没有显示

9、命令。那么如何查看程序的运行结果呢?程序执行过程的跟踪操作步骤如下: (1)在DOS下输入:DEBUG 文件名.EXE (2)在DEBUG提示符下输入U命令如果程序中有数据段,可以看到反汇编后第一句可执行语句为:A地址:B地址 MOV AX, K地址 如:1261:0000 MOV AX, 1260其中:K地址就是数据段的段寄存器内容,A地址为代码段段寄存器地址,B地址为程序第一条指令的偏移地址。(3)可以用T命令单步执行指令,执行到 MOV AH, 4CH时结束,也可以用G命令执行整个程序,输入:G=B地址(如:G=0000) (4)用D命令查看程序执行后数据段的变化 输入:D K地址:0

10、(如:D1260:0)在显示的数据中,对照源程序或LST文件查看结果所在的偏移地址的内容4)输入下面的程序,按实验一和上面的步骤运行一遍。这是一个两个数相与的程序。结果存放在MSG2单元中,偏移地址为?值为多少? MSG1 DW 7856H, 2038H MSG2 DW ? MOV DS, AX MOV AX, MSG1 AND AX, MSG1+2 MOV MSG2, AX 3.编写调试下面的程序,用DEBUG查看数据段中的结果1),X,Y,W为字节类型变量,结果存于Z单元,写出数据段和代码段。 2)X,Y为字节类型数,求,写出完整的数据段和代码段,不用乘除指令。【实验一】输入程序观察寄存器

11、变化步骤:win +R 调出运行窗口-在打开中输入cmd-确定-进入masm5的目录下运行debug -debug命令窗口-输入-a开始输入命令-依次输入以下代码并按 enter键结束-之后输入-t 观察每条指令执行后各寄存器的变化.【实验二】程序单步运行与实验一同理,在masm5 for windows软件中输入要求指令代码-调试-输入-t观察个寄存器结果变化【实验三】两数相与操作【实验四】编写调试程序步骤:按要求即可2)X,Y为字节类型数,求(1)刚开始使用masm5 指令不熟悉,在目标操作数和源操作数之间少了“,”号导致出错,如下图(2)定于的数据x,y必须有值才能编译成功.6实验结果实

12、验一【输入程序观察寄存器变化】用-a输入指定指令及用 t 步骤执行结果如下图【实验二】2.1使用masm5 for windows 2015软件并输入代码如下2.2调试结果 t 步骤执行观察,结果是将存储在DS中的abc 依次换成ABC,即大小写的切换,执行主要结果如下图如果将小写字母改成大写字母则应做如下变化AND AL, 11011111B 替换成OR AL, 00100000B 代码如下图运行结果如下图(大写变小写)实验三【两数相与】-T分步执行结果如下图有下图可知偏移地址:0004;值:2010实验四【编写程序】代码如下图所示调试主要结果如下图, 即(Z =(2-1)*10+5)/(1

13、+2) Z的结果是5 和al中的结果为5 与预期一致.由图可知道,运算结果确实为5 并将结果存放ZZ = (2+1)*8-(2-1)*2)/16 =1(al).6(余数) 并存与Z执行结果如下图通过本实验,首先就是掌握了masm5 以及masm5 for windows2015的基本使用,能通过debug工具来进行编译指令和执行指令,对一些指令有了些了解,能通过-t步骤执行来理解汇编指令的具体含义及其相应寄存器中的数据变化,能自己手动输入编译指令来对基本的运算进行演示和观察相应的结果,总之,此次实验让我受益匪浅,为以后进一步学习汇编打下基础附录:代码(1) ,X,Y,W为字节类型变量,结果存于

14、Z单元,写出数据段和代码段如下DATAS SEGMENT x db 1 y db 2 w db 2 z db ? DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENTCODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX MOV AL,W SUB AL,X MOV BH,10 MUL BH ADD AX,5 MOV BL,X ADD BL,Y DIV BL MOV Z,AL MOV Z+1,AH MOV AH,4CH INT 21HCODES ENDSEND START(2)X

15、,Y为字节类型数,求 x db 2 y db 1 mov al,x add al,y mov cl,3 shl al,cl mov bl,x sub bl,y mov cl,1 shl bl,cl sub al,bl mov cl,4 shr al,cl mov z,al mov z+1,ah END START 指导教师签字:实验三分支循环程序设计 1.实验目的 (1)学习调试程序,查找逻辑错误; (2)学习分支语句的编程和调试; (3)学习循环语句的编程和调试。2.实验内容 1)有10个数,统计正数的个数,存放在变量M中中。经过汇编后,形成EXE文件。在DEBUG中,先用G0命令执行程序,

16、用D命令查看M单元的内容,会发现结果不正确。用单步执行命令T0,单步执行程序,查找程序中的逻辑错误,注意每一次循环中AL寄存器中值的变化是否正确?(AL寄存器中存放正数的个数) DSEG SEGMENT MSG DB 4, -2, -6, 0, 5, 67, 8, -3, 5, 6 M DB ? CSEG SEGMENT MOV CX, 10 LEA SI, MSG L1: MOV BL, SI CMP BL, 0 JBE NEXT INC AL NEXT: INC SI LOOP L1 MOV M, AL 2)数据段中是一组无符号数,将最小数存放在M单元中。按上题方法查找一处逻辑错误。 MS

17、G DB 13, 15, 7, 25, 24 M DB ? MOV CX, 4 MOV AL, MSG MOV SI, OFFSET MSG+1 CMP AL, SI JB NEXT MOV AL, SI LOOP L1 MOV AL, 0 CSEG ENDS END START 3)编程:在首地址为BUF开始的内存单元中存有10个字节数,求其中0的个数,并将结果存于RESULT中。 4)编程:,Ai,Bi为字节型无符号数,分别存于NUM1和NUM2开始的连续存储单元中,结果存于REST单元中。实验一:输入题目代码-保存-观察结果(在Masm for windows在完成)实验二: 根据代码实

18、现功能从MSG中输入五个数,AL取第一个数,SI取第二个数,比较AL,SI所取到的数的大小,若ALSI,AL=SI; 将AL的内容输出,则得出输出五个数中的最小数,步骤同实验一实验三:依题可编写如下代码指令实验四:【实验一】分步执行结果如下分析:当将第二个数-2放入放入BL的时候发现数值是FE,转化为十进制数是254,并非是-2的十六进制,原因是JBE命令是用于无符号数的,指令说明如下,要实现有符号数的比较要使用JLE指令 JBE指令说明 JLE指令说明 进入死循环,原因是两个数比较后,SI没有加1,一直停留在13和15的比较中,修改加入INC SI即可,如下图【实验三】执行结果如下分析,BU

19、L中4, -2, -6, 0, 5, 67, 8, -3, 5, 6 0的个数是1,实验结果与预期一致【实验四】结果如下图Ai:10,45和Bi:8,2的结果是 10*8+45*2=170转化为16进制是AA,有上图可知实验结果和预期一致!通过此次实验,能够通过简单调试查找出错误,分步执行发现逻辑错误并改正,掌握并理解了分支语句的运用和循环语句的使用,纸上得来终觉浅,绝知此事要躬行,多多手动敲代码才能理解并掌握汇编的实质!题3代码DSEG SEGMENT BUF DB 4, -2, -6, 0, 5, 67, 8, -3, 5, 6 RESULT DB ? LEA SI, BUF JNE NE

20、XT MOV RESULT, AL题4代码DATA SEGMENT NUM1 DB 10,45 NUM2 DB 8,2 REST DW ?DATA ENDSCODE SEGMENTCODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,NUM1 LEA DI,NUM2 MOV CX,10 MOV BX,0 L1: MOV AL,SI MUL BYTE PTRDI ADD BX,AX INC SI INC DI LOOP L1 MOV REST,BX MOV AH,4CH INT 21HCODE ENDS实验四子程序设计1.实验目的 (1)学习子程序的编

21、写,主子程序的调用; (2)不同模块间程序的调用和调试。1)数据段中的3个字符,调用子程序将其逐个显示出来。子程序的功能是显示一个字符。单步执行,对CALL语句和RET语句观察SP,IP的变化,并用D命令查看栈顶的内容。 DATA SEGMENT MAG DB ABC DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: MOV AX, DATA MOV SI, 0 LL: MOV DL, MAGSI CALL MADD INC SI LOOP LL MOV AH, 4CH INT 21H MADD PROC MOV AH, 02H RET MADD ENDP CODE ENDS END START2)阅读S31.ASM和S32.ASM两个模块中的程序,并分别汇编,然后连接成一个可执行文件S31.EXE。具体步骤如下: MASM S31.ASM(分

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1