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

微机原理分支程序设计实验微机原理是计算机科学与技术专业的核心课程之一、在这门课程中,学生需要学习计算机的基本原理和体系结构,并通过实验来巩固所学的知识。
本文将介绍一个关于分支程序设计的微机原理实验。
实验背景:分支程序是计算机中的一种非线性控制结构,它根据条件的不同选择不同的执行路径。
分支程序设计是计算机编程中非常重要的一部分,也是实际应用中经常会遇到的情况之一、通过这个实验,学生将学会如何使用分支结构来解决实际问题。
实验目的:1.了解分支程序设计的基本概念和原理。
2.掌握使用条件语句和循环语句来实现分支程序。
3.通过实际案例分析和编程实践,巩固所学的知识。
实验内容:本实验以学生成绩管理系统为例,通过判断学生的成绩等级来计算总评成绩,并输出等级信息。
分支程序设计的思路如下:1.输入学生的成绩。
2.根据成绩的范围判断学生的等级。
3.根据等级计算总评成绩。
4.根据总评成绩输出相应的等级信息。
实验步骤:1.在开发环境中创建一个新的项目,并新建一个名为“GradeManage”的源文件。
2.在源文件中定义一个成绩变量和一个等级变量,并使用输入函数从键盘读取学生的成绩。
3.使用条件语句根据成绩的范围判断学生的等级,并将等级赋值给等级变量。
4.使用条件语句根据等级计算总评成绩,并将结果赋值给一个总评成绩变量。
5.使用条件语句根据总评成绩输出相应的等级信息。
6.在屏幕上显示输出结果。
7.编译并运行程序,进行测试。
实验总结:通过本实验,我学会了如何设计并实现一个简单的分支程序。
在实验过程中,我深入了解了分支结构的原理和使用方法,并通过编程实践巩固了所学的知识。
分支程序设计在实际应用中非常广泛,掌握这一技能对于计算机科学与技术专业的学生来说非常重要。
在今后的学习和工作中,我将继续探索和学习更多关于分支程序设计和其他相关知识,以提高自己的编程能力。
华南理工大学微机与接口实验报告(四实验,题目原理流程图代码截图完整版)

微机原理实验报告班 级: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 环境,写字板,记事本等中输入源程序。
微机原理综合实验报告

滨江学院微机原理综合实验实验报告学生姓名学号专业信息工程班级2016级二O一八年十二月三十日微机原理综合实验实验一利用DEBUG调试程序调试程序段1、实验目的1)熟悉DEBUG有关命令的使用方法。
2)利用DEBUG掌握有关指令的功能。
3)利用DEBUG运行简单的程序段。
2、实验内容1)进入和退出DEBUG程序。
2)学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。
对于U命令、N命令、W命令等,也应试一下。
3)利用DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。
3、实验准备1)仔细阅读有关DEBUG命令的内容,对有关命令,都要事先准备好使用的例子。
2)作为例子,准备用A命令,输入在显示器上显示字符“S”的系统调用程序段。
3)阅读将AX左移9位的程序段。
4、实验步骤1)在DOS提示符下,进入DEBUG程序。
2)在DOS目录下启动DEBUG。
3)详细记录每一步所用的命令,以及查看结果的方法和具体结果。
5、实验报告要求1)如何启动和退出DEBUG程序。
2)整理每个DEBUG命令使用的方法,实际示例及执行结果。
3)启动DEBUG后,要装入某一个.EXE文件,应通过什么方法实现?实验结果:实验二分支程序实验1、实验目的1)掌握分支程序的设计方法。
2)掌握利用DEBUG修改参数、检查结果的方法。
3)掌握汇编语言源程序的编辑、汇编、连接及调试过程。
2、实验内容1)编写一个程序,显示AL寄存器中的两位十六进制数2)编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z 或a-z字符,均显示“c”;若是回车字符<CR>(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入。
3、实验准备1)编写实验内容要求的两个程序。
2)写出调试以上程序,即修改程序参数,检查结果的操作方法。
3)熟悉源程序汇编、连接命令的使用方法即要回答的内容。
微机原理实验报告-分支程序设计

实验三 分支程序设计一、实验要求和目的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 ENDSSTACK SEGMENT STACK'STACK' DB 100H DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART: 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=YEXIT: MOV AL,Y RET CODE ENDS END START(2)查找最大值的实验代码 DATA SEGMENT ARRAY DB 2,1,4,5,3 RESULT DB ? DATA ENDSSTACK SEGMENT STACK'STACK' DB 100H DUP(?) STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX LEA B X,ARRAY MOV AL,[BX] ;ARRAY 第一个数存入BXMOV CX,5 ;置循环次数 LOP: INC BX ;指针变量增1 CMP AL,[BX] ;比较AL 中数与[BX]的大小JAE L1;][BX AL ≥转入L1 MOVAL,[BX];][BX AL <则][BX AX ← L1: LOOP LOP;执行循环LOP 程序MOV RESULT,AL MOV AH,4CH INT 21H CODE ENDS END STARTc.对程序进行debug 调试,观察中间结果 (1)计算函数值的调试 1.反汇编内容①MOV AL,XX 反汇编后变成MOV AL,[0000],即XX 为数据段第一个存储单元的内容,数据段的起始偏移地址为0000。
微机分支程序设计实验

微机分支程序设计实验微机分支程序设计是计算机科学与技术领域中的一个重要实验,它涉及到程序设计中的条件判断和选择结构。
通过这个实验,学生可以深入理解程序的逻辑控制流程,掌握分支结构的实现方法,并能够应用这些知识解决实际问题。
以下是微机分支程序设计实验的详细内容。
实验目的1. 理解程序设计中的分支结构及其重要性。
2. 掌握条件语句的语法和使用方式。
3. 学会使用分支结构解决实际问题。
4. 提高编程能力和逻辑思维能力。
实验环境- 计算机一台,安装有编程软件(如Visual Studio, Dev-C++等)。
- 编译器(如GCC, MSVC等)。
- 必要的开发工具和文档。
实验内容1. 基础分支结构实验的第一部分是理解并实现基本的分支结构,包括`if`语句和`switch`语句。
- if语句:实现一个简单的程序,根据输入的条件执行不同的代码块。
- switch语句:编写程序,根据输入的值选择不同的执行路径。
2. 复合条件在第二部分,学生将学习如何使用逻辑运算符来构建复合条件。
- 使用`&&`(逻辑与)、`||`(逻辑或)和`!`(逻辑非)来构建更复杂的条件判断。
3. 嵌套分支第三部分将探讨分支结构的嵌套使用,即在一个`if`语句内部使用另一个`if`语句。
- 编写程序,实现多条件的判断和选择。
4. 应用实例在第四部分,学生将应用分支结构解决一些实际问题,如计算成绩等级、判断闰年等。
- 成绩等级:根据输入的成绩,使用分支结构输出相应的等级。
- 闰年判断:编写程序判断用户输入的年份是否为闰年。
实验步骤1. 需求分析:明确实验任务和目标。
2. 设计算法:根据实验要求设计合适的算法流程。
3. 编写代码:根据设计好的算法,使用编程语言实现程序。
4. 编译调试:在编程环境中编译程序,并调试以确保程序正确运行。
5. 结果测试:使用不同的输入测试程序,确保程序能够正确处理各种情况。
6. 文档编写:编写实验报告,记录实验过程、结果和心得体会。
微机原理实验报告

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

实验二分支、循环程序设计一、实验目的1.开始独立进行汇编语言程序设计;2.掌握基本分支,循环程序设计;3.掌握最简单的 DOS 功能调用。
二、实验内容1.安排一个数据区,内存有若干个正数,负数和零。
每类数的个数都不超过 9。
2.编写一个程序统计数据区中正数,负数和零的个数。
3.将统计结果在屏幕上显示。
4.(选作题)统计出正奇数、正偶数,负奇数、负偶数以及零的个数。
三、预习思考1.十进制数 0 ~ 9 所对应的 ASCII 码是什么?如何将十进制数 0 ~ 9 在屏幕上显示出来?0~9对应的ASCII码分别为30H~39H。
若将数字0~9显示在屏幕上,只需要用二进制数0~9分别加上30H得到相应的ASCII码,再通过DOS功能调用AH=02H显示相应的数字。
2.如何检验一个数为正,为负或为零?你能举出多少种不同的方法?使用CMP命令,将该带符号数数与0比较,然后进行判断。
如果大于0,则使用JG命令进行跳转;如果等于0,则使用JE命令进行跳转;如果小于0,则使用JL 命令进行跳转,通过观察跳转后执行不同程序的结果来判断进行了哪个跳转,从而判断大小。
先将该数和0相比观察结果是否相等,可利用JE命令;然后使用AND命令将该数(假设为8位)和10000000相与,结果存在该数中,取出符号位进行判断,可区分正负。
除了AND命令,也可用TEST命令,然后使用JNZ命令进行跳转。
先将该数和0相比观察结果是否相等,可利用JE命令;然后使用SHL逻辑左移命令,左移一位后将符号位移入标志寄存器CF中,检查CF的值即可。
四、流程图开始定义数据段数组中的多个变量CL=0?偏移地址SI+1数组长度CL-1取出数>=0?负数个数加1取出数>0?正数个数加1零的个数加1和1与运算,结果加入到负奇数中和1与运算,结果加入到正奇数中统计正数、负数、零、正奇数、负奇数的个数计算正偶数、负偶数的个数并显示否否是是否是结束五、源代码DATA SEGMENT ;数据段 ARRAY DB 7,-4,3,-2,0,-5,1,9,8,0,5,-4,-3,0 ;14个数据 LENG EQU $-ARRAY ;数组长度 POSI DB ? ;正数个数NEGT DB ? ;负数个数ZERO DB ? ;零的个数POSIODD DB ? ;正奇数POSIEVEV DB ? ;正偶数NEGTODD DB ? ;负奇数NEGTEVEV DB ? ;负偶数POSICHAR DB 'Positive: $' ;打印提示字符PositiveNEGTCHAR DB 'Negtive: $' ;打印提示字符NegtiveZEROCHAR DB 'Zero: $' ;打印提示字符ZeroODDCHAR DB ' Odd: $' ;加入空格且打印提示字符Odd(奇数)EVENCHAR DB ' Even: $' ;加入空格且打印提示字符Even(偶数)CR DB 0DH,0AH,'$' ;回车和换行的ASCII码DATA ENDS;--------------------------------------------------------CODE SEGMENT ;代码段ASSUME CS:CODE,DS:DATA;--------------------------------------------------------START: MOV AX,DATAMOV DS,AX ;给数据段段基址赋值MOV SI,OFFSET ARRAY-1 ;取数组的偏移地址-1,采用寄存器间接寻址MOV CL,LENG ;将数组长度赋予CLMOV AL,0 ;AL数值为0LOOP1: CMP CL,0 ;循环控制条件:数组长度减为零JE CALC ;如果数组长度为零则跳出INC SI ;SI为数组ARRAY中第一个数字的偏移地址,之后的每个循环依次加1DEC CL ;数组长度减1MOV BL,[SI] ;采用寄存器间接寻址CMP BL,AL ;和零比较JG ISPOSI ;带符号数,是正数跳转JE ISZERO ;是零跳转JL ISNEGT ;带符号数,是负数跳转;--------------------------------------------------------ISPOSI: INC POSI ;正数的个数加1AND BX,1ADD POSIODD,BL ;和1进行与运算,如果低位为0即偶数,则加0;如果低位为1即奇数,则加1。
微机原理实验指导书(修改1023)

微机原理实验指导书华中科技大学计算机学院武汉豪申光电新技术有限公司目录微机原理实验 (3)第一章16位汇编语言编程验 (3)实验一系统认识实验 (3)实验二分支程序设计实验 (6)实验三循环程序设计实验 (9)实验四排序程序设计实验 (12)实验五子程序设计实验 (15)微机接口实验 (19)第一节并行接口实验(8255芯片实验) (19)实验一8255并行接口实验 (19)第二节定时/计数实验(8253芯片实验) (26)实验二音乐发声器接口实验 (26)第三节串行通信接口实验(8251芯片实验) (33)实验三 RS-232标准全双工查询方式异步串行通信实验 (34)第四节A/D D/A转换器接口实验 (42)实验四查询方式A/D转换器接口实验(ADC0809) (42)实验五 D/A函数波形发生器接口实验(DAC0832) (49)微机原理实验第一章16位汇编语言编程验实验一系统认识实验⑴实验目的掌握在MF平台中汇编程序的编写、调试方法。
⑵实验内容基本实验将存储区BUF1中的内容复制到BUF2中。
⑶实验步骤(一)方式1(Debug方式)1.在MF2KP环境下输入汇编程序,编译、连接,生成.exe文件。
2.启动调试程序(Debug)。
3.在程序的退出处设置断点,利用Add Watch命令查看BUF2中的内容是否正确。
(二)方式2(人-机交互方式)1.在MF2KP环境下输入汇编程序,编译、连接、运行。
2.按提示输入数据,在屏幕显示的结果中查看BUF1,2中的内容是否正确。
3.输入不同的字符串,可得到不同的结果。
⑷实验资源配置IBMPC微机,Win2000操作系统,MF2KP微机原理实验集成开发环境。
⑸实验软件的编程◇实验流程图如图1.1.1所示将存储区BUF1中的内容复制到BUF2中的程序主功能模块如图1.1.1中的虚线框中所示。
◇实验参考程序如下所示;*--------------------------------------------------* ;* Aexp1.asm(汇编语言编程认识实验) * ;* Copyright (c) 2002 by HUST * ;* 程序调试:在EXIT处设置断点,利用Add Watch命令 * ;* 查看BUF1和BUF2的内容是否正确 * ;*-------------------------------------------------* DATA SEGMENTBUF1 DB 'MASM HELLO WORLD'COUNT EQU $-BUF1BUF2 DB20DUP(?)DATA ENDSSTACK1 SEGMENT STACKDB20DUP(?)STACK1 ENDSCODE SEGMENTASSUME DS:DATA,SS:STACK1,CS:CODESTART:MOV AX,DATAMOV DS,AXMOV SI,OFFSET BUF1 ;建立源地址指针MOV DI,OFFSET BUF2 ;建立目标地址指针MOV CX,COUNT ;字节数送入CX寄存器L1: MOV AL,[SI] ; 取源数据一个字节送入AL中MOV [DI],AL;将源数据送入目标地址单元中INC SIINC DIDEC CXJNZ L1 ;判断是否传送完毕EXIT: MOV AH,4CHINT21HCODE ENDSEND START⑹实验要求◇按要求完成实验得出正确结果.◇试着自己写出人机对话方式的汇编程序.◇完成实验报告实验二分支程序设计实验⑴实验目的掌握分支程序的结构。
微机实验分支和循环程序设计实验

微机实验分支和循环程序设计实验微机实验三分支和循环程序设计实验一、分支程序设计实验1.实验目的1.掌握分支程序的结构。
2掌握分支程序的设计、调试方法。
2.实验设备微机一台3.内容设计一数据块间的搬移程序代码:DATA SEGMENT ;定义数据段ORG 2520H ;输入原数据存放地址 X DB 1,2,3,4,5,6,7 ;1234567的赋值COUNT EQU $-X ;计算数据串长度 ORG 2525H ;输入目的数据存放地址 Y DB 7 DUP(0) ;定义目的数据长度 DATA ENDS ;数据段结束STACK SEGMENT PARA STACK 'STACK' ;定义堆栈段 STAPN DB 100 DUP(?) ;定义100个字节空间 TOP EQU LENGTH STAPN STACK ENDSCODE SEGMENT ;定义代码段MAIN PROC FAR ;过程定义语句ASSUME CS:CODE,DS:DATA,SS:STACK ;段寄存器分别与哪些段有关START:MOV AX,STACK;设置堆栈寄存器MOV SS,AXMOV SP,TOPPUSH DS ;DS入栈保护SUB AX,AX ;AX=0PUSH AX ;段内偏移量0入栈MOV AX,DATA ;数据段基址赋给AXMOV DS,AXLEA AX,X ;取X的地址偏移量LEA BX,Y ;取Y的地址偏移量CMP AX,BX ;比较大小JC FE ;如果AX小于BX,则执行FEJMP FS ;否则执行FSFS: MOV SI,0 ;从前往后复制MOV DI,0MOV CX,COUNT ;确定复制次数CIRCLE1:MOV AL,X[SI] ;MOV不能实现两存储空间赋值,所以先把原始数据存入ALMOV Y[DI],AL ;将数据赋给YINC SI ;SI指向下一个数据INC DI ;DI指向下一个数据LOOP CIRCLE1 ;循环赋值JMP END1 ;循环结束退出 FE: MOV SI,COUNT ;从末尾开始赋值MOV DI,COUNTDEC SI ;指向最后一个数据DEC DIMOV CX,COUNT ;确定循环次数CIRCLE2: MOV AL,X[SI] ;MOV不能实现两存储空间赋值,所以先把原始数据存入ALMOV Y[DI],AL ;将数据赋给YDEC SI ;SI指向下一个数据DEC DI ;DI指向下一个数据LOOP CIRCLE2 ;循环赋值JMP END1 ;循环结束退出END1: RET ;返回dos MAIN ENDP ;MAIN过程结束CODE ENDS ;代码段结束END MAIN ;源代码结束运行结果:若从后往前传:若从前往后传:二、循环程序设计实验1.实验目的(1)加深对循环结构的理解。
微机原理:顺序、分支、循环、子程序设计

[公司名称]实验二顺序、分支、循环、子程序设计微机原理上机实验JonMMx 2000[日期]预习报告零、相关知识1,LEA指令和MOV指令的区别一、顺序结构计算m*n-w,最终结果保存在AX其中m=12, n=12, w=4最终结果为AX=008CH=140Dname "sequence strcture"org 100hMOV AX, 1000HMOV DS, AXMOV SI, 1000HMOV [SI], 12MOV [SI+1], 12MOV [SI+2], 4MOV AL, [SI]MOV BL, [SI+1]MUL BLMOV BX, 0MOV BL, [SI+2]SUB AX, BXHLT二、分支结构在DS数据段偏移地址为DATA开始的顺序80个单元中,存放着某班80个同学的微机原理考试成绩。
现欲编程序统计>=90、89~70、69~60和<60分的人数,并将统计的结果存放在当前数据段偏移地址为BUFFER的顺序单元中name “branch structure”START:MOV DX, 0000HMOV BX, 0000HMOV CX, 80LEA SI, DATALEA DI, BUFFERGOON:MOV AL, [SI]CMP AL, 90JC NEXT3INC DHJMP STORNEXT3:CMP AL, 70JC NEXT5INC DLJMP STOR NEXT5:CMP AL, 60JC NEXT7INC BHJMP STOR NEXT7:INC BL STOR:INC SILOOP GOON MOV [DI], DH MOV [DI+1], DL MOV [DI+2], BH MOV [DI+3], BL HLT三、循环结构在DS所决定的数据段,从偏移地址BUFFER开始顺序存放100个无符号16位数。
现欲编程序将这100个数按大小顺序排序(以下程序使用的是快速排序算法,也可以使用冒泡排序,嵌套两层循环)name “circle structure”LEA DI, BUFFERMOV BL, 99NEXT0:MOV SI, DIMOV CL, BLNEXT3:MOV AX, [SI]ADD, SI, 2CMP AX, [SI]JNC NEXT 5MOV DX, [SI]MOV [SI-2], DXMOV [SI], AXNEXT5:DEC CLJNZ NEXT3DEC BLJNZ NEXT0HLT四、子程序编写程序,完成将一组BCD数转换成16位二进制数。
微机实验报告

实验1 基本操作实验一、实验目的(1)掌握TD- PITC 80X86微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。
(2)掌握使用运算指令类编程及调试方法。
(3)掌握运算类指令对各状态标志位的影响及其测试方法。
(4)学习使用软件监视变量的方法。
二、实验设备PC机一台,TD- PITC实验装置一套三、实验内容及步骤通过对样例程序的操作,学会使用在TD- PITC环境下,如何输入汇编语言程序,如何进行汇编语言源程序的汇编、连接、下载和运行;在调试程序的学习过程中,应学会:如何设置断点,如何单步运行程序,如何连续运行程序,怎样查看寄存器的内容,怎样修改寄存器的内容,怎样查看存储器的内容,怎样修改存储器的内容3.1 实验内容一——BCD码转换为二进制实验内容将四个二位十进制数的BCD码存放于3500H起始的内存单元中,将转换的二进制数存入3501H起始的内存单元中,自行绘制流程图并编写程序。
实验步骤:1)运行Wmd86软件,进入Wmd86集成开发环境。
2)根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言。
语言选择后,下次再启动软件,语言环境保持这次的修改不变。
在这里我们选择汇编语言。
3)语言选择后,点击新建来新建一个文档。
默认文件名为Wmd861.4)编写实验程序。
并保存,此时系统会提示输入新的文件名,输完后点击保存。
实验程序清单如下:SSTACK SEGMENT STACKDW 64 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART:XOR AX,AXMOV SI 3500HMOV DI 3510HA1:MOVE AL,[SI]ADD AL,ALMOV BL,ALADD AL,ALADD AL,ALADD AL,BLINC SIADD AL,[SI]MOV [DI],ALINC SIINC DILOOP A1A2:JMP A2CODE ENDSEND START5)点击编译文件,若程序无误,再点击进行连接。
微机原理实验

