汇编语言实验报告
姓名:周文杰
班级:软131班
学号:139074175
实验一:汇编语言运行环境及方法、简单程序设计
一、程序说明
本程序用来比较两个字符串string1和string2所含的字符是否相同。若相同则显示‘Match’,否则显示‘Nomatch’。
在程序的数据段先定义两个字符串string1和string2,再定义两个字符串mess1和mess2,分别代表‘Match’和‘Nomatch’。再代码段比较字符串string1和string2,通过比较判断是否相同。若相同则显示‘Match’,否则显示‘Nomatch’。
二丶实验步骤
(1),并将其存在masm5文件夹
源代码如下:
DATA SEGMENT
STRING1 DB 'Move the cursor backward.'
STRING2 DB 'Move the cursor backward.'
mess1 db 'match.',10,13,'$'
mess2 db 'no match.',10,13,'$'
DATA ENDS
code segment
main proc far
assume cs:code,ds:DATA,es:DATA
start:mov ax,DATA
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,9
int 21h
mov ah,4ch
int 21h
ret
main endp
code ends
end start
(2)用汇编程序masm对源文件汇编产生目标文件obj,截屏如下:
(3)用连接程序link产生执行文件exe,截屏如下:
(4)执行程序,截屏如下:
至此程序已调试完毕,运行结果正确。下面用debug程序来调试程序,截屏如下:
①用g命令运行程序,截屏如下:
②用u命令显示程序,以便了解指令地址,截屏如下:
③用g0b指令将端点设置程序的主要部分以前,截屏如下:
④根据上面截图指示的ds寄存器内容用d0指令查看数据段,截屏如下:
⑤可用e命令修改数据区的字符串,截屏如下:
最后g命令运行程序,会发现两个字符串不再相等,截屏如下:
⑥用q命令退出debug程序
三丶实验总结
用-g命令来用运行程序,用-u命令来显示程序,用-d 命令来查看数据段的情况,用-e或-f命令来修改需要改正的部分,用-t指令来逐步执行程序,用-r指令来查看寄存器和修改寄存器的值,-q命令用来退出debug程序。在这些命令的后面加上地址,可以将命令执行到相应的地方。
实验二:用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中的内容是什么。
三丶调试说明:
第一部分先将程序编好后,在DOS环境下用masm程序生成obj文件,再用link程序生成exe文件,然后进入debug进行调试,用-t命令逐步运行程序,查看AX和BX中内容的变化。如果发现AX和BX中的内容进行了交换,则说明
程序运行成功。
第二部分先将基本的程序结构编好,再进入debug程序,先用-u指令查看一下程序,结果如下:
再用-a指令从13FC:000B后面输入已给出的程序,然后用-u0指令查看程序,结果如下
这时可以先用-t指令将程序逐步执行到指令mov ax,bx之前,然后用-e300指令安要求修改相关的内存内容,再用-d300指令查看一下修改后的内存内容,结果如下:
然后再用-t指令逐步执行程序,观察每步指令执行后,ax中的内容,结果如下:
可以看出,在
汇编实验报告139074175 来自淘豆网www.taodocs.com转载请标明出处.