汇编语言程序设计实验报告二(分支循环程序实验)

合集下载

汇编语言-实验二 循环与子程序程序设计

汇编语言-实验二 循环与子程序程序设计

汇编语言-实验二循环与子程序程序设计
实验目的
本实验旨在通过学习循环和子程序的概念和使用方法,掌握汇
编语言中循环和子程序的程序设计技巧,培养学生的程序设计能力。

实验内容
1. 循环程序设计:编写一个循环程序,实现指定次数的循环操作。

2. 子程序程序设计:编写一个子程序,实现指定功能的模块化
程序设计。

实验步骤
循环程序设计
1. 根据实验要求确定需要循环的次数。

2. 初始化循环计数器,将循环计数器置为0。

3. 判断循环计数器是否达到循环次数的要求,如果达到则跳出
循环,否则继续执行循环体。

4. 执行循环体的操作。

5. 循环计数器自增1。

6. 返回到第3步继续判断循环条件。

子程序程序设计
1. 根据实验要求确定需要实现的功能。

2. 将要实现的功能封装在一个子程序中,确定输入参数和输出结果。

3. 在主程序中调用子程序完成指定的功能。

4. 如果需要,可以在子程序中调用其他子程序实现更复杂的功能。

实验
本次实验通过编写循环和子程序的程序设计,加深了对汇编语言中循环和子程序的理解。

循环程序设计能够实现重复执行指定次数的操作,提高了程序的效率;子程序程序设计能够实现模块化和可重用性,提高了程序的可读性和可维护性。

通过实践,进一步掌握了汇编语言的程序设计技巧,加深了对汇编语言的理解和应用能力。

参考资料
汇编语言程序设计教程
汇编语言程序设计实验指导书。

汇编语言-实验二 循环与子程序程序设计2023简版

汇编语言-实验二 循环与子程序程序设计2023简版

汇编语言-实验二循环与子程序程序设计汇编语言-实验二循环与子程序程序设计引言在汇编语言中,循环与子程序是常用的程序设计技术。

循环结构能够使程序重复执行一段代码,而子程序则能够将一段代码封装成一个可重用的模块。

本文将介绍如何使用汇编语言进行循环和子程序的程序设计。

循环结构在汇编语言中,循环结构可以使用`LOOP`指令或者`JMP`指令来实现。

`LOOP`指令会根据`CX`寄存器的值进行循环,每次循环都会将`CX`寄存器的值减一。

程序员可以通过设置`CX`寄存器的初始值来控制循环次数。

下面是一个简单的示例演示如何使用`LOOP`指令实现循环结构:asmMOV CX, 5 ; 设置循环次数为5L1:; 这里是循环体的代码LOOP L1 ; 循环除了`LOOP`指令,我们还可以使用`JMP`指令来实现循环结构。

`JMP`指令会无条件地跳转到指定的标签处,从而实现循环。

在循环体的末尾,程序员需要通过`JMP`指令将控制流程跳转到循环的开始处。

下面是一个使用`JMP`指令实现循环结构的示例:asmMOV CX, 5 ; 设置循环次数为5L1:; 这里是循环体的代码DEC CX ; 循环次数减一JNZ L1 ; 如果循环次数非零,跳转到L1处子程序子程序是一段独立的代码块,可以在程序中被多次调用。

通过使用子程序,可以将重复的代码封装为一个可重用的模块,提高程序的可维护性和可读性。

在汇编语言中,子程序的定义和调用可以使用`PROC`和`CALL`指令来实现。

`PROC`指令定义一个子程序,而`CALL`指令用于调用一个子程序。

在子程序内部,使用`RET`指令返回到调用它的地方。

下面是一个简单的示例演示如何定义和调用一个子程序:asmPROC MySubroutine; 这里是子程序的代码RET ; 返回ENDPCALL MySubroutine ; 调用子程序在子程序内部,可以使用栈来传递参数和保存返回地质。