微机原理实验第二部分实验内容《微机原理与应用》包括6个实验,其中前3个是软件编程,在PC机上完成,后3个是硬件实验,在TDN-MD实验箱上完成。
实验一顺序程序设计与调试一、实验目的1.熟悉汇编语言上机过程和上机步骤。
2.掌握汇编语言程序书写格式。
3.掌握顺序程序的设计与调试方法。
4.掌握汇编语言程序运行结果的观察方法。
二、实验设备PC机一台(安装汇编软件)。
三、实验内容分析并对比以下各程序段运行的结果。
1.两种加法指令比较(1) STCMOV AL,50HMOV BL,60HADD AL,BL(2)STCMOV AL,50HMOV BL,60HADC AL,BL2.两种加1指令比较(1) MOV AL,0FFHINC AL(2) MOV AL,0FFHADD AL,13.两种乘法指令比较(1) MOV AL,0FFH MOV BL,0FFH MUL BL(2) MOV AL,0FFH MOV BL,0FFH IMUL BL4.逻辑指令比较(1) MOV AL,55H AND AL,0FH (2) MOV AL,55H OR AL,0FH (3) MOV AL,55H XOR AL,0FH (4) MOV AL,55H TEST AL,0FH 5.移位指令比较(1) MOV AL,55H SHL AL,1(2) MOV AL,55H SHR AL, 1 (3) MOV AL,55H SAR AL, 1(4) STCMOV AL,55H ROL AL, 1 (5) STCMOV AL,55H ROR AL, 1 (6) STCMOV AL,55HRCL AL, 1(7) STCMOV AL,55HRCR AL, 1四、选作题在数据段中定义变量X、Y、Z、RESULT,计算X+Y-Z,结果存入数据段中的单元中。
其中X、Y、Z均为32位带符号数。
五、实验要求1.按汇编语言格式书写程序,在debug下进行调试、记录每组指令的运行情况,并进行分析与对比。
微机原理实验(含解答程序)

