汇编上机实验报告
- 格式:doc
- 大小:1.30 MB
- 文档页数:23
上机实验报告篇1用户名se××××学号姓名学院①实验名称:②实验目的:③算法描述(可用文字描述,也可用流程图):④源代码:(.c的文件)⑤用户屏幕(即程序运行时出现在机器上的画面):2.对c文件的要求:程序应具有以下特点:a可读性:有注释。
b交互性:有输入提示。
c结构化程序设计风格:分层缩进、隔行书写。
3.上交时间:12月26日下午1点-6点,工程设计中心三楼教学组。
请注意:过时不候哟!四、实验报告内容0.顺序表的插入。
1.顺序表的删除。
2.带头结点的单链表的\'插入。
3.带头结点的单链表的删除。
注意:1.每个人只需在实验报告中完成上述4个项目中的一个,具体安排为:将自己的序号对4求余,得到的数即为应完成的项目的序号。
例如:序号为85的同学,85%4=1,即在实验报告中应完成顺序表的删除。
2.实验报告中的源代码应是通过编译链接即可运行的。
3.提交到个人空间中的内容应是上机实验中的全部内容。
上机实验报告篇2一、《软件技术基础》上机实验内容1.顺序表的建立、插入、删除。
2.带头结点的单链表的建立(用尾插法)、插入、删除。
二、提交到个人10m硬盘空间的内容及截止时间1.分别建立二个文件夹,取名为顺序表和单链表。
2.在这二个文件夹中,分别存放上述二个实验的相关文件。
每个文件夹中应有三个文件(.c文件、.obj文件和.exe文件)。
3. 截止时间:12月28日(18周周日)晚上关机时为止,届时服务器将关闭。
三、实验报告要求及上交时间(用a4纸打印)1.格式:《计算机软件技术基础》上机实验报告用户名se××××学号姓名学院①实验名称:②实验目的:③算法描述(可用文字描述,也可用流程图):④源代码:(.c的文件)⑤用户屏幕(即程序运行时出现在机器上的画面):2.对c文件的要求:程序应具有以下特点:a 可读性:有注释。
b 交互性:有输入提示。
实验报告、实验编号:二、实验题目:顺序程序设计三、实验类型:必做四、实验目的:1.了解汇编语言的程序结构。
2.理解汇编语言中由源程序文件到可执行文件的过程。
五、实验内容和步骤:1、实验内容:编程实现:当 X=5 时,求 Y=3X4+5X3+6X2+4X+2.2、实验步骤:(1)首先对al.asm进行汇编连接生成 a1.exe文件。
(2)进行DEBUG程序并装入要调试的程序 a1.exe女口: DEBUG a1.exe ;进入 DEBUG 并装配 a1.exe(3)反汇编,确定每条指令的地址。
-U ;从当前地址进行反汇编—U200 ;从CS: 200处开始反汇编反汇编可以确定断点地址,如:把断点地址设置在0120H处,则可以打入以下命令(4)G命令来设置断点。
—G120此时程序在0120H处停下,并显示出所有寄存器以及各标志位的当前值,在最后一行还给出下一条将要执行的指令的地址、机器语言和汇编语言,程序员可以从显示的内容来以解程序运行是否正确。
(5)观察数据段的内容,即观察内存的内容—D DS: 0000 ;从数据段的0单元开始显示128个字节。
—D DS: 0000 0001;从数据段的0单元、1单元显示2个字节。
(6)退出DEBUG命令—Q六、实验结果:145A:001E 83C002 ADD AX,+02-u145A:0021 A30100 MOV [0001],AX145A:0024 B44C MOV AH,4C145A:0026 CD21 INT 21145A:0028 7509 JNZ 0033145A:002A E83F26 CALL 266C145A:002D 8946E8 MOV [BP-18],AX145A:0030 E80D97 CALL 9740145A:0033 F6065C3601 TEST BYTE PTR [365C],01145A:0038 7405 JZ 003F145A:003D EB05 JMP 0044145A:003F E82A26 CALL 266C-g 145A:0021AX=0A70 BX=0005 CX=0038 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=1459 ES=1449 SS=1459 CS=145A IP=0021 NV UP EI PL NZ AC PO NC145A:0021 A30100 MOV [0001],AX DS:0001=0000-tAX=0A70 BX=0005 CX=0038 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=1459 ES=1449 SS=1459 CS=145A IP=0024 NV UP EI PL NZ AC PO NC145A:0024 B44C MOV AH,4C-d ds:0001 00021459:0000 70 0A七、实验总结:通过本次试验,我有很多收获。
实验一汇编语言上机过程和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 segmentstring1 db‘move the cursor backward.’string2 db‘move the cursor backward.’mess1 db ‘Match..’,13,10,’$’mess2 db ‘No match!..’,13,10,’$’datarea endsprognam segmentmain proc farassume cs:prognam,ds:datarea,es:datareastart:push dssub ax,axpush axmov ax,datareamov ds,axmov es,axlea si,string1lea di,string2cldmov cx,25repz cmpsbjz matchlea dx,mess2jmp short dispmatch:lea dx, mess1disp:mov ah,09int 21hretmain endpprognam endsend start2.对源文件汇编产生目标文件objD:\masm 文件名。
汇编语言第一次实验报告计算机44班2140505089王文瑞验结果 (1)RETF 时,可见AX=16H=22D ,符合数组最大值22(2)输入为112345234,统计结果为:02,02,02,02,011—1:;--------------------------------------------------------------------------DSEG SEGMENTn EQU 10 ;假设n=10DATA DW ?M DW 1,2,3,4,5,6,7,8,9,22ADDR DW ? ;M+2n单元DSEG ENDS ;M+2(n+1)单元;--------------------------------------------------------------------------CSEG SEGMENTMAIN PROC FARASSUME CS: CSEG, DS: DSEGSTART: PUSH DS ;设置返回DOSSUB AX, AXPUSH AXMOV AX, DSEGMOV DS, AX ;给DS赋值BEGIN: MOV CX, n ;循环计数器LEA DI, MMOV AX, [DI] ;取第一个数MOV ADDR, DI ;记下绝对值最大的数的地址CMP AX, 0 ;此数是正数吗?JNS ZHENG ;是正数,即为绝对值,转去判断下一个数NEG AX ;不是正数,变为其绝对值ZHENG: MOV BX, [DI]CMP BX, 0 ;此数是正数吗JNS COMP ;是正数,即为绝对值,转去比较绝对值大小NEG BX ;不是正数,变为其绝对值COMP: CMP AX, BX ;判断绝对值大小JAE ADDRESSMOV AX, BX ;(AX)<(BX),使(AX)中为绝对值最大的数MOV ADDR, DI ;记下绝对值最大的数的地址ADDRESS: ADD DI, 2LOOP ZHENGMOV DATA, AX ;记下此数RETMAIN ENDPCSEG ENDS ;以上定义代码段;--------------------------------------------------------------------------END START1-2:data segmentcount db 5 dup(0)data endscode segmentmain proc farassume ds:data,cs:code start:push dssub ax,axpush axmov ax,datamov ds,axbegin:mov ah,1int 21hcmp al,0dhjz oversub al,30hmov ah,00hdec axmov si,axadd count[si],1jmp beginprint:mov dl,count[0]add dl,30hmov ah,02int 21hmov dl,count[1]add dl,30hmov ah,02int 21hmov dl,count[2]add dl,30hmov ah,02int 21hmov dl,count[3]add dl,30hmov ah,02int 21hmov dl,count[4]add dl,30hmov ah,02int 21hover:retmain endpcode endsend start。
汇编上机实验报告实验目的:通过进行汇编语言上机实验,掌握汇编语言的基本语法和编程技巧,培养汇编程序设计能力。
实验内容:实验一:汇编程序的简单输入输出1.编写一个汇编程序,要求从键盘输入两个整数,然后将其相加,并将结果输出到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验二:汇编程序的条件跳转1.编写一个汇编程序,要求从键盘输入一个整数,判断其是否大于10,若是,则将其打印到屏幕上;否则,将其乘以5并打印到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验三:汇编程序的循环1.编写一个汇编程序,要求计算1到10的累加和,并将结果打印到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验四:汇编程序的数组操作1.编写一个汇编程序,要求定义一个长度为10的数组,并将数组中的值初始化为0,然后利用循环将数组中的每一个元素加1,并将每个元素的值打印到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验结果:实验一:汇编程序的简单输入输出编写的汇编程序通过键盘输入两个整数,实现了相加并将结果输出到屏幕上的功能。
程序运行正常,输出结果与预期一致。
实验二:汇编程序的条件跳转编写的汇编程序通过键盘输入一个整数,根据条件判断,实现了将输入数大于10时打印在屏幕上,否则将其乘以5并打印在屏幕上的功能。
程序运行正常,输出结果与预期一致。
实验三:汇编程序的循环编写的汇编程序通过循环计算1到10的累加和,并将结果打印在屏幕上。
程序运行正常,输出结果与预期一致。
实验四:汇编程序的数组操作编写的汇编程序通过定义一个长度为10的数组,并将数组中的值初始化为0,利用循环将数组中的每一个元素加1,并将每个元素的值打印到屏幕上。
汇编语言程序设计上机实验报告(实验三)一、实验题目、内容及要求:一、实验题目、内容及要求:题目:循环程序设计内容:编写一程序,要求从键盘接收一个4位十六进制数,在终端上显示与它等值的二进制数。
二进制数。
要求:实验前要作好充分准备,包括程序清单、调试步骤、调试方法,对程序结果的分析等。
本实验要求在EDIT 下编写完整的汇编语言程并生成可执行文件运行。
下编写完整的汇编语言程并生成可执行文件运行。
二、实验时间及地点二、实验时间及地点日期:日期: 2011/11/21 节次:节次: 7.8 地点:地点:电子实验楼二楼电子机房电子实验楼二楼电子机房 三、实验目的三、实验目的通过本实验掌握DOS 系统功能调用功能,掌握循环程序设计的方法;学会编写循环结构程序。
构程序。
简述在实验过程中遇到的问题和解决的方法:简述在实验过程中遇到的问题和解决的方法:1、问题:遇到死循环解决方法:程序显示disp 中发现执行int int 21h 21h 会修改al 的值,避免这种情况的方法就是使用堆栈段。
2、问题:调试中出现no data segment 解决方法:start 开始时没有将数据段的IP 地址赋给dx 。
data segment 3、问题:可执行,结果为乱码解决方法:数据划分比较的粗,没有系统的将数据系统划分。
系统划分:<30h other 30h-39h num 39h-41h other 41h-46h big zi mu 46h-61h other 61h-67h small zi mu >67h other 运行结果:(要求用“抓图软件”抓程序的运行结果)(要求用“抓图软件”抓程序的运行结果)结果分析及实验体会:结果分析及实验体会:1、结果0001001000110100是十六进制数1234转化而来。
十六进制数通过ASCII码对照转换为二进制数。
A~F----- -57hA~ f----- -57h0~9 ------ -37h2、学习应用了循环指令并了解了其特点:A、循环指令不影响标志位B、其功能为使寄存器CX的值减1,如果结果不等于0,则循环至标号,否则顺序执行。
一、实验目的(1)掌握常用DEBUG 命令: G,D,R,T,U,Q 。
(2)掌握工具软件EMU8086。
(3)掌握完整程序设计方法的格式,能正确书写数据段,代码段等。
(4)掌握简单的数值转换算法二.实验原理2.1 汇编语言程序的上机过程2.1.1、在计算机上运行汇编语言程序的过程如下图所示编辑程序 连接程序 汇编程序文件EXMP.ASMLINKASM MASM TASMEDLINE WPS WORD EDIT文件 EXMP.OBJ (EXMP.LST ) (EXMP.CRF )文件EXMP.EXE (EXMP.MAP ) (EXMP.LIB ) DEBUG出错 出错 出错 出错操作得到的文件操作使用的工具 说明:图1 汇编语言程序的建立及汇编过程2.1.2、汇编语言程序上机过程1)、用编辑程序(如EDIT.EXE )建立ASM 源文件;2)、用汇编程序(如MASM.EXE )把ASM 文件转汇编成OBJ 文件; 3)、用连接程序(如LINK.EXE )把OBJ 文件转连接成EXE 文件; 4)、用调试程序(如 )来调试和执行 5)、 生成EXE 或COM 文件2.2 、汇编语言程序格式存储器的物理地址由段基址和偏移地址组合而成,任何一个逻辑段,无论是代码段,数据段,堆栈段,附加段都必须进行段定义,以便连接程序把不同段和模块连接成一个可执行程序。
此外,还必须明确段和段寄存器之间的关系,这可使用段分配语句来完成。
2.2.1、段定义语句四个逻辑段不一定全部要定义,通常代码段和数据段是必须的,附加段可以省略。
但当代码段中使用了串指令,必须设置附加段作目标串基址用,附加段也可用来存放数据,增大数据段容量。
(1)代码段:存放程序执行的指令 (2)数据段:存放程序所需的数据 (3)堆栈段:存放程序执行的临时信息数据段定义格式:DATA SEGMENT ; 数据段 RESULT_1 DB 1 RESULT_2 DB 1 RESULT_3 DB 1 DATA ENDS 附加段的定义: EXTRA SEGMENTDEST_BUFFER DB 50 DUP (‘?’) EXTRA ENDS 堆栈段的定义:STACK SEGMENT STACK ; 堆栈段STA DB 64 DUP(0)STACK_TOP DB 0STACK ENDS2.2.2、段分配语句在8086/8088系统中存储器采用分段结构,各段容量≦64K字节,用户可以设置多个逻辑段,但只允许4个逻辑段同时有效,段分配语句用来完成将逻辑段分别定义成代码段、数据段、堆栈段和附加段。
西南石油大学实验报告实验一一、实验目的熟悉汇编语言的上机过程,掌握各项工具软件的使用方法二、实验内容1.硬件:PC微机2.软件:DOS系统、EDIT.EXE、MASM.EXE、LINK.EXE、DEBUG.EXE三、实验过程1.前期准备:在开始进行汇编语言上机练习之前,建立并进入自己的工作子目录,准备好相关工具软件如MASM.EXE、LINK.EXE等,其后所有工作均在自己的子目录中进行,以避免因路径概念不清而导致的文件存取错误,以及对系统其它部分造成影响。
2.编写源程序:原则上可以用任何文字处理软件(如EDIT、写字板、甚至WORD)编写源程序,但必须注意,源程序应为ASCII码文件(或称纯文本文件),扩展名一般为.ASM。
因此,建议使用DOS环境下的EDIT软件。
3.汇编:利用MASM.EXE宏汇编程序,将已经存盘的ASCII码源程序翻译成二进制目标程序,其扩展名一般为.OBJ。
4.连接:利用LINK.EXE连接程序,将二进制目标程序整理成DOS系统下的可执行程序,其扩展名必须为.EXE。
5.运行:四、实验内容1、从键盘输入一个字符,进行大小写互换后显示。
源程序:结果:2、输入两个个位数字相加并显示结果。
代码:结果实验二一、实验目的:学习利用DEBUG调试程序的基本思想及方法二、实验环境:1.硬件:PC微机2.软件:DOS系统、EDIT.EXE、MASM.EXE、LINK.EXE、DEBUG.EXE三、实验内容与过程:利用DEBUG调试程序,可以将一个可执行程序(如.EXE、.COM等)装入内存中,并接管对程序运行的控制权,通过采取如反汇编、断点运行、单步执行、寄存器内容修改等方法,对可执行程序进行跟踪、调试,以找出其中的设计错误,然后再对源程序进行相应修改,重新生成正确的可执行程序。
1.准备被调试程序:假定所有有关文件均在当前路径C:\MYTEST>下,按照实验一的步骤生成一个被调试的可执行程序(如TEST.EXE)。
汇编语言上机实验报告1汇编语言上机实验报告1实验内容:1.编写一个程序,求解给定整数的阶乘并输出结果。
2.编写一个程序,求解斐波那契数列中的第n个数并输出结果。
实验步骤:1.阶乘程序:编写一个汇编程序,通过输入一个整数n,求解n的阶乘。
程序流程如下:1.1.定义变量n,用于保存输入的整数。
1.2.将n与0进行比较,如果n为0,则直接将1输出作为阶乘的结果,并跳转到程序结束;否则继续执行下一步。
1.3.将n的值保存到寄存器中,并将n减1,保存到n中。
1.4.将n与0进行比较,如果n为0,则直接跳转到程序结束;否则继续执行下一步。
1.5.将n的值与寄存器中保存的值相乘,将结果保存到寄存器中。
1.6.将n减1,保存到n中并跳转到第4步。
1.7.输出寄存器中的结果作为阶乘的结果,并跳转到程序结束。
2.斐波那契数列程序:编写一个汇编程序,通过输入一个整数n,求解斐波那契数列中的第n个数。
程序流程如下:2.1.定义变量n,用于保存输入的整数。
2.2.将n与0进行比较,如果n为0,则直接将0作为结果输出,并跳转到程序结束;否则继续执行下一步。
2.3.将n与1进行比较,如果n为1,则直接将1作为结果输出,并跳转到程序结束;否则继续执行下一步。
2.4.将n的值保存到寄存器中,并将n减1,保存到n中。
2.5.将n与0进行比较,如果n为0,则跳转到第9步;否则继续执行下一步。
2.6.将n减1,保存到n中并跳转到第7步。
2.7.将n的值与寄存器中保存的值相加,将结果保存到寄存器中。
2.8.将n减1,保存到n中并跳转到第5步。
2.9.输出寄存器中的结果作为斐波那契数列中第n个数的结果,并跳转到程序结束。
实验结果:1.阶乘程序运行结果:请输入一个整数:55的阶乘为:1202.斐波那契数列程序运行结果:请输入一个整数:6斐波那契数列中第6个数为:8实验总结:通过本次实验,我学习了如何在汇编语言中编写程序解决一些基本的数学问题。
实验一认识Tddebug集成操作软件实验日志指导教师曾素华实验时间:2013 年04 月02 日学院计算机科学与技术专业计算机科学与技术班级0411005 学号2010211912 姓名李新娱实验室s401一、实验题目认识Tddebug集成操作软件二、实验目的1.熟悉汇编程序的开发过程。
2.认识Tddebug集成操作软件。
3.掌握在Tddebug集成环境中编辑、编译、连接汇编语言程序方法。
4.掌握INT 21H软件中断来调用DOS内部子程序的方法三、实验内容及说明1.实验内容:数据传送实验1)编程将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。
参见示例出程序。
2)修改此程序,采用字符串传送指令完成。
2.实验中使用DOS功能调用(INT 21H):参见教材《32位微型计算机原理与接口技术》89页(1)显示字符串入口:AH=09H调用参数:DS:DX=串首地址,‘$’为结束字符。
(2)返回DOS系统入口:AH=4CH调用参数:AL=返回码四、实验主要步骤要求一数据传送实验1.运行Tddebug软件,选择Edit菜单编写实验程序2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接,生成执行文件。
3.使用Rmrun菜单中的Run运行程序,观察运行结果。
4.使用Rmrun菜单中的Debug调试程序,查看程序段、数据段、附加段装入内存后的分配情况。
单步执行数据传送指令后,观察各寄存器及数据区的内容。
过程如下:3)按F7单步执行,在代码区中有一个三角,表示正在执行的指令。
每一条指令的执行一定会使目标寄存器和状态寄存器发生变化,从相关窗口看结果。
4)检查内存数据区的内容,关键是找出用户程序的数据段和附加段:●方法1:在CPU窗口按Tab键使内存数据显示区成为活动区,按Ctrl+G键,输入:“DS或ES寄存器的值:偏移地址”,即可显示用户指定的数据区●方法2:选择菜单View| Dump,弹出内存数据显示窗口。
3) 查看执行结果:按Alt+F5,切换到用户窗口。
5.更改数据区中的数据,考察、调试程序的正确性。
五、心得体会通过本次试验我初步认识了汇编程序的开发过程,了解了Tddebug软件,在一开始的试验中反应太慢没有跟上老师,但在自主实践缓解通过与同学交流完成了实验,虽然对代码还不是很熟悉,但Tddebug软件的操作方法已经熟悉,并且掌握了在此环境的编辑、编译、链接汇编语言的程序方法和INT 21H的中断调用来调用DOS内部子程序的方法。
实验二I/O程序设计实验日志指导教师邹洋实验时间:2013 年04 月16 日学院计算机科学与技术专业计算机科学与技术班级0411005 学号2010211912 姓名李新娱实验室s401一、实验题目I/O程序设计二、实验目的1.理解软中断的调用方法及中断过程。
2.掌握INT 21H软件中断来调用DOS系统I/O子程序的方法。
3.掌握将存储在内存单元中的数据在屏幕上显示的方法。
4.掌握从键盘输入信息到内存的方法。
三、实验要求1.将指定数据区中一个字节的数据以十六进制数形式显示在屏幕上。
设计思路:首先将该数以十六进制数形式分解,然后将每一位分别转换为ASCII码送屏幕显示。
其中0H~9H之间的数加30H,即可得0H~9H的ASCII码,而AH~FH的ASCII 码,则需再加7H,参见表5-1。
参考程序流程如图2-1所示。
示例程序参见参考程序清单。
2.编程由键盘输入任意一个字符,将该字符的ASCII码值显示在屏幕上。
3.从键盘输入两个1位十进制数,计算二者之和,并将结果显示在屏幕上。
4.编程由键盘输入任意一位数,将该数以二进制数形式显示在屏幕上。
四、实验主要步骤要求二由键盘输入任意一个字符,将ASCII码值显示在屏幕上1.画出实验流程图。
参考代码:;将指定数据区SD的数据以十六进制数形式显示在屏幕上DATA SEGMENTMES DB 'Show a as hex:',0AH,0DH,'$'SD DB 'a'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MES;显示提示信息MOV AH,09HINT 21HMOV SI,OFFSET SDMOV AL,DS:[SI]AND AL,0F0H ;取高4位MOV CL,4SHR AL,CLCMP AL,0AH ;是否是A以上的数JB C2ADD AL,07HC2: ADD AL,30HMOV DL,AL ;显示字符MOV AH,02HINT 21HMOV AL,DS:[SI]AND AL,0FH ;取低4位CMP AL,0AHJB C3ADD AL,07HC3: ADD AL,30HMOV DL,AL ;显示字符MOV AH,02HINT 21HMOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START2.运行Tddebug软件,选择Edit菜单编写实验程序3.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接,生成执行文件。
4.使用Rmrun菜单中的Run运行程序,观察运行结果。
5.使用Rmrun菜单中的Debug调试程序。
单步执行指令,观察各寄存器及数据区的内容。
要求三从键盘输入两个1位十进制数,计算二者之和。
code segmentassume cs:codestart:mov cx,2mov bl,0next:mov ah,1int 21hsub al,30hjc nextcmp al,9hja nextadd al,bldaamov bl,almov dl,13mov ah,2int 21hmov dl,10int 21hloop next mov cl,4 mov dh,2 next1:rol bl,cl mov dl,bl and dl,0fh add dl,30h mov ah,2 int 21h dec dhjnz next1 mov ah,1 int 21h mov ah,4ch int 21h code ends end start五、心得体会这次实验再次实践了Tddebug软件的使用方法,让我更深层次理解了软中断的调用方法及中断过程,掌握了INT 21H软件中断来调用DOS系统I/O子程序的方法和讲存储在内存单元中的数据在屏幕上显示的方法,并且掌握了从键盘输入信息到内存的方法。
在这次实验中我还自己动手写了代码,虽然很多不会都咨询了同学,但后来还是成功实现了功能。
实验三分支程序设计实验日志指导教师邹洋实验时间:2013 年04 月28 日学院计算机科学与技术专业计算机科学与技术班级0411005 学号2010211912 姓名李新娱实验室s401一、实验题目分支程序设计二、实验目的1.掌握比较指令、条件转移指令的用法2.掌握分支结构程序的组成3.掌握分支程序的设计、调试方法三、实验要求1.判断X的大小,并根据判断结果以不同方式分别显示。
2.键入一个数,判断数是否在5< X<24范围内,是输出标志0,不是输出-1。
3. 编写程序,在屏幕上显示一组菜单,根据键盘输入的菜单编号,提示你选择的菜单名。
4.从键盘输入一个字符,判断该字符是小写字母、大写字母、数字或其他字符,并给出相应的提示。
四、实验主要步骤要求一判断X的大小,并根据判断结果以不同方式分别显示。
1.画出实验流程图。
参考代码:;设NUMBER单元的数X以及数值N1,N2均为单字节无符号数,请判断X的大小,并根据判断结果分别显示:N1<=X<=N2,或X<N1,或X>N2。
DATA SEGMENT USE16MESG1 DB ' N1<=X<=N2 $ 'MESG2 DB ' X<N1 $ 'MESG3 DB ' X>N2 $ 'NUMBER DB 66 ;无符号数XN1 EQU 22N2 EQU 88DATA ENDSCODE SEGMENT USE16ASSUME CS:CODE, DS:DATABEG: MOV AX , DATAMOV DS, AXMOV DX, OFFSET MESG1CMP NUMBER, N1JAE NEXT ;X ≥ N1转MOV DX, OFFSET MESG2JMP DISPNEXT: CMP NUMBER, N2JBE DISP ;X ≤ N2转MOV DX, OFFSET MESG3DISP: MOV AH, 9INT 21H ;显示结果信息MOV AH, 4CHINT 21H ;返回DOSCODE ENDSEND BEG2.运行Tddebug软件,选择Edit菜单编写实验程序3.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接,生成执行文件。
4.使用Rmrun菜单中的Run运行程序,观察运行结果。
5.使用Rmrun菜单中的Debug调试程序。
观察构成分支条件的各标志的变化情况及相关寄存器内容。
6.更改数据区中的数据,考察程序的正确性。
要求二键入一个数,判断数是否在5< X<24范围内,是输出0,不是输-1。
DATA SEGMENT USE16MESG1 DB ' 0 $ 'MESG2 DB ' -1 $ 'NUMBER DB 66N1 EQU 5N2 EQU 24DATA ENDSCODE SEGMENT USE16ASSUME CS:CODE, DS:DATABEG: MOV AX , DATAMOV DS, AXMOV DX, OFFSET MESG1MOV AH, 01HINT 21HMOV BL,ALSUB BL,30HCMP BL, N1JG NEXTMOV DX, OFFSET MESG2JMP DISPNEXT: CMP BL, N2JB DISPMOV DX, OFFSET MESG2DISP: MOV AH, 9INT 21HMOV AH, 4CHINT 21H CODE ENDSEND BEG五、心得体会在上一次实验的基础上,我掌握了比较指令、转移指令使用方法,并初步了解了分支程序的设计、调试方法。
这次要求里面的代码对我来说有点难,不能像以前一样的照猫画虎,让我只能自主思考,主动学习指令并应用。
实验四循环程序设计实验日志指导教师邹洋实验时间:2013 年05 月14 日学院计算机科学与技术专业计算机科学与技术班级0411005 学号2010211912 姓名李新娱实验室s401一、实验题目:循环程序设计二、实验目的:1.掌握比较指令、转移指令和循环指令的使用方法2.掌握循环结构程序的组成3.掌握循环程序的设计、调试方法三、实验要求:1.求某数据区内负数的个数为统计数据区内负数的个数,需逐个判别区内的每一个数据,然后将所有数据中凡是符号位为1的数据个数累加起来,即得到区内包含负数的个数。