例如,可以使用`PUSH`指令将参数压入栈中,然后在子程序内部使用`POP`指令来取出参数值。

分支与循环程序设计实验报告

分支与循环程序设计实验报告

实验名称分支与循环程序设计实验指导教师罗志祥专业班级光电1406姓名段昳晖学号U2014*****联系电话137********一、任务要求1.设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。

264X当XYX/2当10X64X当X102.利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。

P3.0为低电平时开始计时,为高电平时停止计时。

设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。

二、设计思路1.设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。

264X当XYX当X/21064X当X10将外部单元1000H中的X,通过分支判断,分别执行不同的语句,三条语句分别为标记为L1、L2、L3,先比较X与64的大小关系,再判断X与10的大小关系,主要利用比较转移指令CJNE,以及执行CJNE指令后的进位位CY,进一步比较大小,分别跳转至对应语句。

将结果存于外部单元的1001H以及1002H。

1专业资料整理2.利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。

P3.0为低电平时开始计时,为高电平时停止计时。

设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。

主程序设计三层循环,分别对应时、分、秒,最内层安放一秒延时程序。

利用R0、R1、R2计数,R3保存分钟数、R4保存小时数,最内层循环60次,中循环循环1次,中循环60 秒,外循环循环1次,外循环循环24次,清零。

其中对端口显示的秒数、分钟数、时间数,进行二进制修正。

利用循环来设计延时程序,合理计算语句长度,以及循环次数。

程序运行时修正P3.0的值,可以实现暂停计数和继续的功能。

汇编实验三--分支循环程序设计

汇编实验三--分支循环程序设计

福建农林大学金山学院实验报告系:专业:计算机科学与技术年级: 08 姓名:学号:实验课程:汇编语言实验室号:_______ 实验设备号:实验时间:指导教师签字:成绩:实验三分支循环程序设计1.实验目的和要求1、学习调试程序,查找逻辑错误;2、学习分支语句的编程和调试;3、学习循环语句的编程和调试。

2.实验环境实验的硬件环境是:IBM—PC机及其兼容机实验的软件环境是:操作系统:DOS 2.0以上;调试程序:;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。

3.实验内容及实验数据记录1.有10个数,统计正数的个数,存放在变量M中中。

经过汇编后,形成EXE文件。

在DEBUG中,先用G=0命令执行程序,用D命令查看M单元的内容,会发现结果不正确。

用单步执行命令T=0,单步执行程序,查找程序中的逻辑错误,注意每一次循环中AL寄存器中值的变化是否正确。

(AL寄存器中存放正数的个数)DSEG SEGMENTMSG DB 4, -2, -6, 0, 5, 67, 8, -3, 5, 6M DB ?DSEG ENDSCSEG SEGMENTASSUME CS: CSEG, DS: DSEGSTART: MOV AX, DSEGMOV DS, AXMOV CX, 10MOV AL, 0LEA SI, MSGL1: MOV BL, [SI]CMP BL, 0JBE NEXTINC ALNEXT: INC SILOOP L1MOV M, ALMOV AL, 0MOV AH, 4CHINT 21HCSEG ENDSEND START2.数据段中是一组无符号数,将最小数存放在M单元中。

按上题方法查找一处逻辑错误。

DSEG SEGMENTMSG DB 13, 15, 7, 25, 24M DB ?DSEG ENDSCSEG SEGMENTASSUME CS: CSEG, DS: DSEGSTART: MOV AX, DSEGMOV DS, AXMOV CX, 4MOV AL, MSGMOV SI, OFFSET MSG+1L1: CMP AL, [SI]JB NEXTMOV AL, [SI]NEXT: LOOP L1MOV M, ALMOV AL, 0MOV AH, 4CHINT 21HCSEG ENDSEND START3.编程:在首地址为BUF开始的内存单元中存有10个字节数,求其中0的个数,并将结果存于RESULT中。

汇编语言实验2报告

