汇编语言程序设计实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告实验名称汇编语言程序设计
|
|
专业班级:信息安全
学号:
姓名:
实验一汇编语言上机过程和Debug常用调试命令
一.实验目的:
学习程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法。
二.实验题目:
熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)的使用方法。在调试过程中,学习及掌握debug程序的各种操作命令。
三.问题描述:
试编写一程序:比较两个字符串string1和string2所含的字符是否相同,若相同则显示‘match’; 否则,显示‘no match’。
四.方法说明:
a)使用ws、tc或EDIT编辑程序来建立源文件,然后存盘,使系统返回DOS。
b)用汇编程序masm(或asm)对源文件汇编产生目标文件obj
如:汇编指示出错则需重新调用编辑程序修改错误,直至汇编通过为止。
c)用连接程序link 产生执行文件EXE.
d)执行程序,可直接从DOS执行程序。
e)使用debug程序调试程序的方法。
五.实验步骤:
1.调用字处理程序EDIT 建立以sample.asm文件
datarea segment
string1 db‘move the cursor backward.’
string2 db‘move the cursor backward.’
mess1 db ‘Match..’,13,10,’$’
mess2 db ‘No match!..’,13,10,’$’
datarea ends
prognam segment
main proc far
assume cs:prognam,ds:datarea,es:datarea
start:
push ds
sub ax,ax
push ax
mov ax,datarea
mov ds,ax
mov es,ax
lea si,string1
lea di,string2
cld
mov cx,25
repz cmpsb
jz match
lea dx,mess2
jmp short disp
match:
lea dx, mess1
disp:
mov ah,09
int 21h
ret
main endp
prognam ends
end start
2.对源文件汇编产生目标文件obj
D:\masm 文件名。Asm
3.用连接程序link产生执行文件exe
D:\link文件名。Obj
4.执行程序
D:\ 文件名
5. 使用debug程序调试程序的方法。
d>debug 文件名.exe
_
1.用G命令运行程序
2.用U命令显示程序
3.学会设置断点。
4.学会查看数据段的内容情况D
5.用E命令修改数据区的字符串。
6.用A 命令把数据区的内容恢复原状
7.T命令逐条跟踪程序的执行
8.学会使用F命令、R命令、Q命令等等
五、实验总结
第一次进行汇编实验,主要是学习程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法,只有多上机练习,才能更好的掌握汇编语言程序设计的思想。
实验二循环程序设计1
循环结构是控制重复执行某一程序段的基本程序结构. 在汇编语言程序设计中, 循环程序的地位也是极为重要,从本质上来看, 循环程序结构是分支程序结构的一种手特殊形式, 也是使用条件转移指令来控制执行循环的.
一.实验目的:
学会用循环结构进行程序编程。
二.实验题目:
设计一个按表格形式显示ASC||码为10H—100H的所有字符的程序。
三.实验要求:
按15行*16列的表格形式显示ASC||码为10H----100H的所有字符,即以行为主的顺序及ASC||码递增的次序依次显示对应的字符。每16个字符为一行,每行中的相邻两个字符之间用空白符(ASC||为0)隔开。
四.方法说明:
(1) 显示每个字符可使用功能号为02的显示输出功能调用,使用方法如
下:
mov ah,02h
mov dl,0AH
int 21h
本题中可把dl 初始化为10H, 然后不断使其加1(用INC指令) 以取得下一个字符的ASC||码。
(2) 显示空白符时,用其ASC||码0置入dl 寄存器,每行结束时,用显
示回车(ASC||为0dh)和换行符(ASC||为oah)来结束本行并开始下一行。
(3) 由于逐个显示相继的ASC||字符时,需要保存并不断修改dl寄存器
的内容,而显示空白、回车、换行符时也需要使用dl寄存器,为此可
使用堆栈来保存相继的ASC||字符。具体用法是:在显示空白或回车,
换行符前用指令
push dx 把dl 的内容保存到堆栈中去。在显示空白或回车,换行符后用指令
pop dx 恢复dl寄存器的原始内容。
五、实验代码
stack segment
db100 dup (?)
stack ends
code segment
assume cs:code,ss:stack
start: