汇编语言上机实验四
汇编语言实验4详细讲解

汇编语言实验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、最后通过调试对实验的结果进行验证。
汇编语言上机实验四2015李中

实验报告课程:汇编语言程序设计专业班级:计算机科学与技术学号:姓名:李中实验四分支结构程序设计实验一、实验目的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、每一种情况符合的条件下,将继续执行,而不是直接跳到程序的末尾。
汇编语言实验报告4

程及屏幕字符显示程序一、实验目的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!”,继续等待输入数字。
8086汇编语言上机调试 实验报告

一、实验目的(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、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告要求
1. 按照实验要求认真撰写实验报告。 2. 必须手写,拒绝打印。 3. 使用学校统一报告封皮 4. 第16周周五(12月18日)交报告。逾期视为放弃实验,实验成
编程提示
1.在数据段中设置两个存放提示信息的字符串,一个是提示用户输入,另一 个是指示显示信息位置;
massage1 DB ‘please input a string:’, 0AH, 0DH, ‘$’ massage2 DB ‘Right-adjusting of string:’, OAH, 0DH, ‘$’
2.在数据段中设置两个存放输入字符串的缓冲区;
NUM EQU 25
STRING1 DB NUM, 0, NUM DUP(‘ ‘), 0AH, 0DH, ‘$’
STRING2 DB NUM, 0, NUM DUP(‘ ‘), 0AH, 0DH, ‘$’
3.输入字符串采用0AH号DOS功能调用,字符串存入缓冲区时,第2个字节 为实际输入字符串的长度,从第3个字节开始为字符串的ASCII码(参见 实验二课件)。
1.
三、实验要求及调试步骤
实验前要做好充分准备,包括汇编程序清单、调试步骤、调试 方法,以及对程序结果的分析等。
1. 程序说明。说明程序的功能、结构。 2. 调试说明。
包括上机调试的情况、上机调试步骤、调试所遇到的问题是如 何解决的,并对调试过程中的问题进行分析,对执行结果进行 分析。
3. 画出程序框图。 4. 写出源程序清单和执行结果。
汇编语言上机实验(四) 4学时
国家级计算机实验示范中心源自验四 串操作指令及其应用程序的设计与调试运 行
一.实验目的 1.熟悉串操作指令的基本格式和使用方法。 2.掌握常用的串操作程序的设计方法。 3.熟悉串操作程序的调试运行过程。
二.实验内容 编制一程序,从键盘输入两个长度不同的字符串,设字符串长 度小于25个字符。要求在屏幕上以右边对齐的形式显示出来。
绩一律记零。 5. 报告上交地点:主楼A2 401