微机原理实验2 编程实现循环程序
微机原理与应用综合实验—循环程序设计

94 A2:PUSH AX 95 MOV DL,' ' 96 MOV AH,2 97 INT 21H 98 POP AX 99 ADD AX,BX 100 SHL AX,1 101 RET 102 A3:PUSH AX 103 MOV DL,' ' 104 MOV AH,2 105 INT 21H 106 POP AX 107 SUB AX,BX 108 SHL AX,1 109 RET 110 111 RET 112 CHRAC ENDP 113 MOV AH,4CH 114 INT 21H 115 CODE ENDS 116 END MAIN
45 ;********************************************** 46 INPUTPRO PROC NEAR 47 PUSH CX ;保护现场 48 PUSH AX 49 PUSH BX 50 SHL AX,1 ;得到每一行输入的字符(‘*’、‘ ’)总数 51 MOV CX,0001H 52 LOP:CALL CHRAC 53 INC CX ;CX自加 54 CMP CX,AX 55 JNA LOP;判断相等就换行 56 POP BX 57 POP AX ;恢复现场 58 POP CX 59 RET 60 INPUTPRO ENDP 61 ;********************************************** 62 ;子程序:输入每一个‘*’和‘ ’和0AH(换行字符) 63 ;********************************************** 64 CHRAC PROC NEAR 65 CMP CX,AX 66 JZ A1; 67 MOV DL,'*' 68 69 SHR AX,1 ;满足空格的条件 70 SUB AX,BX 71 CMP CX,AX 72 JNA A2 73 ADD AX,BX 74 ADD AX,BX 75 CMP CX,AX 76 JNB A3 77 78 SUB AX,BX 79 SHL AX,1 80 PUSH AX 81 MOV AH,2 82 INT 21H 83 POP AX 84 RET 85 A1:PUSH AX 86 MOV DL,0DH 87 MOV AH,2 88 INT 21H 89 MOV DL,0AH 90 MOV AH,2 91 INT 21H 92 POP AX 93 RET
微机原理与接口技术实验二 建立90H个无符号数

电子信息专业实验报告课程微机原理与接口技术实验实验题目建立90H个无符号数学生姓名lz评分学号班级同实验者实验时间地点电子信息学院专业实验中心一、实验目的1、掌握循环程序设计与调试方法2、在指定内存区域存放数据3、掌握“单步执行T”、“分段执行G=起始地址停止地址”、“连续执行G=起始地址”的调试方法二、实验内容(含技术指标)1、在指定单元建立90H个无符号数,使用基本指令编写循环程序实现2、用DEBUG调试执行文件3、在指定的内存单元检查数据4、按照要求执行程序,记录并分析数据三、实验仪器(仪器名称、型号,元器件名称、清单,软件名称、版本等)1、联想笔记本电脑Windows系统2、Masm for Windows集成实验环境2015四、实验原理(基本原理,主要公式,参数计算,实现方法及框图,相关电路等)1、以偏移地址1000H为起点,初始值为00H,每次增加1H,依次建立90H个无符号数2、数据位置:数据段地址DS:3000H偏移地址(起始)1000H初始数据:第一个数00H偏移地址(起始)1000H总数90H个寄存器安排:AL:需存的数(第一个00H)SI:存入的地址(第一个1000H)3、本次实验用到了条件转移指令JNZ,JNZ全称jump if not zero,在本实验中当CL 结果不为零则转移L1循环。
4、操作指令分段执行操作G=起始地址停止地址;连续执行操作G=起始地5、实现原理框图:(经实验指导老师签字认可的原始数据记录纸或添加页粘贴处)五、实验步骤(实验关键操作步骤,仪器、电路及器件选择使用,原程序及关键指令注释等)1、编写循环程序DATAS SEGMENT MOV DS,AXDATAS ENDS MOV CL,90HSTACKS SEGMENT L1:MOV[SI],ALSTACKS ENDS INC SICODES SEGMENT INC ALASSUME CS:CODES,DS:DATAS,SS:STACKS DEC CLSTART:JNZ L1MOV AL,00H INT3HMOV SI,1000H CODES ENDSMOV AX,3000H END START2、单步执行调试使用DEBUG,将执行文件调入内存;—U检查程序;—R检查、设置所需寄存器;—T从程序的第一条指令开始,单步执行每执行一条指令,检查并记录要求的数据;连续执行20个单步3、用分段执行方式调试程序重新使用DEBUG,将执行文件调入内存;—U检查程序;—R检查、设置所需寄存器;执行第1次循环:G停止地址(判断CL=0指令的偏移地址);从程序第1条指令开始(含初始化指令)到循环体的最后一条指令处停止;检查、记录指定的寄存器内容执行第2次循环:—T先执行一个单步;第一次循环未执行判断指令(—T,执行判断);CL不为零,转移到前面,循环存入第二个数;—G停止地址(判断CL=0指令的偏移地址)(执行第2次循环,不包含初始化指令)检查、记录指定寄存器内容执行第3次循环:同第2次循环的操作共执行10次循环;每次都需检查、记录指定寄存器内容4、连续执行(将所有循环执行完毕)—G=0000从程序的第1条指令开始执行,遇INT3H停止检查存放数据的区域(31000H开始的90H个单元)D3000:10001090记录数据六、实验数据(测量数据波形曲线或数据列表,标明单位及测量数据的有效位数)单步执行检查记录表分步执行检查记录表连续执行数据记录七、实验数据分析(对实验结果的评价,误差分析,出现故障原因及排除方法,回答思考题等)数据分析:1、在单步执行检查中,AL,CL,SI,IP的数据与理论结果一致,没有出现错误。
微机原理及应用实验报告