汇编语言实验2报告
汇编语言实验2
汇编语言程序设计实验
2.实验过程
一.实验目的与要求1.学习并掌握汇编语言程 Nhomakorabea的基本设计
2.编程掌握汇编语言编程的顺序结构,选择结构,循环结构
二.实验设备
微型计算机
三.实验内容
1.编程实现9+8-7运算,把结果存在存储单元中。用debug查看程序的运行结果,检查程序运行结果的正确性,源程序命名为1.asm。(可使用masm5.0也可使用集成汇编环境)(如使用masm5.0需要将1.asm放入到masm5.0文件夹下,接下来进行汇编和链接,如果使用集成开发环境需要将源文件1.asm和生成的1.obj和1.exe存放到以班级学号姓名命名的文件夹下)
可使用masm50也可使用集成汇编环境如使用masm50需要将1asm放入到masm50文件夹下接下来进行汇编和链接如果使用集成开发环境需要将源文件1asm和生成的1obj和1exe存放到以班级学号姓名命名的文件夹下源程序及注释如下
实验报告
系别
班级
学号
姓名
时间
地点
机电系
课程名称
微机原理及接口技术
实验名称
源程序及注释如下:
debug查看结果如下:
2.试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来,源程序命名为2.asm。(提示:输入和显示调用dos功能实现,要求使用文件夹中的集成汇编环境,源文件及生成文件存放到以班级学号姓名命名的文件夹下)
源代码及注释如下:
键盘输入小写字母并用大写字母显示截图如下:
3.试编写一个汇编语言程序求1+2+3+……..+10,并在屏幕上显示最终的和值,源程序命名为3.asm。(提示:显示调用dos功能实现,要求使用文件夹中的集成汇编环境,源文件及生成文件存放到以班级学号姓名命名的文件夹下)

汇编语言实验报告(分支)

汇编语言实验报告(分支)
西安财经学院信息学院
《汇编语言程序设计》实验报告
实验名分支结构程序设计实验室实验楼403实验日期2013/06/03
1、实验目的及要求
1.学习调试程序,查找逻辑错误;
2.学习分支语句的编程和调试;
3.学习循环语句的编程和调试。
二、实验环境
硬件环境:一台微型计算机;
软件环境:windows 7
链接程序:LINK.EXE
调试环境:DOSBOX0.74虚拟平台。
3、实验内容
定义10个数据,分别为“3, 0, -1, 45, 2, -7, 10, 8, -9,-1”。统计其中正数的个数,并把结果存放在内存变量M中。
四、实验过程:
5、源程序清单
程序源代码如下:
DSEGSEGMENT
MSGDB 3, 0, -1, 45, 2, -7, 10, 8, -9, -1
MDB ?
DSEGENDS
CSEGSEGMENT
ASSUMECS: CSEG, DS: DSEG
START:MOVAX, DSEG
MOVDS, AX
MOVCX, 10
MOVAL, 0
LEASI, MSG
L1:MOVBL, [SI]
CMPBL, 0
JBENEXT
INCAL
NEXT:INCSI
LOOPL1
MOVM, AL
MOVAL, 0
MOVAH, 4CH
INT21H
CSEGENDS
ENDSTART
6、实验体会
本次实验相对于之前的所有程序,是最顺利的一次,完成时间也最快,其中一个原因是上次实验所积累的Байду номын сангаас心和有用的、有效的经验。通过本次实验,我掌握了分支语句的编程和调试过程,同时也巩固了学习循环语句的编程和调试过程,更一步地增长了信心和增强了理论知识。

分支与循环结构程序设计实验


分支与循环结构程序设计
6、实验报告要求
1)实验报告要求有实验目的、要求、设备或仪器、程序设计、 步骤、数据分析。数据分析填在报告本的原始数据栏。 2)画出实验要求1)2)程序设计流程图、写出程序清单并有简 要注释。 3)写出实验过程中所遇到的问题与解决的办法。
7、思考题
1)MCS-51系列单片机有那些跳转指令?列出这些指令,并说 明其功能。 2)MCS-51系列单片机有哪些子程序调用和返回指令?列出这 些指令,并说明其功能。 3)MCS-51系列单片机有哪些查表指令?列出这些指令,并说 明其功能。
单片机原理与应用课程实验
实验二、分支与循环结构程序设计
实验重点:读懂程序、调试程序、数据分析并规范记录 实验难点:编写程序
分支与循环结构程序设计 1、实验目的
了解程序的多分支结构,掌握多分支结构程 序的编程方法,掌握循环程序的编程方法,掌握 跳转指令的使用。
分支与循环结构程序设计 2、实验要求(1 、2为必做,3 选做)
4、实验步骤 实际操作注意之处
1)打开电脑电源。 2)启动计算机,打开KEIL软件。 3)老师演示KEIL软件操作过程。。。在编辑窗口进行工 程建立、源程序涟接、工程设置、输入源程序,保存, 文件名为T2.ASM。对T2.ASM源程序进行编译,编译无误 后,执行程序,观察相关内容的数据变化。 4)同学们自行编写内容1的T1.ASM源程序,按以上步骤调 试该程序,观察相关内容的数据变化。 5)用单步、设置断点、全速三种执行程序的方法调试程 序,观察相关内容数据的变化。
1)求一数组中最大(或最小)数的程序设计。 2)统计一数组中零、负数、正数个数的程序设计。
3)设变量X存放于R2,函数值y存放在R3。试按照下式的要求给y赋值。 设X,Y均为带符号数,编程计算。 1 X>0 y = 0 X=0 -1 X<0

马聪敏 汇编实验报告

(此文档为word格式,下载后您可任意编辑修改!)华北电力大学实验报告||实验名称汇编语言程序设计课程实验课程名称汇编语言程序设计||专业班级:网络1002 学生姓名:学号:成绩:指导教师:王保义实验日期:2013.1实验1 用表格形式显示字符1、实验目的及要求(1)实验目的学习用汇编语言设计与编写循环程序。

(2)实验要求按15行×16列的表格形式显示ASCII码为10H---100H的所有字符,即以行为主的顺序及 ASCII码递增的次序一次显示对应的字符。

每16个字符为一行,每行中的相邻两个字符之间用空白符(ASCII为0)隔开。

2、所用仪器、设备Masm for windows集成实验环境3、实验原理利用dos的02号显示输出功能调用,显示字符4、实验方法与步骤(1)编程思路:把dl初始化为10H,然后不断使其加一以取得下一个字符的ASCII码,直到dl 为100为止。

换行时用cx计数。

显示空白符时,用其ASCII码0置入dl寄存器,每行结束时,用显示回车和换行来结束本行并开始下一行。

由于逐个显示相继的字符时,需要保存并修改寄存器内容,而显示空格,回车,换行时,也要使用寄存器,用堆栈保存相继的字符。

(2)流程图5、分析与结论用表格形式显示字符这个程序做起来比较简单,用语句:mov bl,15,mov cx, 16来定义15行*16列的表格,loop lie语句循环输出每行的16个字符,先比较每一行的字符是否输出16个,如果是,则转到exit用mov ax,4c00h ,int 21h输出此行的字符,同时,行计数器随之增1,当行计数器增至15,证明字符表已经输完,完全显示出来,程序结束。

由于这个实验比较易于实现,先画出程序框图,之后就比较好编写,编程简单也比较快,所以没有遇到什么问题,最后的输出结果也是正确的。

实验二查找匹配字符串一、实验目的及要求(1)实验目的学习用汇编语言设计与编写循环程序。

汇编实验报告--分支程序设计实验

实验四分支程序设计实验学生姓名:何茂杰学号:2010305104 专业班级:计算机本科一班指导老师:文远熔实验日期:实验成绩:一、实验目的1.掌握分支程序的设计方法;2.掌握利用DEBUG修改参数、检查结果的方法;3.熟悉汇编语言源程序的编辑、汇编、连接及调试过程。