微机原理实验(含解答程序)-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN微机原理实验课题(共16个内容,附解答程序)(汇编程序可以使用MASM FOR WINDOWS)1.将偏移地址为2000h开始的100个单元依次设置为0~99。
2.将两个64位的二进制数相加,记录相加的和以及各个状态标志的值。
3. 编写程序,在屏幕上分行显示自己的姓名、学号。
4. 编写程序,通过键盘输入0——9之间的一个数字,利用查表法计算其平方。
在DEBUG下查看执行结果。
5. 用分支结构设计程序实现符号函数100010xy xx>⎧⎪==⎨⎪-<⎩,要求x和y存放在内存单元中,并将判断的结果在屏幕上显示输出。
6. 在键盘上输入一个字符,判断是否为小写字母,若不是,显示错误信息,若是,则将其转换为大写字母并显示。
7. 在键盘上输入一个字符,判断它是一个数字、大写字母还是小写字母,若为数字,则显示digital,若为字母,显示letter,否则,显示other。
8. 将字节型变量x的低四位(一位十六进制数)以十六进制数的形式显示。
9. 编制程序计算S=1+2·3+3·4+4·5+……+N(N+1)+……直到N (N+1)大于200为止,并将结果由屏幕上显示出来。
10. 将字形变量x以二进制数的形式在屏幕上显示输出。
11. 将字形变量x以十六进制数的形式在屏幕上显示输出。
12. 将内存单元缓冲区中的符号数(20个)按从小到大的顺序排列,并以十六进制数的形式显示。
13. 编制程序计算S=1+2+3+……+N,并将结果由屏幕上显示出来。
(要求:在屏幕上显示提示信息,提示输入N,N用十六进制表示,且N小于0FH,用子程序实现(段内),将输入的结果用十六进制数输出显示,显示结果的程序用子程序是实现(段间))。
14.要求在键盘上输入一个小于四位的十进制数,将其转换为二进制数存放,并讲转换后的结果以十六进制数的形式在屏幕上显示出来。
微机原理 实验三 分支结构程序设计

实验3 分支结构程序设计—转移指令
一、项目(实训)名称:
分支结构程序设计—转移指令
二、项目(实训)学时数:
学时数:4
三、项目(实训)目标:
1)熟悉8086CPU的寻址方式和指令系统。
2)掌握汇编语言程序设计上机步骤。
3)用实例上机调试。
四、项目(实训)中的具体任务:
1)熟悉8086/8088 的指令系统分支结构程序。
.
2)按汇编语言程序设计上机步骤上机。
3)初步学会编写和调试分支结构程序。
五、教师知识和能力要求:
要求教师熟悉微机的结构和工作原理,熟悉8086CPU的寻址方式和指令系统,掌握汇编语言程序设计上机步骤。
掌握MASM和TASM汇编程序的安装方法。
六、学生知识和能力准备:
认真阅读8086CPU的寻址方式和指令系统。
编写分支结构汇编语言程序。
做好实验工具软件和资料准备。
七、工具与设备:
八、辅助教学资料:
汇编语言程序设计韩海编
九、实施步骤与技术要点:
题目:用跳转语句实现从键盘接收一个字符,如果是小写字母则输出“L”,大写字母则输出“U”,数字则输出“N”,都不是则输出“*”。
输入回车停止输入。
如下图所示:
1.画出程序流程图,编写源程序:
2.用汇编程序产生目标文件:
3.用LINK.EXE程序产生可执行文件:
4.运行可执行文件:
十、考核或评价标准:
1. 检查上机步骤及调试结果:(60分)
2.程序分析正确性:(20分),
3.结合思考题答辩情况(20分),综合评定成绩。
微机接口机原理实验报告