3•掌握各种寻址方法以及简单指令的执行过程。
二、实验要求
1实验前要作好充分准备,包括汇编程序清单、调试步骤、调试方法以及对程序结果的分 析等。
2•本实验要求在PC机上进行。
3•本实验只要求在DEBUC调试状态下进行,包括汇编程序,调试程序,执行程序。
4•熟悉建立源文件,进行汇编和连接的全过程,并对程序进行调试。
二、实验要求
1•实验前准备
1分析题目,将程序中的原始数据、中间结果和最终结果的存取方式确定好。
2写出算法或画出流程图。
3写出源程序。
4对程序中的结果进行分析,并准备好上机调试的过程。
2•本实验要求在PC机上进行。
3•汇编过程中出现问题,可用DEBU(进行调试。
xorax,ax pushax movax,data movds,ax leasi,data1 leadi,data2 leabx,data3 moval,[si+3] movah,[di+3] an dal,0fh an dah,0fh addal,ah oral,30h mov[bx+3],al moval,[si+2] movah,[di+2] an dal,0fh an dah,0fh adcal,ah oral,30h mov[bx+2],al moval,[si+1] movah,[di+1] an dal,0fh an dah,0fh adcal,ah oral,30h mov[bx+1],al moval,[si] movah,[di] an dal,0fh an dah,0fh adcal,ah
;exercize21
汇编语言-实验二 循环与子程序程序设计

实验二循环与子程序程序设计一、实验目的1) 加深对循环结构的理解。
2)掌握循环程序的设计方法。
3)学习子程序的定义和调用方法。
4)掌握子程序、子程序的嵌套、递归子程序的结构。
5) 掌握子程序设计、编制及调试。
6) 熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
二、实验内容1) 编制程序计算S=1+2·3+3·4+4·5+……+N(N+1)+……直到N(N+1)大于200为止,并将结果由屏幕上显示出来。
2)将从3000H内存单元开始的100个字节存储单元全部清0。
3)编制在屏幕上显示九九乘法表的程序。
4)编制在屏幕上显示用*组成的三角形的程序。
5)设有五个字数据存放在以BUF为首地址的内存单元中,要求采用调用多个字数据相加的子程序方法编程,和的低位字放在RESULT单元,和的高位字放在RESULT+2单元,并将结果显示在屏幕上。
6)编写一个递归子程序,计算指数函数X n的值,其中X,n从键盘输入。
三、源程序EXAM2-1DA TA SEGMENTBUF DB’S=1+2×3+3×4+4×5+…+N(N+1)+…=’,’$’RES DW 4 DUP(0),’$’DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DA TAMOV DS,AXMOV DX, OFFSET BUFMOV AH,09HINT 21HMOV DX, 1MOV BL, 2NEXT:MOV AL,BLINC BLMUL BLADD DX,AXCMP AX,200JNA NEXTMOV CX,0004HMOV DI,OFFSET RESADD DI,03HNEXT1:MOV AX, DXAND AX, 000FHCMP AL,0AHJB NEXT2ADD AL,07NEXT2:ADD AL, 30HMOV [DI],ALDEC DIPUSH CXMOV CL,04SHR DX,CLPOP CXLOOP NEXT1MOV DX,OFFSET RESMOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START执行程序EXAM2-1·EXE,屏幕上显示结果:S=1+2×3+3×4+4×5+...+N(N+1)+ (045)EXAM2-2ORG 2000H2000 BF0030 MOV DI, 30002003 B164 MOV CL, 642005 C60500 MOV BYTE PTR[DI],02008 47 INC DI2009 FEC9 DEC CL200B 75F8 JNZ 2005200D F4 HLTEXAM2-3DATA SEGMENTA TAD DB ?, 2AH, ?, 3DH, ?, ?, 20H, '$'A TAD1 DB ?, 2AH, ?, 3DH, ?, ?, 0DH, 0AH, '$' DA TA ENDSSTACK SEGMENT STACKDB 20H DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE, DS:DA TASTART:MOV AX, DA TAMOV DS, AXMOV CL, 09HMOV BL, 00HOKL:MOV AL, 00HINC BLOK1:INC ALPUSH AXCMP BL, ALJZ OKMOV BH, ALMUL BLMOV DI, OFFSET ATADCALL OKPPOP AXJMP OK1OK:MOV BH, ALMUL BLMOV DI, OFFSET ATAD1CALL OKPPOP AXLOOP OKLMOV AH, 4CHINT 21HOKP PROCPUSH AXPUSH BXPUSH CXADD BX, 3030HMOV [DI], BHMOV [DI + 02H], BLMOV CX, 0AHMOV DH, 00HOKL2:CMP AX, CXJS OK2ADD CX, 0AHINC DHJMP OKL2OK2:SUB CX, 0AHSUB AX, CXMOV AH, DHADD AX, 3030HMOV [DI + 04H], AHMOV [DI + 05H], ALMOV DX, DIMOV AH, 09HINT 21HPOP CXPOP BXPOP AXRETOKP ENDPCODE ENDSEND START执行程序EXAM2-2·EXE,屏幕上显示结果:1*1=011*2=02 2*2=041*3=03 2*3=06 3*3=091*4=04 2*4=08 3*4=12 4*4=161*5=05 2*5=10 3*5=15 4*5=20 5*5=251*6=06 2*6=12 3*6=18 4*6=24 5*6=30 6*6=361*7=07 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=491*8=08 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=641*9=09 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81EXAM2-4CODES SEGMENTASSUME CS:CODESSTART:XOR BX,BXMOV DL,2AHMOV CX,9LOP: PUSH CXINC BLMOV CL,BLMOV DL,2AHLOP2: MOV AH,02HINT 21HLOOP LOP2POP CXMOV DL,0AHMOV AH,02HINT 21HMOV DL,0DHMOV AH,02HINT 21HCMP BL,9JZ ENDPROLOOP LOPENDPRO:MOV AH,4CHINT 21HCODES ENDSEND START执行程序EXAM2-4·EXE,屏幕上显示结果:*********************************************EXAM2-5STACK SEGMENT STACKDB 1024 DUP(0)STACK ENDSDA TA SEGMENTBUF DW 0F101H,110DH,52H,100H,456H COUNT =($-BUF)/2RESULT DW 4 DUP(?),'$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,SS:STACK WDADD PROCPUSH DIMOV AX, 0MOV DX, 0MOV DI, OFFSET BUFNEXT2: ADD AX, [DI]JNC NEXT1INC DXNEXT1: ADD DI, 2LOOP NEXT2POP DIRETWDADD ENDPSHOW PROCPUSH CXPUSH DIMOV CX, 04HMOV DI, OFFSET RESULTMOV BX, AXADD DI, 07HBBB: MOV AX, BXAND AX, 000FHCMP AL, 0AHJB QQQADD AL, 07HQQQ: ADD AL, 30HMOV [DI], ALDEC DIPUSH CXMOV CL, 04SHR BX, CLPOP CXLOOP BBBMOV CX, 0004HCCC: MOV AX, DXAND AX, 000FHCMP AL, 0AHJB DDDADD AL, 07HDDD: ADD AL, 30HMOV [DI], ALDEC DIPUSH CXMOV CL, 04HSHR DX, CLPOP CXLOOP CCCPOP DIPOP CXRETSHOW ENDPBEGIN: MOV AX, DATAMOV DS, AXMOV CX, COUNTCALL WDADDCALL SHOWMOV DX, OFFSET RESULTMOV AH, 09HINT 21HMOV AH, 4CHINT 21HCODE ENDSEND BEGIN执行程序EXAM2-5·EXE,屏幕上显示结果:000107B6。
四川大学微机原理实验报告