二、实验内容p181,例5.10把x的绝对值赋给y,x为一个四字节有符号数。

三、实验环境PC微机DOS操作系统或Windows 操作系统四、实验要求1.画出两个程序的流程图,若要独立编写程序,应列出相应的程序清单。

2.说明本实验是如何利用DEBUG进行调试的。

五、主要实验步骤跳跃表法可以使程序根据不同的条件转移到多个程序分支中去。

步骤;第一步:定义所要使用的数据段,并分别定义是字还是字节。

第二步:对所要使用寄存器进行压栈处理。

第三步:书写子程序,即寄存器中哪一位为1(从低位到高位)把程序转移到8个不同的程序分支中去。

第四步:测试结果。

1.对.EXE文件进行调试运行。

(1)用DEBUG调试运行,学会修改AL内容的方法;(2)对DSPKEY.EXE键入不同的字符,分别进行调试;(3)在MS-DOS下运行这两个.EXE文件。

六.实验结果及测试子程序:cmp al, 0 ;AL为逻辑尺je continuelea bx, branch_tableL:shr al, 1 ;逻辑右移jnc add1jmp word ptr[bx];段内间接转移add1: add bx, type branch_table ;add bx,2jmp L七.心得体会该实验让我了解用变址寻址方式实现跳跃表法源代码:Brand_addresses segmengtBranch_table dw routine_1dw routine_2dw routine_3dw routine_4dw routine_5dw routine_6dw routine_7dw routine_8branch_addresses endsprocedure_select segmentmain proc farassume cs: procedure_select ,ds:branch_addresses start:push dssub bx,bxpush bxmov bx,branch_addressesmov ds,bxcmp al,0je continue_main_linemov si,0l:shr al,1jnb not_yetjmp branch_table[si]not_yet:addsi,type branch_tablejmp lcontinue_main_line:routine_1:routine_2:retmain endpprocedure_select endsend start。

分支和循环程序实验(精)

课程名称:实验项目:实验地点:专业班级:学生姓名:指导教师:本科实验报告计算机硬件技术基础分支和循环程序实验学号:12年 4 月 22 日一、实验目的和要求1.通过分支程序设计、循环程序设计实验,掌握无条件转移指令、条件转移指令的格式、功能及使用方法。

2.掌握分支程序的结构、单分支和多分支程序的设计方法。

3.了解循环程序的基本结构和控制循环的方法。

二、实验内容与要求要求学生按教师指定题目进行汇编语言程序设计,并上机调试,以实现较复杂的程序设计。

1. 已知X、Y、Z、MAX为16位的带符号数,求三个数中最大值,结果存入MAX单元。

2. 求10个学生成绩中的最高成绩,结果存入MAX字节单元中,已知成绩为字节型。