微机原理及接口技术——实验报告学号: xxxxxx姓名: xxxxx专业: 网络工程实验一: 系统认知1.1实验目的掌握 TD 系列微机原理及接口技术教学实验系统的操作, 熟悉Wmd86 联机集成开发调试软件的操作环境。
通过顺序程序设计与分支程序设计来进行举例。
1.2实验设备PC 机一台, TD-PITE 实验装置一套。
1.3实验内容内存从BUFF开始的单元中存放着两个字数据X、Y, 完成X+Y, 并将相加的和(假设仍为一个字数据)存放于内存从RESULT开始的存储单元中。
DATA SEGMENTBUFF DW X,YRESULT DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AX,BUFFADD AX,BUFF+2MOV RESULT,AXMOV AH,4CHINT 21HCODE ENDSEND START加载程序后调试, R寄存器;U反汇编;D显示数据;E修改数据。
1.4实验截图实验二分支程序设计2.1实验目的1.掌握分支程序的结构.2.掌握分支程序的设计、调试方法.2.2实验设备PC 机一台, TD-PITE 实验装臵一套。
2.3实验内容1, X>0求函数Y= 0, X=0-1, X<0程序如下:DATA SEGMENTVAR1 DB XVAR2 DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AXMOV AL, VAR1CMP AL, 0JGE BIGMOV VAR2,0FFHJMP DONEBIG:JE EQULMOV VAR2,1JMP DONEEQUL:MOV VAR2, 0DONE:MOV AH, 4CHINT 21HCODE ENDSEND START实验三循环程序设计3.1实验目的1)加深对循环结构的理解。
微机原理上机实验报告

微机原理上机实验报告微机原理上机实验报告姓名:刘⾃祥学号:04103154实验⼀ Debug程序的使⽤⼀、实验⽬的1.学习使⽤DEBUG调试命令。
2.学习⽤DEBU G调试简单程序。
3.通过程序验证码制及其对标志位的影响。
4.通过调试熟悉和掌握个寄存器的作⽤与特点。
⼆、实验内容⽤DEBUG调试简单程序。
三、实验仪器微机⼀台四、实验步骤1.由DOS进⼊DEBUG调试环境。
(1)C:>DEBUG将调试程序装⼊内存注意:当机器控制权由DOS成功地转移给调试程序后,将显⽰“-”号,它是DEBUG 的状态提⽰符,表⽰可以接受调试⼦命令了。
(2)-R 显⽰CPU中各寄存器当前初始内容,请记录下列各项:AX=0000 BX=0000 CX=0000 DX=0000 BP=0000 SI=0000 DI=0000 DS=13B2 ES=13B2 SS=13B2 SP=FFEE CS=13B2 IP=0100 FLAG寄存器中的8个标志位状态值是:OF DF IF SF ZF AF PF CF0 0 1 0 0 0 0 0 DEBUG⽤符号给出标志寄存器中8个标志位的当前状态,其含义如下表所⽰。
标志位含义‘1’的对应符号‘0’的对应符号OF溢出OV有NV⽆DF⽅向DN递减UP递增IF中断EI允许DI禁⽌SF符号NG负PL正ZF全零ZR零NZ⾮零AF辅助进位AC有NA⽆PF奇偶性PE偶PO奇CF进位CY有NC⽆2.⽤DEBUG调试简单程序例1 -A CS:0106MOV AX,1234MOV BX,2345MOV CX,0ADD AX,BXMOV CX,AXINT 20运⾏程序(注:执⾏程序时IP应指向要执⾏的指令,需要修改时-RIP当前值输⼊需要值该处为0106当然也可以在T或G命令中指出程序起始地址)-R 显⽰各寄存器当前内容及⾸条指令-T 3 跟踪执⾏三条赋值传送指令,观察寄存器及标志位变化-T 2跟踪执⾏相加及送和数指令,观察寄存器及标志位变化-G 执⾏软件中断指令INT 20,机器将显⽰“程序正常终⽌”的信息,并显⽰“-”,表明仍处在DEBUG的调试控制状态下,注意未⽤T命令,因为我们不想进⼊到20H 中断处理程序中去,P命令也可实现相同操作实验现象记录:观察每条指令执⾏后各相关寄存器值及标志位状态例2 -A CS:116MOV AX,[0124]MOV BX ,[0126]ADD AX,BXMOV [0128],AXINT 20DW 2222DW 8888DW 0设置断点分段运⾏程序-G=CS:116 11D 从指定⼊⼝运⾏程序,⾄断点11D停,可见两个数已取⾄AX,BX,但还没有求和-G122 从上⼀断点运⾏⾄新断点停,已完成求和并存⼊指定结果单元-G 完成程序观看内存内容-DCS:116 12A显⽰本程序⼩段⽬标代码和数据单元内容-UCS:116 12A反汇编指定范围的内存内容-实验现象记录:通过反汇编,记录程序执⾏前指定范围的内存内容,并记录每条指令执⾏后各相关寄存器值及指定范围的内存内容)例3 -A CS:0192MOV DX,19BMOV AH,9INT 21INT 20DB …HELLO,WORLD! $?-P 命令单步执⾏实验现象记录:观察每条指令执⾏后各寄存器的变化,记录DX,AX的变化。
微机原理实验3分支程序设计