《微机原理及接口技术实验报告》学院:电气信息学院班级: 109班老师:罗江陶学号: 1143031270姓名:实验一汇编语言程序的上机步骤一、实验目的:1、了解汇编语言程序的执行流程。
2、熟悉和使用DEBUG调试工具,分析和读懂一些及硬件相关的小程序。
3、通过对程序的分析,理解计算机程序的执行过程。
4、了解并逐步熟悉汇编语言的编辑方法及特点.5、复习8086汇编语言的段结构、常用的指令及伪指令、存储空间的分配等。
6、掌握汇编语言的编辑、汇编及连接的过程。
7、了解并逐步掌握运用DEBUG进行调试汇编语言程序二、实验内容:以文件名为1.asm源程的序为例,学习汇编语言的上机步骤。
汇编语言程序MASM软件由编辑器,汇编MASM.EXE程序,连接LINK.EXE程序以及DUEBUG.EXE调试程序四个部分组成。
汇编语言编制完成后,在计算机上的操作过程就分为四个阶段。
1. 编辑:首先输入源程序:在记事本里录入,注意在保存时文件格式必须选择所有文件,文件后缀名为.ASM, 即保存时文件名为XXX.asm。
2.用汇编程序MASM.Exe对源程序.ASM文件汇编,生成目标文件.OBJ:双击MASM软件中的MASM.Exe文件框,在命令行后键入源程序名XXX.asm,(如果源程序及MASM软件在同一路径下,可以只键入文件名,而不要后缀)3.连接LINK.EXE双击MASM软件中的LINK.Exe文件框,在命令行后键入目标文件名XXX.OBJ(如果源程序,目标文件及MASM软件在同一路径下,可以只键入文件名,而不要后缀)如果连接没有错误,就会产生一个XXX.EXE的可执行文件,如果.OBJ文件有错误,连接时会指出错误的原因。
4.运行和调试DEBUG.exe运行可执行文件,即双击XXX.EXE文件框即可,或在DOS下运行此程序,E:\XXX.EXE。
三、程序流程图:四、程序清单及注释:DATA SEGMENTNUM1 DB 35,35HNUM2 DW 35,35HNUM3 DB 4 DUP (34,3 DUP (34H))NUM4 DB '34AB'NUM5 DW '34','AB'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV BX,OFFSET NUM1MOV AL,[BX]MOV BX,OFFSET NUM5MOV AX,[BX]MOV AH,4CHINT 21HCODE ENDSEND START五、运行结果:将以上程序在笔记本中保存为xueyuan1.ASM 编译后显示编译成功:运行结果如下:运行可执行文件出现此界面后“闪退”六、实验心得:通过本次实验,我了解了一个汇编程序在计算机上的执行步骤,如何实现一个汇编程序的编辑、连接、运行。
实验二 循环程序设计

