1、实验一、DEBUG 调试环境实验寻找最大和最小数实验一、实验目的1.学习循环程序结构,掌握编写循环处理程序的方法和技巧。2.通过循环结构程序熟悉汇编语言程序设计的主要方法。3.了解和掌握程序设计过程中算法的选择。4.掌握汇编语言调试方法。二、实验内容以 buff 开始的内存单元中有 10 个有符号数(字节型 DB):-37、28、-115、-2、98、-100、93、120、56、-99请编写程序,找出最大的数并存入 MAX 单元中,同时也找出最小的数并存入 MIN 单元中,在 Debug 下运行程序,查看数据区 MAX 和 MIN 的内容检验运行结果。3、实验步骤及调试结果1、实验流程图:2
2、、实验步骤:(1)在 EDIT 或其它编辑方式下输入源程序,并以 XXX.ASM 名保存。(2)用 MASM 文件汇编源程序,CMASM XXX; 如有错误,回到第一步,如没错误,到第三步。(3)用 LINK 连接程序,CLINK XXX; 形成 XXX.EXE 文件。(4)在 DEBUG 调试环境下调试并运行 XXX.EXE 程序。CDEBUG XXX.EXE 回车首先用 R指令,然后使用 U 指令查看自己所编写的程序,确定断点后,使用 G 命令执行程序到断点,查看结果,程序运行结束后,用 D DS:0 检查数据区 MAX 及 MIN 内容,检查结果是否正确。3、调试结果:编译生成 obj
3、文件成功Masm link obj 文件生成.exe 文件成功Debug 调试,查看 AX 寄存器内容,ah=78,转换为十进制是 120,al=8D 转换为十进制是-115查看数据段内容4、实验数据(源代码)data segmentbuf db -37,28,-115,-2,98,-100,93,120,56,-99c equ $-bufmax db ?min db ?data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov cx,c-1mov bx,offset bufmov ah,bxmov al,b
4、xp01: inc bxcmp ah,bxjge test01mov ah,bxjmp test02test01:cmp al,bxjnge test02mov al,bxjmp test02test02:loop p01mov max,ahmov min,alint 21hcode endsend start5、思考题1、可执行程序装载内存的首地址是:0000 结束地址:002C2、Max 段地址:1408 偏移地址: 000AMin 段地址:1408 偏移地址: 000B3、数据段占用地址空间:12 字节代码段占用地址空间:46 字节感想:本次实验难点在于算法设计和调试生成的 exe 文件上,因为之前没用过 debug 调试程序,所以花费了许多时间,而且找地址空间也花了一些时间去了解。