第一题程序:STACK SEGMENT STACKDB 200 DUP(0)STACK ENDSDATA SEGMENTX DW 10Y DW -20Z DW 30MAX DW 2 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE, SS:STACK,DS:DATABEGIN:MOV AX, DATAMOV DS, AXMOV AX,XMOV BX,YMOV CX,ZCMP AX,BXJG S1CMP BX,CXJG S3MOV MAX ,BXS3: MOV MAX ,AXS1: CMP AX,CXJG S2MOV MAX,CXS2: MOV MAX , AXCODE ENDSEND BEGIN第二题程序:SSEG SEGMENTDB 200 DUP(0)SSEG ENDSDATA SEGMENTVAR DB 1,2,3,4,5,6H,13,23,45,32,12H N EQU $-VARDATA ENDSCODE SEGMENTASSUME CS:CODE,SS:SSEG,DS:DATA BG: MOV AX,DATA MOV DS,AXMOV CX,N-1MOV SI, 0MOV BH ,VAR[SI] JCXZ LASTAGIN: INC SICMP BH,VAR[SI]JAE NEXTMOV BH , VAR[SI]NEXT: LOOP AGINLAST: MOV AH ,4CHINT 21HCODE ENDSEND BG五、实验结果与分析(必填)第二题结果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汇编语言程序设计实验报告二(分支循环程序实验)
一、实验目的
1、 掌握分支程序、循环程序的设计方法。
2、 熟悉DEBUG程序的使用方法。
3、 掌握汇编语言程序的编辑、汇编、连接以及调试过程。
二、实验内容
1、 编写一程序,将内存中某一区域的数据传送到另一个区域中(要求用循结
构,不考
虑数据块重叠问题)。
2、 编写一程序,将内存中某一区域的数据传送到另一区域(要求考虑数据块
重叠问
题)。
三、实验准备
1、 预习数据传送指令,熟悉分支和循环程序设计方法。
2、 预习DEBUG调试程序的使用方法。
3、 根据实验内容要求,编写好实验源程序。
四、实验步骤
1、 用QE或其它编辑软件,在计算机上编辑源程序,使其正确无误。
2、 汇编、连接源程序,产生.EXE可执行文件。
3、 运行程序。
(1) 进入DEBUG。打入DEBUGT MYPROG.EXE。MYPROG为所编程序的文
件名。
(2) 先用G命令连续剧连续执行程序,程序执行完毕后,观察运行结果。如果
执行后是对的,说明程序编写是正确的,如果结果不对,说明程序有错误,
则执行下一步。
(3) 检查程序。在程序中设置若干断点,以便杳出错误所在。
(4) 采用单步命令T或执行程序,观察各寄存器和存储单元内容,以便找到错
误之处。
五、实验报告要求
1、 列出程序清单,并给出程序流程图。
2、 总结实现数据传送的几种方法,指出它们的区别。 开始
3、 分析实验中所遇到的一些问题,分析错误原因。
4、 说明本实验中是如何使用DEBUG进行调试的。 CX、SI、DI置初值 六、流
程图勤
开始 设置增量方式
CX、SI、DI置初值 保存SI内容
AL [SI] SI SI+源块长度
[DI] AL N SI>DI
Y
SI SI+1 恢复SI内容 恢复SI内容
DI DI+1
CX CX-1 设置减量方式
N CX=0, SI指向源块末尾
DI指向目的块末尾
Y
结束 [DI] [SI]
题一流程图 N 传完了吗, 书馆 Y
结束
题二流程图
七、程序清单
题一程序清单:
STACK SEGMENT STACK ‘STACK’
DB 100 DUP(0)
STACK ENDS
DATA SEGMENT PARA ‘DATA’
SOUR DB 0、1、2、3、4、5、6、7、8、9
DEST DB 10 DUP(,)
DB ‘$’
DATA ENDS
SEGMENT PARA‘CODE’
ASSUME CS:CODE
MAIN PROC FAR
START: PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV CX,10
MOV SI,offset SOUR
MOV DI, offset DEST
AGAIN: MOV AL,[SI]
MOV [DI],AL
INC SI
IN DI
LOOP AGAIN
MOV DX,offset DEST
MOV AH,09H
INT 21H
RET
MAIN ENDP
CODE ENDS
END START
题二程序清单:
DATA SEGMENT PARA ‘DATA’
STRG DB ‘ABCDEFGHIJKLMNOP’
STG1 EQU STRG+4
STG2 EQU STHG+8
STRSE EQU 6
DATA ENDS
STACK SEGMENT PARA ‘CODE’
DB 100 DUP(0) STACK ENDS
CODE SEGMENT PARA ‘CODE’
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
PROC FAR
START: PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV CX,STRSE
MOV SI,OFFSET STG1
MOV DI,OFFSET STG2
CLD
PUSH SI
ADD SI,STRSE-1
CMP SI,DI
POP SI
JL MOVE
STD
ADD SI,STRSE-1
ADD DI,STRSE-1 MOVE: REP MOVSB
RET
MAIN ENDP
CODE ENDS
END START

相关文档
最新文档