汇编语言上机实验四
- 格式:ppt
- 大小:41.00 KB
- 文档页数:6
汇编语言实验4详细讲解一、引言汇编语言是一种底层的计算机语言,它直接操作计算机的硬件。
在汇编语言实验4中,我们将深入了解汇编语言的一些重要概念和技巧。
本文将详细讲解汇编语言实验4的内容,帮助读者更好地理解和应用汇编语言。
二、实验目的汇编语言实验4的主要目的是学习和掌握在汇编语言中使用条件和循环结构的方法。
通过实验,我们将能够编写能够根据条件执行不同操作的程序,并实现循环执行一定次数的功能。
三、实验内容1. 条件结构条件结构是根据条件的真假来执行不同的操作。
在汇编语言中,我们可以使用条件跳转指令来实现条件结构。
条件跳转指令根据条件寄存器的值来决定是否跳转到指定的地址执行。
常用的条件跳转指令有JZ、JNZ、JC、JNC等。
2. 循环结构循环结构是重复执行一段代码的结构。
在汇编语言中,我们可以使用循环指令来实现循环结构。
循环指令根据计数器的值来判断是否继续执行循环体,并在每次循环结束后更新计数器的值。
常用的循环指令有LOOP、LOOPE、LOOPZ、LOOPNE、LOOPNZ等。
四、实验步骤1. 定义和初始化计数器在循环结构中,我们首先需要定义一个计数器,并对其进行初始化。
计数器可以使用DX寄存器或AX寄存器来保存。
2. 执行循环体在循环结构中,我们需要执行的代码放在循环体中。
循环体的代码将会被重复执行,直到计数器的值为0或满足其他条件。
3. 更新计数器的值在每次循环结束后,我们需要更新计数器的值。
可以使用INC或DEC指令对计数器进行加1或减1操作。
4. 判断是否继续执行循环在每次循环结束后,我们需要判断是否继续执行循环。
可以使用循环指令来实现此功能。
根据计数器的值或其他条件来判断是否继续执行循环。
五、实验示例下面是一个简单的实验示例,演示了如何使用条件和循环结构来实现一个简单的程序:```MOV CX, 10 ; 初始化计数器为10MOV AX, 0 ; 将AX寄存器清零LOOP_START:ADD AX, CX ; 将CX的值加到AX中LOOP LOOP_START ; 循环执行,直到CX的值为0MOV BX, AX ; 将AX的值保存到BX寄存器中```在上面的示例中,我们首先将CX寄存器初始化为10,然后将AX 寄存器清零。
汇编语言第四次上机实验报告时间: 2013/5/10 7:00-9:30 地点:南一楼803实验人员:计科10班王涛学号: U201114445一、题目1、用三种方式获取中断类型码10H对应的中断处理程序的入口地址。
(1)直接运行调试工具(TD.EXE),观察中断矢量表中的信息,指出中断类型码10H 对应的中断处理程序的入口地址。
(使用TD观看即可)。
使用TD观看时,在调试工具下调入以前编好的运行程序,跟踪执行INT 21H(即进入中断处理程序,方法是:执行到INT 21H 时,按ALT+F7),观察CS及IP是否改变成了前面记录的值。
(2)编写程序,用DOS系统功能调用方式获取,观察相应的出口参数与(1)看到的结果是否相同(使用TD观看即可)。
(3)编写程序,直接读取相应内存单元,观察读到的数据与(1)看到的结果是否相同.2、编制时钟显示程序。
要求每隔1s在屏幕右下角显示“年-月-日时:分:秒”,并将程序驻留在内存。
3、安装MASM32软件包,以其中的一个例子(如example\3dframes)为例,试用软件包中的集成汇编、连接和调试(TD32.EXE)功能。
软件包从汇编教学网站上下载,操作参见《80X86汇编语言程序设计上机指南》第七章。
二、实验要求1. 在调试工具下调入之前编好的运行程序,跟踪执行INT 21H(即进入中断处理程序,方法是:执行到INT 21H时,按ALT+F7),观察CS及IP是否改变成了前面记录的值。
操作提示:由于INT 21H内部的代码较长,为便于从中断处理程序返回到主程序,可在主程序INT 21H后面的指令上先设置好断点,当不再想跟踪中断处理程序时按F9即可。
实验报告的3、4、5 三个部分不用写。
2. 提示:CMOS内部07,08,09单元中分别存放着日、月、年的信息,“年”只显示低2位即可。
汇编教学网站(http://202.114.1.86)上有CMOS参考资料。
《汇编语言》实验报告实验名称:汇编语言实验报告实验目的:通过实验了解汇编语言的基本概念、语法结构和程序设计方法,掌握汇编语言的编写方法。
实验时间:2024年1月1日实验地点:实验室一、实验背景汇编语言是计算机硬件和软件之间的桥梁,通过汇编语言可以直接操作计算机的底层硬件。
汇编语言是一种低级语言,使用汇编语言可以实现对计算机内存、寄存器等硬件资源的直接操作,从而实现程序的功能。
本实验通过编写汇编语言程序,加深对汇编语言的理解。
二、实验过程1. 确定实验环境:使用DOSBox模拟DOS环境进行汇编程序编写和调试。
2. 编写第一个汇编程序:编写一个简单的汇编程序,将字符串“Hello, World!”输出到屏幕上。
3.程序分析:a.定义要输出的字符串,将字符串存储在数据段中。
b.设置段寄存器,将数据段地址加载到DS寄存器中。
c.设置显示模式和光标位置。
d.将字符串逐个字符输出到屏幕上。
e.关闭显示模式。
4. 编译运行:使用汇编语言的编译器将汇编程序转换成机器码,并在DOSBox中运行程序。
5.调试程序:根据程序运行结果和分析,调试程序中存在的错误,并进行改正。
三、实验结果与分析经过多次编写和调试,我们成功实现了将字符串“Hello, World!”输出到屏幕上的功能。
通过程序分析和调试过程,加深了对汇编语言的理解和掌握。
四、实验总结通过本次实验,我们深入了解了汇编语言的基本概念、语法结构和程序设计方法。
通过实际编写汇编语言程序,对汇编语言的编写方法有了更加深入的认识。
同时,通过调试程序的过程,我们也提高了自身的问题解决能力和分析能力。
在今后的学习和工作中,我们将继续学习和深入研究汇编语言,提高自己的编程能力和创新思维能力。
总体而言,本次实验给我们带来了很大的收获,我们以后将更加努力地学习汇编语言,提高自己的编程水平,为以后的学习和工作做好充分的准备。
汇编上机实验报告实验目的:通过进行汇编语言上机实验,掌握汇编语言的基本语法和编程技巧,培养汇编程序设计能力。
实验内容:实验一:汇编程序的简单输入输出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,并将每个元素的值打印到屏幕上。
试验报告书课程名称:微机原理及应用设计题目:汇编语言上机实训实验类型:验证性授课老师:实验日期:2013.10.11—06.21班级:通信1102(移动方向)学号:姓名:成绩:一、实验目的(1).学习汇编语言上机操作过程,汇编程序的汇编、编辑、连接、运行、DEBUG、调试方法。
(2)、加深理解汇编语言程序设计方法二、实验内容:1.设计程序,向CRT输出字符串“input your name:”,并从键盘读入字符串,最后将“hello”+输入内容显示在CRT上。
2.设计程序,从键盘输入两个数,将其存入单元BUF开始的连续两个字节中,然后将这两个数相加存入SUM单元,并将结果显示在CRT上。
三、实验设备及环境:1.计算机2.MASM汇编四、实验步骤:1.用记事本编写源程序;2.在“开始”—“运行”里键入“cmd”命令启动ms—dos;3.在命令行中输入cd\masm5\回车;4.输入masm 程序名.asm;5.输入link 程序名;6.输入程序名回车运行程序;7.输入debug 程序名.exe运行u命令看反编译结果运行p命令看单步运行结果运行t命令看单步运行结果运行d ds:00 命令查看书据区数据运行g 命令运行q 命令五、源程序:dseg segmentprompt db 'please input your name:$'len equ $-prompthello db 'hello 'buf db 80,0,80 dup('$')dseg endssseg segment stackdb 1024 dup(?)sseg endscode segmentassume cs:code, ds:dseg,ss:sseg main proc farmov ax, seg promptmov ds,axmov es,axmov dx,offset promptmov ah,09int 21hmov dx,offset bufmov ah,0ahint 21hmov si,offset buf+2mov di,offset bufmov cx,80rep movsbcall outentermov dx,offset helloint 21hmov ah,4chint 21hmain endpoutenter proc nearmov dl,0dhmov ah,02hint 21hmov dl,0ahmov ah,02hint 21hretoutenter endpcode endsend main六、实验调试结果见下面截图:七、实验总结通过本次汇编语言上机操作过程,进一步学习了汇编语言中语法结构和控制指令所实现的结果任务,在进行编程时应首先定义一个数据段、然后对程序中的变量、常量进行声明定义,其次是在堆栈段和代码段的定义之后,进行程序段的编写,编完之后要按照程序操作步鄹进行正确连接,然后运行结果DEBUG、最后通过调试对实验的结果进行验证。
实验报告课程:汇编语言程序设计专业班级:计算机科学与技术学号:姓名:李中实验四分支结构程序设计实验一、实验目的1、掌握分支结构程序设计的基本设计方法2、掌握条件转移指令和无条件转移指令的使用方法3、掌握指令对标志寄存器中个标志位的影响情况4、掌握多分支结构程序设计的方法,树型结构法和地址常数表法二、实验要求1、学会使用DEBUG中的T命令,跟踪执行程序2、学会使用DEBUG中的P命令对INT指令的跟踪方法3、学会利用设置断点调试程序的方法三、实验内容1、编写程序。
从键盘接收字符,判断该字符是否为字母、数字或非字母也非数字类字符。
若为字母,则在屏幕上显示“L”;若为数字,则在屏幕上显示“D”;若为非字母也为非数字,则在屏幕上显示“O”。
2、编写程序。
已知DATAX和DATAY单元各存放一个带符号字节数据,从键盘上接受加(+)、减(-)、乘(*)或除(/)号,完成相应运算,结果在屏幕上显示出来。
(1)当输入“+”号时,计算X+Y,并以十六进制形式显示出来;(2)当输入“-”号时,计算X-Y,并以十六进制形式显示出来(3)当输入“*”号时,计算X*Y,并以十六进制形式显示出来(4)当输入“/”号时,计算X/Y,并以十六进制形式显示出来3、编写程序。
从键盘输入若干个任意字符,如果是小写字母a~z之间的字符,请将它们转换成相应的大写字母;若为其他字符,则保持不变,将转换后的新字符保存在指定的存储单元中。
四、解题思路首先将问题进行情况大致分类,逐一进行思考并编写程序。
然后进行汇总,找到链接方式,最后编写程序。
五、编程实现1、DSEG SEGMENTDSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEGSTART: MOV AX,DSEGMOV DS,AXMOV AH,01H ;输入字符INT 21HMOV BL,30HCMP AL,BLJAE ABZJMP OTHER ;小于30H,为其他字符ABZ: MOV BL,39HCMP BL,ALJAE NUM ;30H和39H之间,为数字MOV BL,41HCMP AL,BLJAE ABBAJMP OTHER ;大于39H却小于41H,为其他字符ABBA: MOV BL,5AHCMP BL,ALJAE LETTER ;在a和z之间,为字母MOV BL,61HCMP AL,61HJAE ABSAJMP OTHER ;大于z,小于A,为其他字符ABSA: MOV BL,7AHCMP BL,ALJAE LETTER ;在A和Z之间,为字母JMP OTHER ;大于Z,为其他字符LETTER: MOV DL,'L'JMP END1NUM: MOV DL,'D'JMP END1OTHER: MOV DL,'O'JMP END1END1: MOV AH,02HINT 21HMOV AH,4CHINT 21HCSEG ENDSEND START编辑:汇编:链接:运行:调试:T命令和P命令结合使用:2. DSEG SEGMENTDATAX DB 4DATAY DB -2HTAB DB '0123456789ABCDEF' DSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEG START: MOV AX,DSEGMOV DS,AXMOV CH,DATAXMOV CL,DATAYMOV AH,01H ;输入字符INT 21HMOV BH,'+'CMP BH,ALJE PADDMOV BH,'-'CMP BH,ALJE PSUBMOV BH,'*'CMP BH,ALJE PMULMOV BBH,'/'CMP BH,ALJE PDIVMOV DL,ALJMP PRINTPADD: ADD CH,CLMOV DL,CHJMP PRINTPSUB: SUB CH,CLMOV DL,CHJMP PRINTPMUL: MOV AL,CHIMUL CLMOV DL,ALJMP PRINTPDIV: XOR AX,AXMOV AL,CHIDIV CLMOV DL,ALJMP PRINTPRINT:MOV AL,DL ;运算结果在DL中,复制到AL中MOV CH,DL ;运算结果复制到CH中MOV CL,4SHR AL,CL ;低4位移走,剩下高4位LEA BX,HTABXLATMOV DL,AL ;输出高4位MOV AH,02HINT 21HAND CH,0FH ;留下低4位,掩码MOV AL,CHXLATMOV DL,AL ;输出低4位MOV AH,02HINT 21HMOV DL,'H' ;输出HMOV AH,02HINT 21HMOV AH,4CHINT 21HCSEG ENDSEND START编辑:汇编:链接:运行:调试:T命令和P命令结合使用:3、DSEG SEGMENTRLT DB 9 DUP (?)DSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEG START: MOV AX,DSEGMOV DS,AXMOV DI,0MOV CH,10MOV CL,1INPUT: CMP CH,CLJE END1MOV AH,01H ;输入字符INT 21HMOV BL,61HCMP AL,BLJAE ABSADEC CHJMP INPUTABSA: MOV BL,7AHCMP BL,ALJAE CHANGEDEC CHJMP INPUTCHANGE: SUB AL,20HJMP SAVE SAVE: MOV RLT[DI],ALINC DIDEC CHJMP INPUT END1: MOV AH,4CHINT 21HCSEG ENDSEND START编辑:汇编:链接:运行:调试:T命令和P命令结合使用六、实验总结1、每一种情况符合的条件下,将继续执行,而不是直接跳到程序的末尾。
程及屏幕字符显示程序一、实验目的1、熟练掌握汇编语言的程序格式,程序设计方法;学会使用masm6.11对源程序进行编译、链接、调试和运行2、利用DOS功能调用INT21H的2号和9号功能进行屏幕显示的方法。
3、利用^Break退出程序的方法及局限性。
4、汇编程序的编写二、实验任务1学习汇编语言程序的上机过程2. 利用INT 21的09H号功能调用显示字符串。
验证以下程序1)用A命令在100H处键入下列程序:MOV AH, 9MOV DX,110INT 21INT 202)用A命令在110H处键入下列字符串的ASCII码:DB 'This is a sample!$'3)用N命令和W命令将此程序(包括数据区)存入文件名为的磁盘文件中。
(存入前BX:CX必须置为文件长度值)。
4)用Q命令退出DEBUG。
5)在DOS命令下打AA,运行此程序,即在屏幕上显示'This is a sample!'字符串,若不出现,用DEBUG 检查程序有无错误。
(给出结果截图)3、利用INT 21H 2号功能显示字符: 1)用A命令在100H处键入下列程序: XOR DL,DLMOV CX,100LOP: MOV AH,2INT 21INC DLPUSH CXMOV CX,8DELY: PUSH CXMOV CX,256J: LOOP JPOP CXLOOP DELYPOP CXLOOP LOPINT 202)用G命令运行程序,即在屏幕上依次缓慢的显示256个ASCII字符。
仔细观察每个字符,和IBM-PC ASCII码表对照,看07H-0DH处控制字符显示结果与表上有何不同?3)按CTRL+BREAK退出此程序,若一次不行可多做几次。
4 编写一个简化的段定义结构程序:先提示输入数字“Input number:0-9”,然后在下一行显示输入的数字,结束;如果不是键入了0-9 数字,就提示错误“ERROR!”,继续等待输入数字。
一、实验目的(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.实验一:环境搭建-目标:搭建汇编语言开发环境2.实验二:基本语法-目标:学习汇编语言的基本语法和指令格式-内容:编写一个简单的汇编程序,包括数据段、代码段和堆栈段,以及常用指令(例如MOV、ADD、SUB、JMP等)的使用。
3.实验三:寄存器和内存操作-目标:熟悉汇编语言中的寄存器和内存的操作-内容:编写一个汇编程序,通过MOV指令将数据从内存中加载到寄存器中,然后进行运算,并将结果存储回内存。
4.实验四:条件分支和循环-目标:掌握汇编语言中的条件分支和循环结构-内容:编写一个汇编程序,使用条件分支指令(例如CMP、JE、JNE 等)实现一个简单的判断语句;然后使用循环指令(例如LOOP)实现一个简单的循环结构。
5.实验五:子程序和参数传递-目标:学习如何创建和调用子程序,并传递参数-内容:编写一个汇编程序,其中包含一个子程序,该子程序接受两个参数并返回它们的和。
然后在主程序中调用该子程序,并输出结果。
6.实验六:中断和异常处理-目标:了解中断和异常处理机制,并在汇编程序中处理中断或异常-内容:编写一个汇编程序,其中包含一个中断处理程序,当发生特定的中断时,该处理程序将执行一些特定的操作。
7.实验七:串操作和文件操作-目标:学习汇编语言中的串操作和文件操作-内容:编写一个汇编程序,使用串操作指令(例如MOVS、LODS、STOS等)操作字符串;然后使用文件操作指令(例如OPEN、READ、WRITE 等)读取或写入文件。
8.实验八:图形和音频处理-目标:了解汇编语言中的图形和音频处理- 内容:编写一个汇编程序,使用图形库(例如BGI、OpenGL、DirectX)绘制简单的图形或运行一个音频文件。
这些上机实验可以帮助学生逐步掌握汇编语言的基本知识和技能,并为以后的高级汇编语言编程打下基础。
实验一认识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,弹出内存数据显示窗口。
汇编语言上机实验报告实验时间:XXXX年XX月XX日实验课程:XXXXX实验室地点:XXXXX一、实验目的:1.熟悉汇编语言的基本语法和指令格式;2.掌握汇编语言程序的编写和调试方法;3.理解汇编语言与计算机硬件之间的关系。
二、实验设备与环境:1.实验设备:个人计算机或计算机终端;2. 实验环境:汇编语言开发工具,如Masm、TASM等。
三、实验内容:本实验通过编写汇编语言程序,实现以下功能:1.输入两个整数,求出其和并输出;2.输入一个正整数,判断其是否为素数并输出结果;3.输入一段字符串,判断其中是否存在一些字符,并输出字符的位置。
四、实验原理与方法:1.汇编语言基本语法:包括数据定义、指令格式、寄存器、标志位等;2.输入输出操作:通过中断调用实现从键盘输入、向屏幕输出;3.常用指令:包括数据传送指令、算术运算指令、逻辑运算指令等;4.判断与分支:通过条件判断指令实现程序流程控制。
五、实验步骤:1. 打开汇编语言开发工具,新建文件,并保存为.asm文件;2.编写程序,包括数据定义、指令编写等;3.进行程序调试,检查程序的正确性和运行结果;4.运行程序,查看程序的输出结果;5.对程序进行优化,确保程序的效率和稳定性;6.编写实验报告,记录实验过程和结论。
六、实验结果与数据分析:1.第一个功能的结果:输入两个整数进行相加并输出;2.第二个功能的结果:输入一个正整数,判断是否为素数并输出结果;3.第三个功能的结果:输入一段字符串,判断是否存在一些字符,并输出字符的位置。
七、实验总结:通过本次实验,我对汇编语言的基本语法和指令格式有了更深入的了解,掌握了汇编语言程序的编写和调试方法,加深对汇编语言与计算机硬件之间关系的理解。
在实验过程中,我遇到了一些困难和问题,但通过不断学习和尝试,最终解决了这些问题。
通过实验,我对汇编语言的应用有了更深入的认识,并体会到了编程的乐趣和挑战。
实验完成后,我深刻感受到了汇编语言的底层性能和灵活性,同时也意识到了其编码复杂和调试困难的一面。
汇编语言上机报告班级:姓名:学号:成绩:实验1:8086的微处理器结构(现场)的认识实验一、实验目的1、通过DEBUG工具了解8086的寄存器2、了解DEBUG工具二、预习要点1、8086微处理器的内部特性。
2、8086的寄存器类型、名称和作用。
3、debug工具的作用和特点三、实验项目在DOS下利用Debug调试工具的R命令查看8086微处理器的现场(数据结构)四、实验设备环境PC机1台,DOS操作系统,Debug调试工具五、实验方法在DOS下利用Debug调试工具的R命令查看8086微处理器的现场(数据结构)。
六、实验要求1、写出R命令的功能。
2、写出8086的当前现场的所有数据部件(寄存器)的名称及作用。
1. 进入DOS 指定上机目录的方法2.建立第一次上机的源程序Z=X+Y (2=1+1)3.对源程序进行编译(汇编)产生目标(二进制)文件的方法。
源程序正确(无致命错误 0 Severest Errors )时会出现编译正确的信息并产生同名1.obj 目标文件。
4.制造错误并存盘后重新汇编(MASM 1; 为快速汇编命令,不能缺少“;”。
即不用会话直接)看产生错误的信息。
修改错误重新存盘汇编。
5. 对1.obj链接(link.exe)产生可执行1.exe文件6.完成1.exe后的文件夹7.用DEBUG调入要调试的1.exe文件,用U命令查看。
8.DEBUG的U命令的功能本程序的机器语言(二进制)程序的形态。
用十六进制表示。
每条指令的首地址,如13E7:0000(指令地址由系统分配)每条指令的机器代码,如B8E613每条指令的助记符(汇编指令),如MOV AX,13E6系统分配的本程序数据段的段地址13E69. DEBUG的R命令的功能自己完成截图,并小结指出R命令的所有功能实验2:8086传送类指令的学习实验一、实验目的1、了解8086指令的特点。
2、验证传送类所有指令类型的功能。
3、通用传送指令和专用传送指令的对比。
学生实验报告实验课程名称:微机原理汇编实验开课实验室:年月日年级、专业、班学号姓名成绩实验项目名称汇编语言程序上机操作方法实验指导教师教师评语一、实验目的学习程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法,为后继课程打下坚实的基础。
二、实验原理使用MASM汇编语言设计工具,设计简单的汇编语言程序并进行运行调试,以便掌握汇编语言设计、编写、调试和运行程序的方法。
三、实验仪器、材料1.软件MASM5.02.PC微机一台四、实验步骤1.建立asm文件在windows系统环境下,应用写字板或其它文字编辑软件编写汇编语言源文件。
注意保存的源文件以asm为后缀。
2.用汇编程序MASM对源文件汇编产生目标程序.OBJ。
3.用连接程序LINK产生可执行文件.EXE。
4.执行程序。
5.程序调试五、实验源代码;------------------------------------------------- ;程序名:Lab101;功能:把NUM数组中的最大值取出并显示输出;-------------------------------------------------DATA SEGMENTNUM DB 12,52,36,14,25,32,14,126 COUNT EQU ($-NUM)DATA ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV CX,COUNT ;初始化循环次数MOV SI,OFFSET NUMMOV AL,[SI]MOV DL,ALINC SIAGAIN:MOV AL,[SI]INC SICMP DL,ALJL SWAPLOOP AGAINJMP FINISHSWAP:MOV DL,ALLOOP AGAINJMP FINISH;--------------------------------;子程序名:TRANNUM;功能:将数字转换为字符串;入口参数:AL;出口参数:无;--------------------------------TRANNUM PROC NEARMOV AL,DLXOR AH,AHMOV CX,3MOV DL,10TRAN1:DIV DLXCHG AH,ALADD AL,'0'PUSH AXXCHG AH,ALMOV AH,0LOOP TRAN1MOV CX,3TRAN2:POP DXCALL DISPLAYLOOP TRAN2RETTRANNUM ENDP;--------------------------------;子程序名:DISPLAY;功能:将单个字符显示输出;入口参数:DL;出口参数:无;--------------------------------DISPLAY PROC NEARMOV AH,02HINT 21HRETDISPLAY ENDPFINISH:CALL TRANNUMMOV AH,4CH ;程序结束返回DOSINT 21HMAIN ENDPCODE ENDSEND START六、实验过程原始记录(数据图表、计算等)1、打开命令提示符:输入cmd2、输入:cd G:/asm/tos3、输入:G:4、输入:masm lab1015、输入:link lab1016、输入:lab101七、实验结果分析从程序代码分析,所给数值中最大值为126,运行程序后输出结果为126,说明程序能够实现其功能。
汇编语⾔(王爽第三版)实验4[bx]和loop的使⽤实验4 [bx]和loop的使⽤1.编程:向内存0:200H~0:23fH依次传送数据0~63(3FH)程序分析:【1】内存0:200H~0:23fH空间与0020:0-0020:3f内存空间是⼀样的,(这个不会?oh!My God!,物理地址是唯⼀的,但逻辑地址组合是多种的。
)【2】因为偏移地址是连续内存单元;我们可以把偏移地址做下⽂章。
bx寄存器存储偏移地址(通过偏移地址的间接访问内存单元,这主要是写⼊的内存单元)。
dx寄存器作为存储中间变量的容器(源数据,常量0-63)来向内存写⼊。
汇编代码如下:assume cs:codecode segmentmov ax,0020Hmov ds,ax ;内存单元的段地址写⼊ds寄存器mov bx,0 ;bx寄存器存放偏移地址,初始化为0mov dx,0 ;dx寄存器存储常量数值0~63mov cx,40H ;这⾥40H==64,cx寄存器存放循环次数。
也可以为64;s: mov [bx],dx ;向[bx]内存单元写⼊dx值inc bx ;累加bxinc dx ;累加dxloop smov ax,4c00Hint 21Hcode endsend2. 向内存0:200H~0:23fH依次传送数据0~63(3FH),9条命令的程序的简化版本(不包括伪代码):程序分析:【1】内存0:200H~0:23fH空间与0020:0-0020:3f内存空间是⼀样的,(这个不会?oh!My God!,物理地址是唯⼀的,但逻辑地址组合是多种的。
)为什么这样?数据0-63是64个连续的数字,0-3fH也是连续的64个编号。
我们可以使⽤⼀个bx变量就把偏移地址和数字的递增都搞定了!修改后的汇编代码如下:assume cs:codecode segmentmov ax,0020Hmov ds,ax ;ds指向0020内存段mov bx,0 ;bx寄存器存放偏移地址,初始化为0,也当做源数据:常量数值mov cx,64 ;循环次数64s: mov [bx],bx ; 向[bx]内存单元写⼊bx数值inc bxloop smov ax,4c00Hint 21Hcode endsend实验体会:1. bx寄存器⼀般⽤作偏移地址的存储,[bx]也就代表了段地址与[bx]组合后指向的内存单元。
汇编语言程序设计上机实验指导一、实验目的1.掌握汇编语言的基本原理和编程技巧。
2.加深对计算机系统结构的理解。
3.培养实验操作和编程能力。
二、实验环境1.所需软件:MARS仿真器。
2.操作系统:任意支持MARS仿真器的操作系统。
三、实验内容1.实验一:编写一个简单的汇编语言程序,实现加法运算。
(1)要求用户输入两个整数。
(2)将两个数相加。
(3)输出两个数的和。
2.实验二:编写一个汇编语言程序,实现乘法运算。
(1)要求用户输入两个整数。
(2)将两个数相乘。
(3)输出两个数的乘积。
3.实验三:编写一个汇编语言程序,实现判断一些数是否为质数。
(1)要求用户输入一个整数。
(2)判断该整数是否为质数。
(3)输出判断结果。
4.实验四:编写一个汇编语言程序,实现打印从1到N之间的所有质数。
(1)要求用户输入一个整数N。
(2)打印出从1到N之间的所有质数。
四、实验步骤1.打开MARS仿真器,创建一个新的程序。
2.按照实验要求,编写汇编语言程序代码。
3.在MARS仿真器中调试和运行程序。
4.检查程序输出结果是否与预期相符。
5.优化程序代码,提高程序的效率和性能。
五、实验注意事项1.确保编写的代码逻辑正确、语法规范。
2.程序设计要遵循模块化设计原则,尽量将程序划分为多个模块,提高程序代码的可读性和维护性。
3. 实验过程中要注意调试程序,排除可能出现的bug。
4.在程序编写过程中,保持良好的编程习惯,合理命名变量和子程序,提高代码的可读性。
六、实验总结1.实验报告中需包含实验的目的、内容、步骤、注意事项等内容。
2.分析并总结实验中遇到的问题和解决方法。
3.对实验过程、结果的合理性进行分析和讨论。
4.提出对实验中存在问题的改进建议。
以上就是一份汇编语言程序设计上机实验指导的内容。
希望这份指导能够帮助学生们更好地进行汇编语言程序设计的实验,提高他们的实践能力和编程水平。
汇编语言上机环境及基本步骤一、实验目的:1.掌握编写汇编源程序的基本格式。
2.熟悉汇编语言上机环境。
3.掌握汇编源程序的编辑和修改,熟悉EDIT或记事本的使用方法。
4.掌握汇编源程序编译、连接成可执行文件的过程,熟悉MASM,LINK的使用方法。
二、实验内容:在屏幕上显示并打印字符串“This is a sample program.”三、实验仪器微机一台四、实验步骤:1.在某盘如E盘,以自己的名字的汉语拼音建立一个工作目录(文件夹,名称不要太长,不超过8个字符比如zhangsan),将文件MASM.EXE,LINK.EXE等复制到该目录下,编辑的源文件也保存到该目录下。
从WINDOWS进入DOS环境:C:\>2.用EDIT编辑SW1.ASM源文件。
(1). 从当前目录进入自己的目录下,C:\>E: 回车E:\> CD zhangsan ↙回车键入EDIT并回车:E:\ zhangsan>EDIT根据菜单提示进行各种操作。
(2)进入EDIT编辑------EDIT是一种全屏幕编辑软件,可输入、编辑、修改、保存、另存源程序非常方便。
说明:也可在WIDNDOWS环境下用记事本编辑源文件,在保存时,保存类型应选择所有文件,不能选择文本文件(*.txt),否则在编译时会找不到源文件的。
(3).编辑新文件:a、在EDIT编辑器中输入汇编源程序。
b、检查输入有无错误。
c、打开文件菜单FILE→选择另存为SA VE AS┅→输入文件名为:SW1.ASM→保存。
注意:保存到你自己的文件夹中d、若需要修改此文件,用FILE菜单→选择打开OPEN→输入文件名SW1.ASM,即可修改。
修改后注意重新再存盘。
(4).编辑汇编源程序a、在EDIT(或记事本)中输入源程序。
b、检查。
c、存盘。
可保存为SW1.ASM3.用汇编程序MASM将SW1.ASM文件汇编,生成SW1.OBJ目标文件。
(1).一般简单程序只需生成.OBJ文件,可键入简化命令:E:\zhangsan>MASM SW1;↙若有错误,则显示错误行号及错误性质,如:SW1.ASM(5):error A2006:undefined symbor:xxxx(2).若有错重新进入EDIT进行修改。
汇编上机实验报告实验名称:汇编上机实验报告1. 实验目的通过完成汇编上机实验,掌握汇编语言的基本概念和语法规则,理解计算机底层运行的原理,加深对计算机体系结构的理解。
2. 实验环境硬件环境:个人电脑一台,操作系统为Windows 10软件环境:MASM汇编语言开发工具(Microsoft Macro Assembler)、DOSBox模拟器3. 实验内容及步骤3.1 实验一:汇编程序基本框架搭建步骤:(1) 在MASM环境下创建一个新的汇编源文件,命名为"lab1.asm"。
(2) 在源文件中编写汇编程序的基本框架,包括段定义、数据定义和代码段等。
(3) 使用MASM汇编器将源文件编译为目标文件。
(4) 使用链接器将目标文件连接为可执行程序。
(5) 在DOSBox模拟器中执行可执行程序,观察程序输出结果。
3.2 实验二:实现简单的数值运算步骤:(1) 按照实验一的步骤,在MASM环境下创建一个新的汇编源文件,命名为"lab2.asm"。
(2) 在源文件中编写汇编程序,实现两个数的相加、相减、相乘和相除等简单的数值运算。
(3) 使用MASM汇编器将源文件编译为目标文件。
(4) 使用链接器将目标文件连接为可执行程序。
(5) 在DOSBox模拟器中执行可执行程序,输入两个数值,观察程序计算结果。
3.3 实验三:字符串处理步骤:(1) 按照实验一的步骤,在MASM环境下创建一个新的汇编源文件,命名为"lab3.asm"。
(2) 在源文件中编写汇编程序,实现字符串的输入、输出和处理。
(3) 使用MASM汇编器将源文件编译为目标文件。
(4) 使用链接器将目标文件连接为可执行程序。
(5) 在DOSBox模拟器中执行可执行程序,输入一个字符串,观察程序对字符串的处理结果。
4. 实验结果与分析实验一:汇编程序基本框架搭建在DOSBox模拟器中成功执行了汇编程序,没有出现任何错误提示,并得到了预期的输出结果。
汇编语言上机实验报告汇编语言上机实验报告引言:汇编语言是一种底层的计算机语言,通过使用汇编语言,我们可以更加深入地了解计算机的运行原理和底层机制。
本次实验旨在通过上机实践,掌握汇编语言的基本语法和编程技巧,同时加深对计算机底层的理解。
实验目的:1. 学习汇编语言的基本语法和指令集;2. 掌握汇编语言的程序设计和调试方法;3. 加深对计算机底层原理的理解。
实验环境:本次实验使用的是Windows操作系统,并安装了MASM汇编语言开发工具。
实验过程:1. 实验一:Hello World程序我们首先编写一个简单的Hello World程序,用于验证汇编语言的环境是否正常。
通过使用MASM工具,我们可以将源代码汇编成可执行文件,并在命令行中运行。
该程序的功能是在屏幕上输出"Hello World"。
```assembly.model small.stack 100h.datamsg db 'Hello World$'.codemain procmov ah, 09hlea dx, msgint 21hmov ah, 4chint 21hmain endpend main```通过编译、链接和运行,我们可以在屏幕上看到"Hello World"的输出。
2. 实验二:计算两个数的和在这个实验中,我们将学习如何编写一个简单的加法程序。
我们定义两个变量a和b,并将其值相加,然后将结果输出到屏幕上。
```assembly.model small.stack 100h.dataa db 10b db 20sum db ?.codemain procmov al, aadd al, bmov sum, almov ah, 09hmov dl, sumadd dl, 30hint 21hmov ah, 4chint 21hmain endpend main```在屏幕上,我们可以看到输出结果为"30",即10加20的和。