实验二循环程序设计一、实验目的1) 加深对循环结构的理解。
2) 掌握循环程序的设计方法。
二、实验内容将从3000H内存单元开始的100个字节存储单元全部清0。
要求:先在在DEBUG调试状态下进行,然后在dos下进行masm和link进行。
过程包括汇编程序、运行程序、检查结果。
三、实验设备PC机一台四、实验步骤1) 输入源程序并检查无误。
2) 对内存单元3000H开始的100个存储单元用E命令输入任意数。
3) 程序用DEBUG的T命令单步跟踪执行。
4) 程序用DEBUG的G命令执行。
5) 用D命令检查执行结果。
6) 用宏汇编格式写源程序。
7) 对源程序进行编译、连接、运行。
五、实验报告的要求1) 列出源程序。
2) 对程序中用到的寄存器说明其功能。
1、数据寄存器数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。
32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。
对低16位数据的存取,不会影响高16位的数据。
这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。
4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL 、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。
程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。
寄存器AX和AL通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。
累加器可用于乘、除、输入/输出等操作,它们的使用频率很高;寄存器BX称为基地址寄存器(Base Register)。
它可作为存储器指针来使用;寄存器CX称为计数寄存器(Count Register)。
在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数;寄存器DX称为数据寄存器(Data Register)。
循环操作实验报告

