第一范文网 - 专业文章范例文档资料分享平台

汇编语言实验讲义

来源:用户分享 时间:2020-06-22 本文由薄荷少年 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

《汇编语言》实验讲义

《汇编语言》实验学时分配表 序号 1 2 3 4 5 6 7

实验一 汇编语言程序上机过程以及调试 一、预习内容

1. 工具软件MASM、LINK的使用

2. 常用DEBUG命令的使用: G,D,R,T,U,Q 3. 完整程序设计方法的格式。 二、目的要求

1. 掌握常用工具软件MASM、LINK的使用

2. 掌握常用DEBUG命令: G,D,R,T,U,Q 能灵活使用这些命令调试程序 3. 掌握完整程序设计方法的格式,能正确书写数据段,代码段等。 三、实验内容

比较两个字符串string1和string2所含的字符是否相同,如果相同则显示’Match'否则显示’No match’.请读程序,并将程序补充完整。

DSEG SEGMENT

string1 db 'Move the cursor backward.' string2 db 'Move the cursor backward.' mess1 db 'Match.',13,10,'$' mess2 db 'No match.',13,10,'$' DSEG ENDS CSEG SEGMENT

assume cs:CSEG, ds:DSEG, es:DSEG, MAIN PROC FAR start: mov ax, dseg

mov ds, ax mov es, ax

lea si ,string1

实验项目名称 汇编语言程序上机过程以及调试 顺序程序设计 循环程序设计 分支程序设计 子程序设计 I/O程序设计 实验七 综合程序设计 合计 实验学时 课内 2 2 2 2 2 2 2 14 课外 2 2 2 2 2 2 2 14 实验报告或作业 1 1 1 1 1 1 1 7 ① cld

② repz cmpsb jz match

lea dx,mess2 jmp short disp match:

lea dx,mess1 disp: mov ah,09h int 21h

mov ax, 4c00h

int 21h

MAIN ENDP CSEG ENDS end start

实验步骤:

1)用文字编辑工具(记事本或EDIT)将源程序输入完整后保存在c:\\masm50下,注意保存时将文件扩展名改为.asm(如lab1.asm)。

2)打开桌面的“命令提示符” 程序进入dos命令操作,先用cd masm50 命令改变路经,

接着用 ”masm + 文件名” (如 masm lab1,这里文件名可以不带扩展名) 对源文件进行汇编,产生.obj文件和.LST文件。若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。

3)用 ”link + 文件名” (如 link lab1) 将.obj文件连接成可执行的.exe文件(lab1.exe)。

4)在DOS状态下直接运行link产生的.exe文件(如 lab1),即在屏幕上显示Match. 5)用debug调试程序,熟悉debug命令的使用:

(1)打 debug lab1.exe 进入debug 控制,显示提示符 '_ '。

(2)用命令g执行程序,可得与步骤4相同的结果,也可用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况,并注意标志位有无变化。

(3)用命令u检查键入的程序并记录,特别注意左边的机器码和指令地址。如果一条u命令没有显示完全,可以再次输入u命令,该命令会紧接着上一个命令的输出继续显示。 (4)用命令’g+地址’设置断点,如g06,表示将断点设置在代码段的偏移地址为06h的指令前,并执行到该断点前。其中,命令中的地址项可以从上条命令u的运行结果获得。 (5)用命令r查看各寄存器的情况。 (6)用命令d0查看数据段的情况,0表示从偏移地址0开始,也可以指定其他偏移地址值。 (7)用命令 ‘e+地址’的方式修改数据区的字符串,其中’地址’指需要修改的数据段内存单元偏移地址,可根据上条d0命令获得。如e29 表示从偏移地址29h开始修改数据。试用此命令将数据段变量string1的内容修改为’Move the cursor forward.’ (8)再次用命令g执行程序,查看执行结果。 (9)用命令q退出debug,如果在上述步骤中碰到异常,可以先用q命令退出后再进入调试。 四、实验报告或作业

1.分析程序,画出程序流程图

2.汇编,连接及调试时产生的错误,其原因及解决办法。 3.思考:

1) 上述实验中用e修改数据段的内容,是否改变原文件lab1.asm的内容?

2) 用单步执行命令t运行程序, 运行到mov ax, 4c00h, int 21h指令后,cs和ip寄存器内容前后有何变化,产生变化的原因是什么?

附:DEBUG 使用:

1.打 DEBUG 进入 DEBUG,显示提示符 '_ '。 2.退出DEBUG命令:Q

3.显示内存命令:D 起始地址 结束地址

4.修改内存命令:E 起始地址,连续修改打空格键。打回车键退出E命令。 5.检查寄存器命令:R

标志位显示 1 0

CF CY NC ZF ZR NZ SF NG PL AF AC NA OF OV NV PF PE PO DF DN UP IF EI DI

6.修改寄存器命令:R 寄存器名

