微机原理实验报告——分支程序设计
微机实验分支程序设计

微机实验分支程序设计微机实验是计算机科学与技术专业学生的重要实践环节,其中分支程序设计是程序设计中的一项基础技能。
分支程序设计指的是在程序中根据条件判断,执行不同的代码路径。
这种设计可以使得程序更加灵活,能够根据不同的输入或状态做出相应的反应。
一、分支程序设计概述分支程序设计通常涉及到条件语句的使用,如`if`、`switch`等。
在微机实验中,分支程序设计的应用非常广泛,包括但不限于数据处理、用户交互、错误处理等方面。
二、分支程序设计的基本结构1. 条件判断:程序首先需要对某个条件进行判断,这个条件可以是一个变量的值、用户输入或者程序的状态等。
2. 执行路径:根据条件判断的结果,程序将选择执行不同的代码块。
在`if`语句中,通常会有两个执行路径:条件为真时执行的代码块和条件为假时执行的代码块。
3. 嵌套分支:在复杂的程序设计中,分支可以嵌套使用,即在一个分支的内部再进行条件判断和分支选择。
三、分支程序设计的应用场景1. 用户输入验证:在用户输入数据后,程序需要验证输入的有效性,根据验证结果执行不同的操作。
2. 错误处理:当程序运行过程中出现错误时,通过分支程序设计可以对错误进行分类处理。
3. 功能选择:在具有多个功能的程序中,用户可以通过选择来决定执行哪个功能。
四、分支程序设计的实现以C语言为例,分支程序设计的基本实现如下:```c#include <stdio.h>int main() {int choice;printf("请输入一个数字(1-5):");scanf("%d", &choice);if (choice == 1) {printf("你选择了选项1。
\n");} else if (choice == 2) {printf("你选择了选项2。
\n");} else if (choice == 3) {printf("你选择了选项3。
华南理工大学微机与接口实验报告(四实验,题目原理流程图代码截图完整版)

微机原理实验报告班 级:2012级电子科学与技术卓工班级电子科学与技术卓工班姓 名: 黄中一黄中一 学 号: 201236460273序 号:评阅分数:评阅分数:实验一一、实验目的1、学会如何建立汇编源文件ASM2、学会调用MASM 宏汇编程序对源文件进行汇编,获得目标程序宏汇编程序对源文件进行汇编,获得目标程序 OBJ 及LST 列表文件列表文件3、学会调用LINK 连接程序汇编后的目标文件OBJ 连接成可执行的文件连接成可执行的文件EXE 4、学会使用DEBUG 调试程序把可执行文件装入内存并调试运行,用D 命令显示目标程序,用U 命令对可执行文件反汇编,用G 命令运行调试。
命令运行调试。
二、实验设备装有MASM 软件的IBM PC 机三、实验内容1、汇编程序对源程序进行编译,生成扩展名为OBJ 的目标文件;连接程序是将目标程序和库文件进行连接、定位,生成扩展名为EXE 的可执行文件;调试程序是对目标文件进行调试,验证它的正确性。
是对目标文件进行调试,验证它的正确性。
2、DEBUG 程序各种命令的使用方法程序各种命令的使用方法功能功能命令格式命令格式 使用说明使用说明显示内存单元内容显示内存单元内容D 地址地址从指定地址开始显示40H 个字节或80H 个字节个字节 修改内存单元内容修改内存单元内容 E 地址地址先显示地址和单元内容等待输入修改的内容输入修改的内容检查和修改寄检查和修改寄存器的内容存器的内容R 显示全部寄存器和标志位及下条指令单元十六进制数码和反汇编格式和反汇编格式反汇编反汇编U 地址地址从指定地址开始反汇编16个或32个字节个字节 汇编汇编 A 地址地址从指定地址直接输入语句并从指定指定汇编装入内存从指定指定汇编装入内存跟踪跟踪 T =地址=地址 从指定地址开始逐条跟踪指令运行运行 G =地址=地址无断点,执行正在调试的指令执行正在调试的指令 退出退出Q退出DEBUG 返回DOS3、实验过程①、在edit 环境,写字板,记事本等中输入源程序。
微机原理实验3分支程序设计

物理与机电工程系(2015——2016 学年第一学期)《分支程序设计》上机实验报告专业:电子信息工程学号: 4625852555姓名:不同人任课教师:规范和实验地点:实验楼368项目编号:实验三开始结束小于否?大与否?取Y=0偏移地址送DX取Y=-1偏移地址送DX取Y=1偏移地址送DX定义段和输出字符串存入自变量X初始化X 送AL与0比较返回DOS 功能调用调用9号功能键输出N开始定义段和输出字符串Y初始化调用1号功能键输入字符X送AL与61H比较大于等于否?与7AH比较小于等于否?AL减20H取Y的偏移地址送DL调用9号功能键调用2号功能键输出Y输出DL中的值返回DOS功能调用结束开始结束定义段和输出字符串调用1号功能键初始化X 送AL输出shuzi返回DOS 功能调用输入字符与30H 比较取shuzi 偏移地址调用9号功能键大于等于否?与39H 比较小于等于否?取qita 的偏移地址调用9号功能键输出qita大于等于否?小于等于否?取zimu 的偏移地址调用9号功能键输出zimu小于等于否?小于等于否?与7AH 比较与41H 比较与5AH 比较与61H 比较NYY NNYY NYNNY—欢迎下载12。
微机原理实验之 - 分支程序循环程序设计

微机原理实验之 - 分支程序、循环程序设计实验三分支程序、循环程序设计实验一、实验目的1.掌握分支程序的结构。
2.掌握分支程序的设计、调试方法。
3.加深对循环结构的理解。
4.掌握循环结构程序设计的方法以及调试方法。
二、实验设备PC机一台,TD-PITE实验装置一套。
三、实验内容:设计一数据块间的搬移程序。
设计思想:程序要求把内存中一数据区(称为源数据块)传送到另一存储区(称为目的数据块)。
源数据块和目的数据块在存储中可能有三种情况,如图1所示。
图3-1 源数据块与目的数据块在存储中的位置情况对于两个数据块分离的情况,如图3-1(a),数据的传送从数据块的首地址开始,或从数据块的末地址开始均可。
但是对于有重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭到破坏,可有如下结论:当源数据块首地址<目的块首地址时,从数据块末地址开始传送数据,如图3-1(b)所示。
当源数据块首地址>目的块首地址时,从数据块首地址开始传送数据,如图3-1(c)所示。
参考流程:如图3-2所示。
图3-2 程序流程图实验程序STACK SEGMENT STACK DW 64 DUP(?) STACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV CX, 0010H MOV SI, 3100HMOV DI, 3200H CMP SI, DI JA A2 ADD SI, CX ADD DI, CX DEC SI DEC DI MOV AL, [SI] MOV [DI], AL DEC SIA1:DEC DI DEC CX JNE A1 JMP A3MOV AL, [SI] MOV [DI], AL INC SI INC DI DEC CX JNE A2 JMP A3 ENDS END STARTA2:A3: CODE实验步骤1. 按流程图编写实验程序,经编译、链接无误后装入系统;2. 用E命令在以SI为起始地址的单元中填入16个数;3. 运行程序,然后再停止运行;4. 通过D命令查看DI为起始地址的单元中的数据是否与SI单元中数据相同;5. 通过改变SI、DI的值,观察在三种不同的数据块情况下程序的运行情况,并验证程序的功能。
微机原理实验

微机原理实验实验⼀ MASM For Windows 的使⽤及顺序程序设计⼀、实验⽬的1、熟悉在PC机上建⽴、汇编、连接、调试和运⾏8086汇编语⾔程序的过程。
2、熟悉masm for windows调试环境及DEBUG常⽤命令的使⽤⼆、实验内容1.DEBUG常⽤命令(U、R、D、E、F、T、G、Q)的操作使⽤2.编程实现两个16位⽆符号数的加、减、乘、除运算。
有两个两字节⽆符号数分别放在存储单元A、B起始的缓冲器中,求其和,结果放在A起始的缓冲区并在屏幕上显⽰。
相加若有进位不存⼊存储单元。
三、实验设备PC机⼀台四、实验准备1) 分析题⽬,将程序中的原始数据和最终结果的存取⽅法确定好。
2) 画出流程图。
3) 写出源程序。
4) 对程序中的结果进⾏分析,并准备好上机调试与⽤汇编程序及汇编调试的过程。
五、实验步骤1) 输⼊源程序。
2) 汇编、连接程序,⽣成 .EXE⽂件,执⾏⽂件,检查结果。
六、学⽣实验报告的要求1) 列出源程序,说明程序的基本结构,包括程序中各部分的功能。
2) 说明程序中各部分所⽤的算法。
3) 说明主要符号和所⽤到寄存器的功能。
4) 上机调试过程中遇到的问题是如何解决的。
5) 对调试源程序的结果进⾏分析。
4) 说明标志位CF、SF和OF的意义。
DEBUG的常⽤命令1、R 显⽰或修改寄存器的内容命令格式:-R2、 D 显⽰存储单元的内容命令格式:-D[地址1, 地址2]3、E修改存储单元的内容命令格式:-E[地址1, 地址2]命令格式:-U[地址1, 地址2]5、T单步执⾏命令格式:-T6、G连续执⾏命令格式:-G[=起始地址, 结束地址]A⼩汇编命令格式:-A7、Q退出DEBUG,返回DOS实验⼀源程序 EXAM1-2 .ASMDATA SEGMENTA DB 34H,18H,2 DUP(0),’$’B DB 56H,83HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AXMOV AL,AMOV BL,BADD AL,BLMOV AH,A+1MOV BH, B+1ADC AH, BHMOV A, ALMOV A+1, AHMOV CX, 0004HMOV DI, OFFSET AMOV DX, [ DI]ADD DI,03NEXT: MOV AX, DXAND AX,000FHCMP AL,0AHJB QQQADD AL, 07HMOV [DI], ALDEC DIPUSH CXMOV CL, 04SHR DX, CLPOP CXLOOP NEXTMOV DX, OFFSET AMOV AH, 09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START执⾏程序EXAM1-2·EXE,屏幕上显⽰结果:9B8A实验⼆分⽀、循环程序设计⼀、实验⽬的1) 掌握分⽀、循环程序的结构。
汇编语言程序设计实验报告二(分支循环程序实验)

汇编语言程序设计实验报告二(分支循环程序实验)一、实验目的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>DIYSI SI+1 恢复SI内容恢复SI内容DI DI+1CX CX-1 设置减量方式N CX=0, SI指向源块末尾DI指向目的块末尾Y结束 [DI] [SI]题一流程图 N 传完了吗, 书馆 Y结束题二流程图七、程序清单题一程序清单:STACK SEGMENT STACK ‘STACK’DB 100 DUP(0)STACK ENDSDATA SEGMENT PARA ‘DATA’SOUR DB 0、1、2、3、4、5、6、7、8、9 DEST DB 10 DUP(,)DB ‘$’DATA ENDSSEGMENT PARA‘CODE’ASSUME CS:CODEMAIN PROC FARSTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV CX,10MOV SI,offset SOURMOV DI, offset DESTAGAIN: MOV AL,[SI]MOV [DI],ALINC SIIN DILOOP AGAINMOV DX,offset DESTMOV AH,09HINT 21HRETMAIN ENDPCODE ENDSEND START题二程序清单:DATA SEGMENT PARA ‘DATA’STRG DB ‘ABCDEFGHIJKLMNOP’STG1 EQU STRG+4STG2 EQU STHG+8STRSE EQU 6DATA ENDSSTACK SEGMENT PARA ‘CODE’DB 100 DUP(0) STACK ENDSCODE SEGMENT PARA ‘CODE’ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK PROC FARSTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV ES,AXMOV CX,STRSEMOV SI,OFFSET STG1MOV DI,OFFSET STG2CLDPUSH SIADD SI,STRSE-1CMP SI,DIPOP SIJL MOVESTDADD SI,STRSE-1ADD DI,STRSE-1 MOVE: REP MOVSB RETMAIN ENDPCODE ENDSEND START。
微机原理实验报告——分支程序设计

实验三 分支程序设计一、实验要求和目的1.熟悉汇编语言程序设计结构;2.熟悉汇编语言分支程序基本指令的使用方法;3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法。
二、软硬件环境1.硬件环境:微机CPU 486以上,500MB 以上硬盘,32M 以上内存; 2.软件环境:装有MASM 5.0、DEBUG 、LINK 和EDIT 等应用程序。
三、实验涉及的主要知识单元在实际应用中,经常根据一些条件来选择一条分支执行。
汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号和相减而导致的结果来进行。
下面就有符号数转移指令来了解在汇编语言程序设计方法。
四、实验内容与步骤1.实验内容(1)编写计算下面函数值的程序:⎪⎩⎪⎨⎧<-=>=0,10,00,1x x x y设输入数据为X 、输出数据Y ,且皆为字节变量,使用Debug 查看X 、Y 两个变量的数据(2)以ARRAY 为首地址的内存单元中,存放5个8位的不带符号数,找出5个数中的最大数,并将结果存入RESULT 字节单元中。
2.实验步骤 a.实验流程图(1)计算函数值的流程图b.编写程序(1)计算函数值的实验代码 DATA SEGMENT X DB 12 Y DB ?DATA ENDS STACK SEGMENT STACK'STACK' DB 100H DUP(?)STACK ENDS CODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AL,XXCMP AL,0 ;把AX 与0比较 JGE BIGPR ;0≥AL 转入BIGPR MOV Y,0FFFFH ;0<AL 则1-=Y JMP EXITBIGPR: JE EQUPR ;0=AL 转入EQUPR MOV Y,1 ;0>AL 则1=Y JMP EXITEQUPR: MOV Y,0 ;0=AL 则0=Y EXIT: MOV AL,Y RET CODE ENDSEND START(2)查找最大值的实验代码 DATA SEGMENTARRAY DB 2,1,4,5,3 RESULT DB ? DATA ENDSSTACK SEGMENT STACK'STACK' DB 100H DUP(?) STACK ENDS CODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX LEA BX,ARRAYMOV AL,[BX] ;ARRAY 第一个数存入BX MOV CX,5 ;置循环次数 LOP: INC BX ;指针变量增1CMP AL,[BX] ;比较AL 中数与[BX]的大小JAE L1;][BX AL ≥转入L1MOV AL,[BX];][BX AL <则][BX AX ←L1: LOOP LOP ;执行循环LOP 程序MOV RESULT,AL MOV AH,4CH INT 21H CODE ENDSEND STARTc.对程序进行debug 调试,观察中间结果 (1)计算函数值的调试 1.反汇编内容①MOV AL,XX 反汇编后变成MOV AL,[0000],即XX 为数据段第一个存储单元的内容,数据段的起始偏移地址为0000。
微机原理实验报告

微机原理实验报告实验⼀DEBUG 调试实验类型:实验课时:指导教师:时间:2013 年⽉⽇课次:第节教学周次:第周实验分室:实验台号:实验员:⼀、实验⽬的1.练习使⽤DEBUG,调试简单汇编程序。
⼆、实验要求1.掌握DEBUG的使⽤,调试程序。
2.读懂程序中各条指令,说明程序功能。
三、实验内容1.启动DEBUG,⽤A命令输⼊并汇编下列程序段。
100 MOV SI,200103 MOV CX,10106 MOV AL,0108 MOV [SI ],AL10A INC SI10B INC AL10D DEC CX10E JNZ 108110 INT 3四、实验结果及分析实验⼆简单汇编语⾔设计实验类型:实验课时:指导教师:时间: 2012 年⽉⽇课次:第节教学周次:第周实验分室:实验台号:实验员:⼀、实验⽬的1.巩固DEBUG及宏汇编的使⽤。
2.加深对指令的理解。
⼆、实验要求1.设堆栈指针SP=2000H,(AX)=3000H,(BX)=5000H。
请编⼀程序将AX的内容和BX的内容进⾏交换。
请⽤堆栈作为两寄存器交换内容的中间存储单元,⽤DEBUG调试程序进⾏汇编与调试。
2.设DS=当前段指地址,(BX)=0300H,(SI)=0002H,请⽤DEBUG的命令将存储器偏移地址300H~304H连续单元顺序装⼊0AH、0BH、0CH、0DH、0EH。
在DEBUG状态下送⼊下⾯程序,并⽤单步执⾏的⽅法,分析每条指令源地址的形成过程?当数据传送完毕时,AX中的内容是什么?程序清单如下:MOV AX,BXMOV AX,0304HMOV AX,[0304H]MOV AX,[BX]MOV AX,0001[BX]MOV AX,[BX][SI]MOV AX,0001[BX][SI]HLT3.设(AX)=0002H,编⼀个程序段将AX的内容乘10,要求⽤移位的⽅法完成。
三、思想描述实验内容1将两个寄存器的内容进⾏交换时,必须有⼀个中间寄存器才能进⾏内容的交换,如果⽤堆栈做为中间存储单元,必须遵循先进后出的原则。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三 分支程序设计
一、实验要求和目的
1.熟悉汇编语言程序设计结构;
2.熟悉汇编语言分支程序基本指令的使用方法;
3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法。
二、软硬件环境
1.硬件环境:微机CPU 486以上,500MB 以上硬盘,32M 以上内存; 2.软件环境:装有MASM 5.0、DEBUG 、LINK 和EDIT 等应用程序。
三、实验涉及的主要知识单元
在实际应用中,经常根据一些条件来选择一条分支执行。
汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号和相减而导致的结果来进行。
下面就有符号数转移指令来了解在汇编语言程序设计方法。
四、实验内容与步骤
1.实验内容
(1)编写计算下面函数值的程序:
⎪⎩
⎪
⎨⎧<-=>=0,10,00,1x x x y
设输入数据为X 、输出数据Y ,且皆为字节变量,使用Debug 查看X 、Y 两个变量
的数据
(2)以ARRAY 为首地址的内存单元中,存放5个8位的不带符号数,找出5个数中的最大数,并将结果存入RESULT 字节单元中。
2.实验步骤 a.实验流程图
(1)计算函数值的流程图
b.编写程序
(1)计算函数值的实验代码 DATA SEGMENT X DB 12 Y DB ?
DATA ENDS STACK SEGMENT STACK'STACK' DB 100H DUP(?)
STACK ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AL,XX
CMP AL,0 ;把AX 与0比较 JGE BIGPR ;0≥AL 转入BIGPR MOV Y,0FFFFH ;0<AL 则1-=Y JMP EXIT
BIGPR: JE EQUPR ;0=AL 转入EQUPR MOV Y,1 ;0>AL 则1=Y JMP EXIT
EQUPR: MOV Y,0 ;0=AL 则0=Y EXIT: MOV AL,Y RET CODE ENDS
END START
(2)查找最大值的实验代码 DATA SEGMENT
ARRAY DB 2,1,4,5,3 RESULT DB ? DATA ENDS
STACK SEGMENT STACK'STACK' DB 100H DUP(?) STACK ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX LEA BX,ARRAY
MOV AL,[BX] ;ARRAY 第一个数存入BX MOV CX,5 ;置循环次数 LOP: INC BX ;指针变量增1
CMP AL,[BX] ;比较AL 中数与[BX]的大小
JAE L1
;][BX AL ≥转入L1
MOV AL,[BX]
;][BX AL <则][BX AX ←
L1: LOOP LOP ;执行循环LOP 程序
MOV RESULT,AL MOV AH,4CH INT 21H CODE ENDS
END START
c.对程序进行debug 调试,观察中间结果 (1)计算函数值的调试 1.反汇编内容
①MOV AL,XX 反汇编后变成MOV AL,[0000],即XX 为数据段第一个存储单元的内
容,数据段的起始偏移地址为0000。
②MOV Y ,-1;MOV Y ,0;MOV Y ,1反汇编后分别对应MOV BYTE PTR [0001],FF, MOV BYTE PTR [0001],00,MOV BYTE PTR [0001],01 它们都表示比较后所得的结果存入
数据段的第二个存储单元0001
③JGE如果为真,则程序执行会转入有效地址为0014的指令所在的存储单元,即开始执行1407:0014里的指令,JZ若为真,则程序转去执行有效地址为001E里的命令,即存储单元1407:001E的内容
2.D命令查看Y存储单元的内容,当输入为12时输出为1
当输入为0时,输出为0
(2)查找最大值
1.反汇编
2.查找的最大值为5
即RESULT中存放五个数中的最大值5。