一、实验目的1. 理解循环操作的概念及其在编程中的应用。
2. 掌握不同类型循环语句(如for、while、do-while)的使用方法。
3. 学会循环操作中的跳转语句(如break、continue)的使用。
4. 通过实际操作,加深对循环操作的理解和应用。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 编译器:PyCharm三、实验内容1. 循环操作的基本概念及类型2. for循环3. while循环4. do-while循环(Python中无此循环,以while循环为例)5. 循环中的跳转语句6. 循环嵌套四、实验步骤1. 循环操作的基本概念及类型(1)在编程中,循环操作是指重复执行一组语句,直到满足某个条件为止。
(2)循环操作分为三类:for循环、while循环和do-while循环。
2. for循环(1)for循环用于遍历一个序列(如列表、元组、字符串等)或迭代器。
(2)语法格式:for 变量 in 序列: 语句(3)实验代码:```for i in range(1, 6):print(i)```3. while循环(1)while循环用于当满足某个条件时,重复执行一组语句。
(2)语法格式:while 条件表达式: 语句(3)实验代码:```i = 1while i < 6:print(i)i += 1```4. do-while循环(Python中无此循环,以while循环为例)(1)do-while循环用于至少执行一次循环体,然后根据条件表达式判断是否继续执行。
(2)语法格式:do 语句 while 条件表达式(3)实验代码:```i = 1while True:print(i)i += 1if i >= 6:break```5. 循环中的跳转语句(1)break语句用于立即退出循环。
(2)continue语句用于跳过当前循环的剩余部分,并继续执行下一次循环。
汇编语言程序设计实验报告二分支循环程序实验