7.小汇编命令:A 起始地址,不输入指令打回车键退出A命令。 8.反汇编命令:U 起始地址 结束地址 9.文件命名命令:N 盘号:文件名 10.读文件命令:L 内存地址 11.写文件命令:W 内存地址

10.读扇区命令:L 内存地址 盘号(0--A:,1--B:) 扇区号 扇区数 11.写扇区命令:W 内存地址 盘号 扇区号 扇区数 12.运行命令:G=起始地址 结束(断点)地址

13.单步命令:T=起始地址 运行指令数,进入子程序内部。 14.单步命令:P=起始地址 运行指令数,不进入子程序内部。 15.内存搬家命令:M 起始地址 结束地址 目的地址

标志位显示 1 0

CF CY NC ZF ZR NZ SF NG PL AF AC NA OF OV NV PF PE PO DF DN UP IF EI DI

6.修改寄存器命令:R 寄存器名

7.小汇编命令:A 起始地址,不输入指令打回车键退出A命令。 8.反汇编命令:U 起始地址 结束地址 9.文件命名命令:N 盘号:文件名 10.读文件命令:L 内存地址

11.写文件命令:W 内存地址

10.读扇区命令:L 内存地址 盘号(0--A:,1--B:) 扇区号 扇区数 11.写扇区命令:W 内存地址 盘号 扇区号 扇区数 12.运行命令:G=起始地址 结束(断点)地址

13.单步命令:T=起始地址 运行指令数,进入子程序内部。 14.单步命令:P=起始地址 运行指令数,不进入子程序内部。 15.内存搬家命令:M 起始地址 结束地址 目的地址

实验二 顺序程序设计 一、预习内容

1.常用工具软件MASM、LINK和DEBUG的使用 2.完整程序设计方法的格式

3.汇编语言顺序结构程序的设计方法 二、目的要求

1.继续熟悉常用工具软件MASM、LINK和DEBUG的使用 2.继续熟悉完整程序设计方法的格式

3.学习与掌握汇编语言顺序结构程序的设计方法 三、实验内容

编程实现datax双字除以字datay(用div),并且把商存入quotient字单元,把余数存入remainder字单元(具体数值可自行确定)。并且用debug查看程序的运行结果,检查程序运行结果的正确性。

DSEG SEGMENT

datax dd 956123h datay dw 123h

quotient dw ? remainder dw ? DSEG ENDS CSEG SEGMENT

assume cs:CSEG, ds:DSEG start:

mov ax, dseg mov ax,datax mov dx,datax[2] div datay mov quotient,ax mov remainder,dx mov ax, 4c00h int 21h

CSEG ENDS end start

mov ds, ax

实验步骤:

1.用文字编辑工具(记事本或EDIT)将源程序输入完整后保存在c:\\masm50下,注意保存时将文件扩展名改为.asm(如lab2.asm)。

2.用masm对源文件进行汇编,产生.obj(如lab2.obj)文件和.LST文件。若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。 3.用 link将.obj文件连接成可执行的.exe文件(lab2.exe)。 4.直接运行link产生的.exe文件。

5.用debug调试程序,单步执行程序,并记录黑体部分单步执行后ax,dx,cs,ip寄存器以及标志寄存器的值.

6.在debug状态下,用“a+偏移地址”的方式将程序的div 改为idiv再单步执行黑体部分,对比步骤5的结果,查看有何变化,并记录。 7.修改源程序实现双字datax 与字datay的无符号乘法。 四、实验报告或作业

1.分析程序,画出程序流程图。

2.汇编,连接及调试时产生的错误,其原因及解决办法。 3.步骤5的结果记录。

4.步骤6的结果记录,并分析发生变化的原因。 5.思考:

1) 指令mov dx,datax[2] 改写成 mov dx,[datax+2] 经过汇编后,二者是否相同,为什么?

2) 如何实现双字datax 与字datay的乘法,写出完整的源程序。

实验三 循环程序设计 一、预习内容

1.多重循环程序和排序程序设计方法。 2.带符号数的比较转移指令:JL,JLE,JG,JGE 二、目的要求

1.掌握多重循环程序和排序程序设计方法。 2.掌握带符号数的比较转移指令:JL,JLE,JG,JGE 三、实验内容

建立学生名次表,以grade为首地址的数组中保存了学生的成绩,其中 grade+i 保存学号为i+1的学生的成绩。要求建立一个10个字的rank数组,并根据grade中的学生成绩将学生名次填入rank数组中,其中rank+i的内容是学号为i+1学生的名次(提示:一个学生的名次等于成绩高于该学生的人数加1)

DSEG SEGMENT

grade dw 88,75,95,63,98,78,87,78,90,60 rank dw 10 dup(?) DSEG ENDS CSEG SEGMENT

assume cs:CSEG, ds:DSEG start:

mov ax, dseg mov di,10 mov bx,0

loop:

① mov dx,1

mov ds, ax

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新幼儿教育汇编语言实验讲义 全文阅读和word下载服务。

汇编语言实验讲义 .doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/1094006.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top