微机原理实验3分支程序设计物理与机电工程系(2022——2022学年第一学期)《分支程序设计》上机实验报告一、实验目的:1.掌握分支程序的基本结构和设计方法。
2.掌握分支程序上机运行和调试方法。
3.熟悉DEBUG的使用。
二、实验内容:1某0某0,要求某和y存放在内存单元中,并将判1.用分支结构设计程序实现符号函数y01某0断的结果在屏幕上显示输出。
2.在键盘上输入一个字符,判断是否为小写字母,若不是,显示错误信息,若是,则将其转换为大写字母并显示。
3.在键盘上输入一个字符,判断它是一个数字、大写字母还是小写字母,若为数字,则显示digital,若为字母,显示letter,否则,显示other。
4.将字节型变量某的低四位(一位十六进制数)以十六进制数的形式显示。
三、实验过程:1某0某0的源程序,汇编源程序,运行1.根据要求用分支结构设计编辑实现符号函数y01某0MASMFORWINDOWS软件,打开写好的程序,源程序即用p指令逐条执行的寄存器变化及指令逐条含义如下:DATASSEGMENT;定义数据段某db-6;存入某的值,比如此处取某=-6ydbdadb'y=1','$'dendb'y=0','$'某iaodb'y=-1','$'DATASENDSSTACKSSEGMENT;定义堆栈段三、实STACKSENDSCODESSEGMENT;定义代码段ASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVA某,DATASMOVDS,A某;初始化moval,某;某=-6送入ALcmpal,0;将AL与0比较大小JLne某t;(小于转移,SF!=0且ZF=0)小于转移到ne某tjgne某t1;(大于转移,SF=0F且ZF=0)大于转移到ne某t1movy,0;将存入ylead某,den;取den的偏移地址送D某movah,09h;9存入AHint21h;调用9号功能键,显示den的内容‘y=0’jmpne某t2;无条件转移到ne某t2ne某t1:movy,1;1送入ylead某,da;取da的偏移地址放D某movah,09hint21h;调用9号功能显示da的内容‘y=1’jmpne某t2;无条件转移到ne某t2ne某t:movy,-1;-1放ylead某,某iao;取某iao的偏移地址放D某中movah,09hint21h;调用9号功能显示某iao的内容‘y=-1’ne某t2:MOVAH,4CH;调用返回DOS功能INT21H;返回DOSCODESENDS;代码段结束ENDSTART;汇编结束,起始运行地址为START程序流程图如下:四、实五、实六、教开始定义段和输出字符串存入自变量某初始化某送AL与0比较取Y=-1偏移地址送D某Y小于否?N大与否?N取Y=0偏移地址送D某Y取Y=1偏移地址送D某调用9号功能键输出返回DOS功能调用结束调试过程如下:2.根据要求,在键盘上输入一个字符,判断是否为小写字母,若不是,显示错误信息,若是,则将其转换为大写字母并显示,写出源程序,汇编源程序,运行MASMFORWINDOWS软件,打开写好的程序,源程序即用p指令逐条执行的寄存器变化及指令逐条含义如下:DATASSEGMENT;定义数据段ydb'error','$';定义输出字符串DATASENDSSTACKSSEGMENT;定义堆栈段STACKSENDSCODESSEGMENT;定义代码段ASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVA某,DATAS;初始化MOVDS,A某movah,1;1放AHint21h;调用1号功能,输入一个字符cmpal,61h;与61H比较大小。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.3 分支程序设计实验2.3.1 实验目的1、掌握分支程序的设计方法。
2、掌握宏定义及宏调用的基本方法。
3、了解小写和大写字母的ASCII码表示及其转换方法。
了解数字及其它字符在的ASCII码表示方法。
4、进一步掌握调试工具的使用方法2.3.2 实验预习要求1、复习比较指令、条件转移指令的用法。
2、复习宏定义及宏调用的基本方法。
3、根据“2.3.3 实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。
4、程序框架中显示提示信息的指令序列用宏调用实现。
5、从“2.3.4 实验习题”中任选一道题目,编写源程序,以便上机调试。
2.3.3 实验内容从键盘输入一字符,判断该字符是小写字母、大写字母、数字或其它字符。
若输入为小写字母,显示“You Input a Lowercase Letter!”;若输入为大写字母,显示“You Input a Uppercase Letter!”;若输入为数字,显示“You Input a Digit!”;若输入为其它字符,显示“You Input Other Letter!”。
1、编程指导数字0~9的ASCII码为30H~39H;大写字母的ASCII码为41H~5AH,小写字母的ASCII码为61H~7AH。
本题目将字符分为小写字母、大写字母、数字及其它字符,根据键入字符的ASCII码值判断其所属类型,并显示相应的信息。
字符串显示使用功能号为09H的DOS功能调用,接收键盘输入的单个字符使用功能号为01H的DOS功能调用。
2、流程图及程序框图(1)流程图(2)实验代码:DATA SEGMENTINFOR1 DB 0AH,0DH,"Please Press Any Key to input a letter:$"INFOR2 DB 0AH,0DH,"You Input a Lowercase Letter!$"INFOR3 DB 0AH,0DH,"You Input a Uppercase Letter!$"INFOR4 DB 0AH,0DH,"You Input a Digit!$"INFOR5 DB 0AH,0DH,"You Input Other Letter!$"DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DA TAMOV DS,AXMOV DX,OFFSET INFOR1MOV AH,09HINT 21HCMP AL,'0'JB OTHERCMP AL,'9'JBE DIGITCMP AL,'A'JB OTHERCMP AL,'Z'JBE UPPERCMP AL,'a'JB OTHERCMP AL,'z'JBE LOWERJMP PENDLOWER:MOV DX,OFFSET INFOR2MOV AH,09HINT 21HJMP PENDUPPER:MOV DX,OFFSET INFOR3MOV AH,09HINT 21HJMP PENDDIGIT:MOV DX,OFFSET INFOR4MOV AH,09HINT 21HJMP PENDOTHER:MOV DX,OFFSET INFOR5MOV AH,09HINT 21HJMP PENDPEND:MOV AH,4CHINT 21HCODE ENDSEND START(3)实验结果:2.3.4 实验习题1、在屏幕上显示信息“Are you really want to exit?”,然后从键盘输入一个字符,若输入“Y”或“y”,显示“Thank you for your using!”后程序结束;若输入“N”或“n”,显示“Let’s continue!”后程序结束;若输入其它字符,显示“You press an error key!”后程序结束(要求尽量使用宏指令以便使源程序更加简洁)。
(1)实验代码:DA TA SEGMENTINFOR1 DB 0AH,0DH,"Are you really want to exit?$"INFOR2 DB 0AH,0DH,"Thank you for your using !$"INFOR3 DB 0AH,0DH,"Let's continue !$"INFOR4 DB 0AH,0DH,"You press an error key !$"DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET INFOR1MOV AH,09HINT 21HMOV AH,01HINT 21HCMP AL,'Y'JE YESCMP AL,'y'JE YESCMP AL,'N'JE NOCMP AL,'n'JE NOJMP PENDYES:MOV DX,OFFSET INFOR2MOV AH,09HINT 21HJMP PENDNO:MOV DX,OFFSET INFOR3MOV AH,09HINT 21HJMP PENDOTHER:MOV DX,OFFSET INFOR4MOV AH,09HINT 21HJMP PENDPEND:MOV AH,4CHINT 21HCODE ENDSEND START(2)实验结果:2、在屏幕上显示如下信息:1------------------------Panda2------------------------Cat3------------------------Rabbit4------------------------Pig5------------------------EXIT(Please choose 1,2,3,4or 5)-----若输入1,显示“I like panda”后程序结束;若输入2,显示“I like cat”后程序结束;若输入3,显示“I like rabbit”后程序结束;若输入4,显示“I don’t like pig”后程序结束;若输入5,程序直接结束;若输入其它字符,显示“You press an error key!”后程序结束(要求尽量使用宏指令以便使源程序更加简洁)。
(1)代码:DA TA SEGMENTINFOR1 DB 0AH,0DH,"1---------------------Panda$"INFOR2 DB 0AH,0DH,"2---------------------Cat$"INFOR3 DB 0AH,0DH,"3---------------------Rabbit$"INFOR4 DB 0AH,0DH,"4---------------------Pig$"INFOR5 DB 0AH,0DH,"5---------------------EXIT$"INFOR6 DB 0AH,0DH,"I like Panda$"INFOR7 DB 0AH,0DH,"I like Cat$"INFOR8 DB 0AH,0DH,"I like Rabbit$"INFOR9 DB 0AH,0DH,"I don't like Pig$"DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET INFOR1MOV AH,09HINT 21HMOV DX,OFFSET INFOR2MOV AH,09HINT 21HMOV DX,OFFSET INFOR3MOV AH,09HINT 21HMOV DX,OFFSET INFOR4MOV AH,09HINT 21HMOV DX,OFFSET INFOR5MOV AH,09HINT 21HMOV AH,01HINT 21HCMP AL,'1'JE ACMP AL,'2'JE BCMP AL,'3'JE CCMP AL,'4'JE DCMP AL,'5'JE PEND;JMP PENDA:MOV DX,OFFSET INFOR6MOV AH,09HINT 21HJMP PENDB:MOV DX,OFFSET INFOR7 MOV AH,09HINT 21HJMP PENDC:MOV DX,OFFSET INFOR8 MOV AH,09HINT 21HJMP PENDD:MOV DX,OFFSET INFOR9 MOV AH,09HINT 21HJMP PENDPEND:MOV AH,4CHINT 21HCODE ENDSEND START(2)实验结果:2.3.5 实验小结通过本次实验,我掌握了汇编分支程序的设计方法,了解了小写和大写字母的ASCII 码的转换方法,以及数字及其他的字符在ASCII码的表示方法。
实验中遇到了一些问题,例如:输入源代码时,一定要按照语句格式与语法来写,并且少了空格会导致编译错误;一个完整的汇编程序只能返回一次DOS等,返回DOS语句后面的汇编程序不会执行等。