汇编语言实验讲义.docx
- 文档编号:20113774
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:40
- 大小:29.05KB
汇编语言实验讲义.docx
《汇编语言实验讲义.docx》由会员分享,可在线阅读,更多相关《汇编语言实验讲义.docx(40页珍藏版)》请在冰豆网上搜索。
汇编语言实验讲义
《汇编语言程序设计》实验指导书
计算机系宋勤
《汇编语言》实验学时分配表
序号
实验项目名称
实验学时
实验报告或作业
课内
课外
汇编语言程序上机过程以及调试
顺序程序设计
循环程序设计
分支程序设计
子程序设计
程序设计
实验七综合程序设计
程序设计
合计
实验一汇编语言程序上机过程以及调试
一、预习内容
. 工具软件、的使用
. 常用命令的使用:
. 完整程序设计方法的格式。
二、目的要求
. 掌握常用工具软件、的使用
. 掌握常用命令:
能灵活使用这些命令调试程序
. 掌握完整程序设计方法的格式,能正确书写数据段,代码段等。
三、实验内容
用两种方法把字符串复制到串中去;
(1)从左到右的方向复制
(2)从右到左的方向复制
'$'
(?
)
;************************************************
,
:
实验步骤:
)用文字编辑工具(记事本或)将源程序输入完整后保存在:
\下,注意保存时将文件扩展名改为(如)。
)打开桌面的“命令提示符”程序进入命令操作,先用命令改变路经,接着用”文件名”(如,这里文件名可以不带扩展名)对源文件进行汇编,产生文件和文件。
若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。
)用”文件名”(如;)将文件连接成可执行的文件()。
)用调试程序,熟悉命令的使用:
()打进入控制,显示提示符‘‘。
()用命令执行程序,可得及步骤相同的结果,也可用命令逐条运行这些指令,每运行一行检查并记录有关寄存器及的变化情况,并注意标志位有无变化。
()用命令检查键入的程序并记录,特别注意左边的机器码和指令地址。
如果一条命令没有显示完全,可以再次输入命令,该命令会紧接着上一个命令的输出继续显示。
()用命令’地址’设置断点,如,表示将断点设置在代码段的偏移地址为的指令前,并执行到该断点前。
其中,命令中的地址项可以从上条命令的运行结果获得。
()用命令查看各寄存器的情况。
()用命令查看数据段的情况,表示从偏移地址开始,也可以指定其他偏移地址值。
()用命令‘地址’的方式修改数据区的字符串,其中’地址’指需要修改的数据段内存单元偏移地址,可根据上条命令获得。
如表示从偏移地址开始修改数据。
()再次用命令执行程序,查看执行结果。
()用命令退出,如果在上述步骤中碰到异常,可以先用命令退出后再进入调试。
四、实验报告或作业
.分析程序,画出程序流程图
.汇编,连接及调试时产生的错误,其原因及解决办法。
.思考:
)上述实验中用修改数据段的内容,是否改变原文件的内容?
)用单步执行命令运行程序,运行到,,指令后,和寄存器内容前后有何变化,产生变化的原因是什么?
附使用:
.打进入,显示提示符‘‘。
.退出命令
.显示内存命令起始地址结束地址
.修改内存命令起始地址,连续修改打空格键。
打回车键退出命令。
.检查寄存器命令
标志位显示
.修改寄存器命令寄存器名
.小汇编命令起始地址,不输入指令打回车键退出命令。
.反汇编命令起始地址结束地址
.文件命名命令盘号:
文件名
.读文件命令内存地址
.写文件命令内存地址
.读扇区命令内存地址盘号(:
)扇区号扇区数
.写扇区命令内存地址盘号扇区号扇区数
.运行命令起始地址结束(断点)地址
.单步命令起始地址运行指令数,进入子程序内部。
.单步命令起始地址运行指令数,不进入子程序内部。
.内存搬家命令起始地址结束地址目的地址
标志位显示
.修改寄存器命令寄存器名
.小汇编命令起始地址,不输入指令打回车键退出命令。
.反汇编命令起始地址结束地址
.文件命名命令盘号:
文件名
.读文件命令内存地址
.写文件命令内存地址
.读扇区命令内存地址盘号(:
)扇区号扇区数
.写扇区命令内存地址盘号扇区号扇区数
.运行命令起始地址结束(断点)地址
.单步命令起始地址运行指令数,进入子程序内部。
.单步命令起始地址运行指令数,不进入子程序内部。
.内存搬家命令起始地址结束地址目的地址
实验二顺序程序设计
一、预习内容
.常用工具软件、和的使用
.完整程序设计方法的格式
.汇编语言顺序结构程序的设计方法
二、目的要求
.继续熟悉常用工具软件、和的使用
.继续熟悉完整程序设计方法的格式
.学习及掌握汇编语言顺序结构程序的设计方法
三、实验内容
编程实现双字除以字(用),并且把商存入字单元,把余数存入字单元(具体数值可自行确定)。
并且用查看程序的运行结果,检查程序运行结果的正确性。
?
?
:
[]
实验步骤:
.用文字编辑工具(记事本或)将源程序输入完整后保存在:
\下,注意保存时将文件扩展名改为(如)。
.用对源文件进行汇编,产生(如)文件和文件。
若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。
.用将文件连接成可执行的文件()。
.直接运行产生的文件。
.用调试程序,单步执行程序,并记录黑体部分单步执行后,,,寄存器以及标志寄存器的值.
.在状态下,用“偏移地址”的方式将程序的改为再单步执行黑体部分,对比步骤的结果,查看有何变化,并记录。
.修改源程序实现双字及字的无符号乘法。
四、实验报告或作业
.分析程序,画出程序流程图。
.汇编,连接及调试时产生的错误,其原因及解决办法。
.步骤的结果记录。
.步骤的结果记录,并分析发生变化的原因。
.思考:
)指令,[]改写成,[]经过汇编后,二者是否相同,为什么?
)如何实现双字及字的乘法,写出完整的源程序。
实验三循环程序设计
实验(必做)
一、 实验目的:
掌握循环程序的设计方法
进一步熟悉利用程序修改参数的方法,并检查和验证结果的正确性。
学会针对不同的问题,选用不同的组织循环的方法。
二、 实验内容
编写一个程序,用二进制显示从键盘输入一个字符的码。
编写一个程序,记录某个字存储单元数据中的个数,以十进制形式显示结果。
三、 实验准备
编写实验内容要求的两个程序。
写出调试以上程序,即修改程序参数,检查结果的操作方法。
熟悉源程序汇编、连接命令的使用方法即要回答的内容。
四、 实验步骤
用或其它编辑软件,编写源程序,例如及。
对其进行汇编及连接,产生文件。
对文件进行调试运行。
. 用调试运行,学会修改内容的方法。
. 对键入不同的字符,分别进行调试。
. 在下运行这两个文件。
五、 实验报告要求
画出两个程序的流程图,若要独立编写程序,应列出相应的程序清单。
六、参考程序段清单:
;
;←(循环次数)
:
;左移进,从高位开始显示
;指令不改变
;←++
;若是,则←''
;若是,则←''
;显示
;减,如果未减至,则循环
;
;数据段
;代码段
;循环初值:
←
:
;也可以用
;全部是就可以退出循环,减少循环次数
;用指令也可以
;利用指令加的特点进行计数
:
;判断的个数是否小于
;的个数小于,转移
‘1’;的个数大于或等于
;则要先显示一个
:
‘0’;显示个数
——————————————————————
实验
一、预习内容
.多重循环程序和排序程序设计方法。
.带符号数的比较转移指令
二、目的要求
.掌握多重循环程序和排序程序设计方法。
.掌握带符号数的比较转移指令
三、实验内容
建立学生名次表,以为首地址的数组中保存了学生的成绩,其中保存学号为的学生的成绩。
要求建立一个个字的数组,并根据中的学生成绩将学生名次填入数组中,其中的内容是学号为学生的名次(提示:
一个学生的名次等于成绩高于该学生的人数加)
(?
)
:
:
①
②
:
[]
:
③
④
实验步骤:
.输入,汇编并连接此程序。
.在下运行此程序,记录运行结果。
.将转移指令改为,,分别运行记录排序结果,察看结果是否正确不对,并分析原因。
四、实验报告或作业
.分析程序,画出程序流程图
.汇编,连接及调试时产生的错误,其原因及解决办法。
.记录情况下的排序结果,同时比较将转移指令改为时的排序结果,并分析结果正确及否,如果不正确,写出原因和解决办法。
.思考:
如果想外循环也用实现,应该怎样修改程序?
——————————————————————
实验四分支程序设计
实验(必做)
一、实验目的:
掌握分支程序的设计方法
掌握利用修改参数、检查结果的方法。
掌握汇编语言源程序的编辑、汇编、连接及调试过程。
二、 实验内容
编写一个程序,显示寄存器中的两位十六进制数
编写一个程序,判别键盘上输入的字符;若是字符,则显示之;若为或字符,均显示“”;若是回车字符<>(其码为),则结束程序,若为其它字符则不显示,继续等待新的字符输入。
三、 实验准备
编写实验内容要求的两个程序。
写出调试以上程序,即修改程序参数,检查结果的操作方法。
熟悉源程序汇编、连接命令的使用方法即要回答的内容。
四、 实验步骤
用或其它编辑软件,编写源程序,例如及。
对其进行汇编及连接,产生文件。
对文件进行调试运行。
. 用调试运行,学会修改内容的方法。
. 对键入不同的字符,分别进行调试。
. 在下运行这两个文件。
五、 实验报告要求
画出两个程序的流程图,若要独立编写程序,应列出相应的程序清单。
六、 参考程序清单
() 显示中两位十六进制数程序:
;
:
AL
AL
AL
:
;显示高位码
:
;显示低位码
;返回
() 显示键入字符程序
:
;等待键入字符,送
;是否是回车符?
;是则转退出程序
AL,’’
AL,’’
MO,AL
:
AL
:
’’
:
:
AL
:
:
—————————————————————
实验(选做)
一、预习内容
.分支程序设计方法。
.利用转移指令、实现多岔分支的方法。
二、目的要求
.掌握分支程序设计方法。
.掌握利用转移指令、实现多岔分支的方法。
三、实验内容
统计学生成绩。
设有个学生的成绩分别为、、、、、、、、和分。
试编制程序分别统计低于分、分、分、分、分及分的人数,并分别存放到、、、、及单元中
:
:
[]
①
②
:
:
:
:
:
:
③
④
实验步骤:
.阅读程序,将程序补充完整。
.输入,汇编并连接此程序。
.在下运行此程序,记录运行结果。
.单步运行程序,记录前五次执行转移指令后寄存器的值。
四、实验报告或作业
.分析程序,画出程序流程图。
.汇编,连接及调试时产生的错误,其原因及解决办法。
.每次执行转移指令时寄存器的值。
、最终运行结果,即、、、、及的值。
、思考:
如何修改程序使源程序先统计,然后依次统计?
———————————————————————
实验五子程序设计
实验(必做)
本实验的目的在于让读者掌握同一模块调用的方法。
一、 实验目的
掌握主程序及子程序之间的调用关系及调用方法。
掌握子程序调用过程中近程调用及远程调用的区别。
掌握通过堆栈转送参数的方法。
二、实验内容
将开始的个单元中的二进制数转换成两位十六进制数的码,在屏幕上显示出来。
要求码型转换通过子程序实现,在转换过程中,通过子程序实现显示.
编写一个主程序,从键盘接收若干个字符,然后用远调用的方法,调用子程序统计字符串中字符’’的个数.子程序的参数是字符串的首地址,字符串长度及字符””.子程序返回字符"”的个数.参数传送采用堆栈实现.主程序在子程序返回后,显示字符””及其个数(设为一位十六进制数).
三、实验说明
第一个实验程序用子程序的近程调用实现。
由于在调用子程序时,子程序又调用了子程序,这叫子程序的嵌套调用。
实验过程中可以从堆栈的内容看到两个子程序的返回地址值。
由于是近调用,地址值只包括返回地址的段内偏移量。
在每个子程序的执行中,检查值是不变的。
第二个程序是利用远调用的方法调用子程序的。
在远调用情况下,主程序及子程序处在不同的逻辑代码段中,可在子程序执行中查看值,它及主程序中的值是不同的。
子程序调用后,堆栈中保留了返回地址的段地址及段内偏移量。
第二个程序中,主程序及子程序之间参数的传送是由堆栈实现的。
一段是将参数(此处是串首址,串的长度及待统计的字符“”)顺序压如堆栈,在子程序调用后,通过指针对堆栈中的参数访问,并将统计的结果通过堆栈返回。
有关该方法的原理此处不再介绍。
四、实验准备
预习子程序设计的基本方法,根据实验内容要求,画出子程序及主程序的流程图。
熟悉键盘键入字符串及用堆栈传送参数的程序段编制方法。
五、实验步骤
编辑、汇编两个源程序,生成相应的可执行文件(。
)
用的命令,命令或命令和命令检查远程调用及近程调用时堆栈的变化。
特别是通过堆栈传送的参数和子程序取出的参数是返回参数的详细过程。
检查程序执行的结果是否正确。
六、实验报告要求
分析远程调用及近程调用的区别,在用有关命令观察时,执行过程有何不同。
说明用堆栈传送参数的过程及其具体方法。
分析实验结果及所遇到问题,并说明解决的方法。
七、参考程序清单
(1)码型转换程序清单:
:
:
[]
MO,AL
;显示高位数
AL
:
;显示
()统计并显示某键入字符的个数的程序:
‘’
?
(?
)
:
:
:
]
[]
中为字符串长度
指向串首址
中为待查字符
;参数送堆栈
:
统计个数在中
AL
:
;显示统计个数
[]
[]
[]
:
.[]
:
AL,
[]
——————————————————————
实验子程序设计
一、预习内容
.子程序调用方法和参数传递方式。
.过程调用伪指令:
,和。
.子程序调用中堆栈的用法。
.简化格式程序设计方法。
二、目的要求
.掌握子程序调用方法和参数传递方式。
.掌握过程调用伪指令:
,和。
.理解子程序调用中堆栈的用法。
.熟悉简化格式程序设计方法。
三、实验内容
显示学生名次表。
要求接收从键盘输入的一个班的学生成绩,并存放于字的数组中,其中保存学号为的学生的成绩。
然后根据中的学生成绩,把学生名次填入字的数组中,其中的内容是学号为学生的名次。
再按学号把名次从终端显示出来。
源程序如下,模块层次如图所示,源程序已经完成了,,,,和模块的编写,模块和需要自己完成。
(?
)
(?
)
?
'?
','$'
'!
','$'
':
','$'
:
:
','
''?
:
[]
:
:
[]
:
[]
[]
:
[]
[]
:
:
[]
','
。
。
。
。
。
。
;
;
;
;
;
;
;
;
四、实验步骤
.认真阅读程序,自己编写十进制到二进制转换子程序和输出回车换行子程序,将程序补充完整,然后汇编、链接、生成可执行文件。
.用的断点命令和命令运行此程序,观察并记录每次过程调用和进出栈指令前后(带';'的语句)的和堆栈内容,如记录执行,,三条指令后,以及[]的值。
.记录数据段各变量的最后结果。
五、实验报告或作业
.画出,和模块的流程图。
.汇编,连接及调试时产生的错误,其原因及解决办法。
.记录执行,,三条指令后,以及[]的值,并指出[]指向哪条指令。
.画出堆栈满时堆栈存储区域的示意图。
.记录最后的输出结果。
.思考:
如果想用堆栈传递参数,源程序应做何修改?
———————————————————————
实验六程序设计
实验
一、预习内容
.程序直接控制方式。
.程序设计方法。
.子程序设计方法
二、目的要求
.掌握程序直接控制方式。
.熟悉程序设计方法。
.继续熟悉子程序设计方法。
三、实验内容
用位触发方式(也即程序直接控制输出控制寄存器(端口为)的第一位,使该位按所需要的频率进行和的交替变化,从而控制开关电路产生一串脉冲波形,这些脉冲经放大后驱动扬声器发声音)模拟枪响程序。
程序如下,但其中有些语句错误,需要修改后才能正确运行。
:
:
0f
:
4c
:
:
:
实验步骤
.认真阅读程序,将源程序中的错误找出后修改。
.编译,链接,生成可执行文件,记录编译过程中的错误,并分析原因。
.执行程序,调式程序,直到可以清楚听到枪响的声音。
四、实验报告或作业
.分析程序,画出程序流程图。
.汇编,连接及调试时产生的错误,其原因及解决办法。
.思考:
试将程序中的黑体部分修改为:
,再编译运行程序,是否能听到枪声,为什么?
———————————————————————
实验 (选做)
一、 实验目的
掌握输入输出程序设计的概念和方法。
了解机外围芯片、的功能。
学习如何在机上编写具有输入输出功能的程序,包括、芯片的使用方法
二、 实验说明
本实验要求自行编写一个键盘输入处理程序,它可以完成键盘字符的读入并进行屏幕显示,本实验要利用—系统的硬件结构,分别使用外围芯片及。
在本例中,利用8255A的端做数据输入,对应的端口地址为;利用端口作控制端输入,端口地址为。
8255A的控制端口地址为。
本例的中断控制器,其端用于键盘中断请求线。
键盘通过它可以响发出中断请求。
的端口地址为,可以写入中断屏蔽字,以对个中断源是否容许中断进行控制。
在每次中断结束时,要通过端口地址写回一个中断结束命令,使可以清除本次中断。
因此本实验既属于输入输出实验,也属于中断实验。
有关说明将详细地附在参考程序中。
三、实验内容
利用机键盘,编写一个读入并显示键盘输入的演示程序。
该程序只接受常规字符(包括回车键及退格键),对特殊功能键不进行处理。
在程序中设置这些特殊功能键对应编号即可,凡是检测到键位编号为值时,均忽略对它们的处理。
有键按下时,送出的扫描码的位为时,当键抬起时,扫描的码位为,以判定键是否被按下。
四、实验准备
预习输入输出程序设计的特点和方法。
仔细阅读参考程序,弄清外围芯片接口初始化的意义和方法。
五、实验步骤
建立源文件,并通过汇编和连接,产生可执行文件。
运行程序,观察常规字符键及功能键按下时程序的反应,
六、实验报告要求
给出程序框图,包括主程序框图、中断处理程序框图。
说明输入输出程序设计的特点。
讨论:
将键及右 键也进行判别处理,它们的扫描码为及。
为记录键的按动状态,可设一个标志单元,右按下,的位置,左按下,的位置,放下左右的键,的相应恢复为。
当程序工作时,应能显示上档键的字符。
七、参考程序清单
;
‘’
()
;设计个字节堆栈区
‘’
()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 实验 讲义