1、分支结构程序设计汇编语言资料汇编语言 实验报告 实验名称: 分支结构程序设计 姓 名: 学 号: 班 级: 一、实验内容1.将程序1输入、汇编、连接并通过Debug调 试和检查运行结果。2.修改程序1完成将其中的最小数存入MIN单元。3.将编写好的程序2输入、汇编、连接并通过Debug调试和检查运行结果。4.将编写好的程序3输入、汇编、连接并通过Debug调试和检查运行结果。二、实验目的1. 掌握分支程序的结构。2. 掌握分支程序的设计、编写及调试方法。三、实验原理1、汇编语言源程序编制完成后,在计算机上的操作过程分为四个 阶段:编辑、汇编、连接、运行调试(如图1)。2、上机实验步骤:1)确定
2、源程序的存放目录2)编辑ASM源程序3)用MASM.EXE汇编程序产生OBJ目标文件4)用LINK.EXE产生EXE可执行文件5)执行程序3、程序执行过程的跟踪可以用Debug来 跟踪一个程序的运行过程,这通常是必须要做的工作。我们写的程序在逻辑上不一定总是正确,对于简单的错误,仔细检查一下源程序就可以发现;而对于隐藏较深 的错误,就必须对程序的执行过程进行跟踪分析才容易发现。为了观察程序的运行过程,可以使用Debug。Debug可以将程序加载入内存,设置CS:IP指向程序的入口,但Debug并不放弃对CPU的控制,这样,我们就可以使用Debug的相关 命令来单步执行程序,查看每一条指令的执行
3、结果。4 分支结构 汇编语言中的分支结构式一种很常用的结构,就像我们高级语言中的if结构一样。对一些需要判断的很有用。四、实验过程1、实验环境汇编语言程序设计的实验环境如下:(1). 硬件环境微型计算机(Intel x86系 列CPU)一台(2). 软件环境Windows98/2000/XP操 作系统任意一种文本编辑器(EDIT、NOTEPAD(记事本)、UltraEDIT等)汇编程序(MASM.EXE或TASM.EXE)调试程序(DEBUG.EXE或TD.EXE)文本编辑器建议使用EDIT或NOTEPAD,汇编程序建议使用MASM.EXE,连接程序建议使用LINK.EXE, 调试程序建议使用
4、TD.EXE。2、实验步骤(1)、用文件编辑器编写汇编语言程序,并以masm或asm为后缀命名,如:1.asm(以下实验步骤均已此作为例子说明)。(2)、进入dos,用masm编译所编写的汇编程序,生成1.obj,然后用link.exe连接1.obj文件,生成课执行文件1.exe.(3)、执行1.exe.(4)、由于在masm中执行了1.exe文件,以我们现在掌握的知识,并不能显示答案在屏幕中,所以用debug 1.exe来打开这个文件,并用t命令一步一步的跟踪该程序的执行过程,验证此程序是否达到了我们想要达到的结果。3、实验源程序代码及其结构分析(1)求几个数中的最大数(1.ASM 1.OB
5、J 1.EXE)代码如下:DATA SEGMENT BUF DB 38H,73H,1FH MAX DB ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,BUF CMP AL,BUF+1 JNB LP1 MOV AL,BUF+1LP1: CMP AL,BUF+2 JAE LP2 MOV AL,BUF+2LP2: MOV MAX,AL MOV AH,4CH INT 21HCODE ENDSEND START运行结果如下:最大数就是DS数据段中的第四个数(2)判断几个数据是正数还是负数测
6、试数据为:38H,-5H,-32H,-44H,40H,-02H(2.ASM 2.OBJ 2.EXE)代码如下:DATA SEGMENT COUNT DB 07H BUF DB 38H,-5H,-32H,-44H,40H,-02H STRING1 DB FUSHU,0DH,0AH,$ STRING2 DB ZHENGSHU,0DH,0AH,$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,00H MOV CL,00H MOV SI,OFFSET BUFLP0: MOV BL,SI I
7、NC SI INC CL CMP CL,COUNT JNL LP4 CMP AL,BL JNL LP1 JMP LP2LP1: MOV DX,OFFSET STRING1 MOV AH,09H INT 21H JMP LP0LP2: MOV DX,OFFSET STRING2 MOV AH,09H INT 21H JMP LP0LP4: MOV AH,4CH INT 21H CODE ENDSEND START运行结果如下:(3)找出几个数据中最小的数测试数为:38H,73H,1FH(11.ASM 11.OBJ 11.EXE)代码如下:DATA SEGMENT BUF DB 38H,73H,1
8、FH MIN DB ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,BUF CMP AL,BUF+1 JB LP1 MOV AL,BUF+1LP1: CMP AL,BUF+2 JB LP2 MOV AL,BUF+2LP2: MOV MIN,AL MOV AH,4CH INT 21HCODE ENDSEND START结果如下:(最小数据位于DS数据段的第四个数)(4)测试的数据是-3,Y的结果保存在CX寄存器中:(3.ASM 3.OBJ 3.EXE)代码如下:DATA SEGMEN
9、T X DB -03H WORD1 DB Y=0,0DH,0AH,$ WORD2 DB Y=-1,0DH,0AH,$ WORD3 DB Y=1,0DH,0AH,$ DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AL,X MOV BL,00H CMP AL,BL JZ LP1 JMP LP2LP1: MOV DX,OFFSET WORD1 MOV AH,09H INT 21H MOV CL,00H JMP LP5LP2: CMP AL,BL JL LP3 JMP LP4LP3: MOV DX,OFFSET WORD2 MOV AH,09H INT 21H MOV CL,-01H JMP LP5LP4: MOV DX,OFFSET WORD3 MOV AH,09H INT 21H MOV CL,01H LP5: MOV AH,4CH INT 21H CODE ENDS END START运行结果如下:(5)判断几个数据的奇偶性(22.ASM 22.OBJ 22.EXE)测试数据:38H,-5H,-32H,-44H,40H,-02H代码如下:DATA SEGMENT COUNT DB 07H BUF DB 38H,-5H,-32H,-44H,40H,-02H
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1