安徽工业大学汇编语言实验2013
- 格式:doc
- 大小:1.01 MB
- 文档页数:35
《汇编语言实验报告》
班级:
姓名:
学号:
实验一汇编语言运行环境及方法、
简单程序设计
一、实验目的
(1)熟悉汇编语言的运行环境和方法
(2)了解如何使用汇编语言编制程序
(3)熟悉debug有关的命令
二、实验说明
本程序用来比较两个字符串string1和string2所含的字符是否相同。
若相同则显示‘Match’,否则显示‘Nomatch’。
在程序的数据段先定义两个字符串string1和string2,再定义两个字符串mess1和mess2,分别代表‘Match’和‘Nomatch’。
再代码段比较字符串string1和string2,通过比较判断是否相同。
若相同则显示‘Match’,否则显示‘Nomatch’。
三、调试说明
1、如何启动和退出EDIT程序
在DOS下进入MASM子目录,输入edit即可进入
进入edit后,将写好的代码保存到MASM中(文件扩展名是asm),然后
单击file选中EXIT退出
2、如何对源程序进行汇编及编辑
对源程序的编辑可在edit中进行,用应用程序MASM汇编程序。
3、如何启动和退出debug程序
用debug编译程序时,在程序被翻译成.exe在文件后,输入debug 文件
名.exe 即可启动debug程序。
退出程序用q命令。
4、整理每个debug命令的使用方法,实际实例及执行结果
-g命令运行程序:
-u命令显示程序,了解指令地址:
-d命令查看数据段内容:
-e命令修改数据区的字符串:
-q命令退出:
-t命令单步执行:
5、启动debug后,要装入某一个.EXE文件,应通过什么方法实现?
-n 文件路径加文件名.exe
-l
四、程序清单及执行结果
实验二用DEBUG编程:使用堆栈段将
AX和BX的内容进行交换等
一、实验目的
(1)熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
(2)掌握数据在内存中的存放方式和内存操作数的几种寻址方式。
(3)掌握简单指令的执行过程。
二、程序说明
1、设堆栈指针SP=2000H,AX=3000H,BX=5000H;请编一程序段将AX和BX 的内容进行交换。
用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。
2、设DS=当前段地址,BX=0300H,SI=0002H;请用DEBUG的命令将存储器偏移地址300H~304H连续单元顺序装入0AH,0BH,0CH,0DH,0EH。
在DEBUG 状态下送入下面程序,并用单步执行的方法,分析每条指令源地址的形成过程,当数据传送完毕时,AX中的内容是什么。
MOV AX,BX
MOV AX,0304H
MOV AX,[0304H]
MOV AX,[BX]
MOV AX,0001[BX]
MOV AX,[BX][SI]
MOV AX,0001[BX][SI]
HLT
三、调试说明
问题:直接写出数据时十六进制后加H出现错误
分析: Debug下数据默认十六进制,不能加H
第1题
进入debug,-a写程序,-t单步执行,观察ax和bx内容变化
第2题
单独执行, bx经各种寻址方式后将数据送入ax,观察ax中内容变化
四、程序清单
第
最后AX中的内容是0E0DH
实验三存储器块清零和内存块移动
一、程序说明
1、存储块清零。
程序流程:首先设置块起始地址,然后设置块长度,
然后将当前地址内容清零,地址加1,然后查看是否清除完全,若没有
则将当前地址清零,地址加1,然后再查看,直到地址内容清除完,结
束程序。
2、内存块移动。
程序流程:首先设置块的源地址,然后设置块的目
标地址,然后再设置移动长度,然后按长度重复传送数据,结束程序。
二、调试说明
第1题
进入debug,先用-u指令查看程序代码,根据ds寄存器内容,用-d 指令查看数据段的情况,再-g执行程序,再用-d指令查看数据段内容是
否清零。
第2题
进入debug后先用-u查看程序,–d查看内存的内容
(1)地址加1
(2)地址减1
三、程序清单
第1
第2
地址加
如果源块地址和目标块地址有重叠,用地址减一就没有影响。
实验四将键盘输入的小写字母用大写字母显示出来
一、程序说明
本程序用来将小写字母转变为大写,并在屏幕上显示出来。
先利用DOS功能调用int 21h的1号功能从键盘输入字符,然后判断输入的是否是小写字母,若不是小写字母,则显示input error,重新输入。
若输入的是小写字母,则通过将其减去20h,从而变为大写字母。
在通过DOS功能调用int 21h的2号功能显示出来,结束程序。
二、调试说明
三、程序清单
实验五循环程序实验
一、程序说明
1、显示AL寄存器中的两位十六进位制数,通过DOS功能调用int 21h
的2号功能显示出来。
2、判别键盘上输入的字符:若是1-9字符,则显示之;若为A-Z或
a-z字符,均显示“c”;若是回车字符<CR>,则结束程序,若为其他字符则不显示,继续等待新的字符输入。
首先输入一个字符,将其和回车字符比较,若是回车字符,则结束程序。
若是1-9字符,则显示之。
若是小于0,则重新等待输入。
若大于9,则再和A,Z比较,若小于’A’,则重新等待输入,若大于’Z’,则再和a,z比较,若小于a或大于z,则重新等待输入,否则输出‘c’
二、调试说明
第1题
第2题
依次将输入的字符进行各种比较,输出相应的结果
三、程序清单
第1
第2
实验六分支程序实验
一、程序说明
1、显示AL寄存器中的两位十六进位制数,通过DOS功能调用int 21h
的2号功能显示出来。
2、判别键盘上输入的字符:若是1-9字符,则显示之;若为A-Z或a-z
字符,均显示“c”;若是回车字符<CR>,则结束程序,若为其他字符则不显示,继续等待新的字符输入。
首先输入一个字符,将其和回车字符比较,若是回车字符,则结束程序。
若是1-9字符,则显示之。
若是小于0,则重新等待输入。
若大于9,则再和A,Z比较,若小于’A’,则重新等待输入,若大于’Z’,则再和a,z比较,若小于a或大于z,则重新等待输入,否则输出‘c’
二、调试说明
第1题
第2题
依次将输入的字符进行各种比较,输出相应的结果
三、程序清单
第1题
第2
实验七统计不同成绩段学生的人数
一、实验目的
(1)掌握分支、循环、子程序调用、DOS功能调用等基本的程序结构。
(2)掌握综合程序的编制及调试方法。
二、程序说明
设有十个学生成绩分别是76,69,84,90,73,88,99,63,100和80分。
试编制一个子程序,统计低于60分,60~69分,70~79分,80~89分,90~99分和100分的人数,并输出显示统计结果。
三、程序框图
四、程序清单
实验总结:
这次试验包含了汇编的主要内容,从一开始在debug中执行简单的汇编指令,一级了解数据的存储和寻址方式,到后来的通过编译器masm运行完整的程序代码。
再到子程序的近、远程调用,并结合教材中的理论介绍,是我对汇编程序的执行过程一级存储方式有了很好的掌握,同事自己也掌握了另一种编程的语言。
总之,这次试验令我受益匪浅。