预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验二编程实现循环程序 一、实验目的: 1、进一步熟悉汇编语言的分支、循环程序设计的思路和方法; 2、掌握各类子程序的设计方思路和技巧; 3、学习使用EMU8086进行汇编程序设计; 4、学习在WIN764位上运行汇编程序的编译、连接和运行; 5、学习用软件DOSBOX模拟DOS。 二、实验要求: 1、自行定义某班30个学生的某课程成绩(0~100分之间); 2、统计>=90分、80~89分、70~79分、60~69分、60分以下的人数; 3、将结果转为ASCII码显示出来; 4、要求有分数段字符串提示,并每个分数段一行显示。 三、实验流程图: 四、实验过程: 1、在EMU8086上编写程序,编写完程序的格式保存为.ASM, 再保存到D:\TRY文件夹里; 2、打开软件DOSBOX0.74,可以看到Z:\>,这是DOSBOX里的虚拟盘,我们采用mount命令将其转变到自己的D盘; 如:mountd:d:\try为打开D盘里的try文件夹,try文件夹作为汇编程序的存放位置; 3、键入D:,转换盘符; 4、键入MASM,再输入汇编程序名(.asm文件):SY2 5、键入LINK,再输入编译程序名(.obj文件):SY2 6、键入SY2.EXE,运行文件 四、实验结果: 五、实验收获: 通过此次试验,使我学习在WIN764位的系统环境下,使用软件DOSBOX对汇编程序进行编译、连接和运行。从而解决了在WIN764位下不能进行上述操作的问题,减低了初学者学习汇编的障碍。 同时,试验也使我更一步掌握了利用系统功能调用的“INT21H”进行字符的输入、字符串的显示方法,加强了对分支、循环程序设计的理解和应用。同时,也练习了在软件Emu8086下进行汇编程序的编写、调试和运行的步骤和方法。 六、实验程序: STACKSEGMENTPARASTACK'stack' DW100HDUP(0);初始化堆栈大小为100 STACKENDS DATASEGMENT BUFDW98,96,95,88,87,85,83,82,80,80 DW77,77,76,74,73,72,71,70,70,68 DW66,65,63,62,61,60,59,58,55,53 COUNTEQU$-BUF;COUNT的值为BUF所占的字节数 L1DB'[<60]:','$' L2DB'[60-69]:','$' L3DB'[70-79]:','$' L4DB'[80-89]:','$' L5DB'[>=90]:','$' RESDW20DUP(?);在存储区RES中设置15个初值为0的数据 DATAENDS CODESEGMENT MAINPROCFAR ;主程序入口 ASSUMESS:STACK,CS:CODE,DS:DATA PUSHDS SUBAX,AX PUSHAX MOVAX,DATA MOVDS,AX ;/***************************************/ ;/*****************************/ ;/*******************/ ;/*********/ ;/*/ START:MOVCX,COUNT/2+1;设计数器初值 MOVDI,OFFSETRES;取RES的首址 MOVSI,OFFSETBUF-2;取BUF的首址 BEGIN:INCSI INCSI;修改SI指针 DECCX;设循环次数CX JZOUTPUT;循环结束,则转OUTPUT MOVAX,[SI];取BUF中第一个数放到AX寄存器 CMPAX,60;将AX中数据和60进行比较 JBLOP1;小于60,则转LOP1 CMPAX,70;否则,继续与70进行比较 JBLOP2;小于70,则转LOP2 CMPAX,80;否则,继续与80进行比较 JBLOP3;小于80,则转LOP3 CMPAX,90;否则,继续与90进行比较 JBLOP4;小于90,则转LOP4 JMPLOP5 LOP1:MOVBX,[DI] INCBX MOV[DI],BX;对小于60的数据计数,并把其放在RES的第一个字节中 JMPBEGIN;转到BEGIN LOP2:MOVBX,[DI+2] INCBX MOV[DI+2],BX;对60-69的数据计数,并把其放在RES的第二个字节中 JMPBEGIN;转到BEGIN LOP3:MOVBX,[DI+4] INCBX MOV[DI+4],BX;对70-79的数据计数,并把其放在RES的第三个字节中 JMPBEGIN;转到BEGIN LOP4:MOVBX,[DI+6] INCBX MOV[DI+6],BX;对80-89的数据计数,并把其放在RES的第四个字节中