、实验目的、实验内容1、 编写一程序,将内存中某一区域的数据传送到另一个区域中 (要求用循结构,不考虑数据块重叠问题 ) 。
2、 编写一程序,将内存中某一区域的数据传送到另一区域 ( 要求考虑数据块 重叠问题)。
实验准备用QE 或其它编辑软件,在计算机上编辑源程序,使其正确无误。
进入DEBUG 打入DEBUGT MYPROG.EXMYPRC 为所编程序的文件名。
(2) 先用G 命令连续剧连续执行程序,程序执行完毕后,观察运行结果。
如果 汇编语言程序设计实验报告( 分支循环程序实验 )1、 掌握分支程序、循环程序的设计方法。
2、 熟悉DEBU®序的使用方法。
3、 掌握汇编语言程序的编辑、汇编、连接以及调试过程。
1、 预习数据传送指令,熟悉分支和循环程序设计方法。
2、 预习DEBUG 调试程序的使用方法。
3、 根据实验内容要求,编写好实验源程序。
四、实验步骤 1、 2、 汇编、连接源程序,产生.EXE 可执行文件。
3、 运行程序。
(1)执行后是对的,说明程序编写是正确的,如果结果不对,说明程序有错误, 则执行下一步。
(3) 检查程序。
在程序中设置若干断点,以便杳出错误所在。
(4) 采用单步命令 T 或执行程序,观察各寄存器和存储单元内容,以便找到错 误之处。
总结实现数据传送的几种方法,指出它们的区别。
开始说明本实验中是如何使用 DEBU 进行调试的。
CX 、SI 、DI 置初值六、流 程图勤开始 设置增量方式CX 、 SI 、 DI 置初值 保存 SI 内容AL [SI] SI SI+ 源块长度[DI] AL N SI>DISI SI+1 恢复 SI 内容 恢复 SI 内容DI DI+1CX CX-1 设置减量方式N CX=0, SI 指向源块末尾DI 指向目的块末尾结束 [DI] [SI]题一流程图 N 传完了吗, 书馆 Y五、 实验报告要求1、 列出程序清单,并给出程序流程图。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理实验
实验二编程实现循环程序
编程实现:自行定义某班30个学生的某课程成绩(0~100分之间),要求:
统计>=90分、80~89分、70~79分、60~69分、60分以下的人数,结果转为ASCII码显示出来(要求有分数段字符串提示,并每个分数段一行显示)。
结果举例:
>=90:3
80-89:4
70-79:11
60-69:10
<60:2
实验流程图:
程序:
stack segment stack 'stack'
dw 100H dup(0)
stack ends
data segment
BUF DW 62,73,32,74,66,54,71,65,97,98
DW 75,82,81,59,92,85,88,66,61,89
DW 63,98,88,43,39,96,66,45,12,20
COUNT EQU $-BUF ;COUNT的值为BUF所占的字节数STR1 DB '<60:','$'
STR2 DB '60-69:','$'
STR3 DB '70-79:','$'
STR4 DB '80-89:','$'
STR5 DB '>90:','$'
RES DW 30 DUP(?) ;在存储区RES中设置30个初值为0的数据data ends
code segment
begin proc far
assume ss:stack,cs:code,ds:data
push ds
sub ax, ax
push ax
mov ax, data
mov ds, ax
START: MOV CX,COUNT/2+1 ;设计数器初值
MOV DI,OFFSET RES ;取RES的首址
MOV SI,OFFSET BUF-2 ;取BUF的首址
LURY: INC SI
INC SI ;修改SI指针
DEC CX ;设循环次数CX
JZ OUTPUT ;循环结束,则转OUTPUT
MOV AX,[SI] ;取BUF中第一个数放到AX寄存器
CMP AX,60 ;将AX中数据和60进行比较
JB LOP1 ;小于60,则转LOP1
CMP AX,70 ;否则,继续与70进行比较
JB LOP2 ;小于70,则转LOP2
CMP AX,80 ;否则,继续与80进行比较
JB LOP3 ;小于80,则转LOP3
CMP AX,90 ;否则,继续与90进行比较
JB LOP4 ;小于90,则转LOP4
CMP AX,100 ;否则,继续与100进行比较
JB LOP5 ;小于100,则转LOP5
LOP1: MOV BX,[DI]
INC BX
MOV [DI],BX ;对小与60的数据计数,并把其放在RES的第一个字节中JMP LURY ;转到LURY
LOP2: MOV BX,[DI+2]
INC BX
MOV [DI+2],BX ;对60-69的数据计数,并把其放在RES的第二个字节中JMP LURY ;转到LURY
LOP3: MOV BX,[DI+4]
INC BX
MOV [DI+4],BX ;对70-79的数据计数,并把其放在RES的第三个字节中
JMP LURY ;转到LURY
LOP4: MOV BX,[DI+6]
INC BX
MOV [DI+6],BX ;对80-89的数据计数,并把其放在RES的第四个字节中
JMP LURY ;转到LURY
LOP5: MOV BX,[DI+8]
INC BX
MOV [DI+8],BX ;对90-99的数据计数,并把其放在RES的第五个字节中
JMP LURY ;转到LURY
OUTPUT: LEA DX,STR1 ;取字符串STR1的首址
MOV AH,9
INT 21H ;输出字符串STR1
CALL DATCH
LEA DX,STR2 ;取字符串STR2的首址
MOV AH,9
INT 21H ;输出字符串STR2
ADD DI,2
CALL DATCH
LEA DX,STR3 ;取字符串STR3的首址
MOV AH,9
INT 21H ;输出字符串STR3
ADD DI,2
CALL DATCH
LEA DX,STR4 ;取字符串STR4的首址
MOV AH,9
INT 21H ;输出字符串STR4
ADD DI,2
CALL DATCH
LEA DX,STR5 ;取字符串STR5的首址
MOV AH,9
INT 21H ;输出字符串STR5
ADD DI,2
CALL DATCH
MOV AH,1
INT 21H
MOV AH,4CH
INT 21H ;返回DOS
datch proc ;数值转换为ASCII码的子程序PUSH DX
PUSH CX
PUSH BX
PUSH AX
XOR DX,DX
MOV AX,[DI]
MOV CX,10
DIV CX
MOV BX,DX
MOV DL,AL
ADD DL,30H
MOV AH,2
INT 21H
MOV DL,BL
ADD DL,30H
MOV AH,2
INT 21H
MOV DL,0AH
MOV AH,2
INT 21H
MOV DL,0DH
MOV AH,2
INT 21H
POP AX
POP BX
POP CX
POP DX
ret
datch endp
begin endp
code ends
end begin
实验记录:
实验总结:
开始面对循环程序汇编感到很迷茫,在循环程序语言上出现了很多错误,导致运行不了,后来根据运行提示的错误,一步一步改正,慢慢步入正轨,通过这次实验,使我深入了解了“编程实现循环程序”这次
微机实验,提高了分析和解决问题的能力,明白了子程序的一些运用。