北邮微机原理软件实验报告

合集下载

北京邮电大学 微机原理软件实验2

北京邮电大学 微机原理软件实验2

北京邮电大学微机原理软件实验·第二次实验目录题目一: (2)一、实验目的 (2)二、实验内容 (2)三、设计思路 (2)四、源程序 (3)五、实验结果(反色) (4)题目二: (5)一、实验目的 (5)二、实验内容 (5)三、设计思路 (5)四、源程序 (7)五、程序运行结果(反色) (9)题目三: (10)一、实验目的 (10)二、实验内容 (10)三、设计思路 (10)四、源程序 (11)五、程序运行结果(反色) (14)实验总结: (14)题目一:一、实验目的1、开始独立进行汇编语言程序设计,熟悉debug使用;2、掌握基本分支(如cmp,jmp,jne等),循环程序设计(如loop);3、掌握最简单的DOS 功能调用,如int 21h。

二、实验内容编一程序,在显示器上显示256个ASCII代码,要求显示格式为每行显示16个字符,两个ASCII字符间空一格三、设计思路2、可能使用到的函数①传送指令格式:MOV DEST,SRC功能:把一个字节,字或双字从源操作数SRC传送至目的操作数DEST。

②加1减1指令格式:INC DESTDEC DEST功能:INC指令将目的操作数加1,结果送目的操作数。

DEC指令将目的操作数减1,结果送目的操作数。

目的操作数为通用寄存器或存储器操作数。

③无条件转移指令格式:JMP TARGET功能:使程序无条件地转移到指令规定的目的地址TARGET去执行指令。

转移分为短转移、段内转移(近程转移)和段间转移(远程转移)。

④条件转移指令该类指令是根据上一条指令对标志寄存器中标志位的影响来决定程序执行的流程,若满足指令规定的条件,则程序转移;否则程序顺序执行。

⑤输出单字符这是2号系统功能调用,其使用格式为:MOV DL,‘A’MOV AH,2INT 21H执行2号系统功能调用,将置入DL寄存器中的字符(以ASCII码形式表示)通过显示器显示出来(或从打印机输出)。

北京邮电大学微机原理软件实验报告

北京邮电大学微机原理软件实验报告

北京邮电大学微机原理软件实验报告信息与通信工程学院微机原理软件实验报告班级:姓名:学号:班内序号:时间:微机原理软件实验·报告实验一DEBUG 的使用一、实验目的1.掌握汇编程序的编辑,编译,连接和执行的全过程;2.学习和掌握用DEBUG 调试程序的方法。

二、实验内容1. 用编辑软件,输入以下汇编语言源程序:DAT SEGMENTA DB 20 ;(自定)B DB 15 ;(自定)Y DB 3 DUP (0)Z DB 0, 0DAT ENDSSTA SEGMENT STACKDW 50 DUP (?)STA ENDSCOD SEGMENTASSUME CS: COD, DS: DATSTAR PROC FARPUSH DSXOR AX, AXPUSH AXMOV AX, DATMOV DS, AXMOV AX, STAMOV SS, AXMOV AL, AMOV Z, ALMOV Z+1, ALCALL SUB1MOV AL,B微机原理软件实验·报告MOV Z,ALMOV Z+1,ALCALL SUB1MOV AL,AMOV Z,ALMOV AL,BMOV Z+1,ALCALL SUB1ADD WORD PTR Y,AXADC BYTE PTR[Y+2],0RETSTAR ENDPSUB1 PROCMOV AL, ZMOV AH, Z+1MUL AHADD WORD PTR Y, AXADC BYTE PTR[Y+2], 0RETSUB1 ENDPCOD ENDSEND STAR2. 通过编译,连接形成可执行文件。

3. 用DEBUG 将可执行文件调入,并进行调试。

1) 用D 命令观察数据区在内存中的具体内容,记录单元A 和B 的具体地址。

2) 用U 命令对目标代码反汇编,观察反汇编后的结果。

注意发现源程序的起始位置,并记录这个起始地址。

3) 用T 命令作单步跟踪调试。

比较每条指令执行后的结果和原来的理解是否一致,得出程序运行的结果:它们是写在什么单元,具体内容是什么;并判断结果是否正确。

北邮微机原理硬件实验报告

北邮微机原理硬件实验报告

北邮微机原理硬件实验报告实验目的本次实验主要是通过对微机原理的学习,掌握多种硬件器件的基本使用,包括程序寄存器(PRG)、数据寄存器(DR)、累加器(AC)等,也希望能够初步了解微机系统的结构和工作原理。

实验内容1. 按以下程序编写汇编程序ORG 0HLOOP: MOV A,NUMADD BINC R5MOV MEM,R5SJMP LOOPENDNUM: DB 50HB: DB 35HR5: EQU 25HMEM: DS 1编写程序后,运行该程序,观察程序在8051微处理器上执行的情况。

2. 制作简易流水灯电路使用LED等元器件,制作一个简单的流水灯电路。

同时,编写相应的汇编程序,实现流水灯的基本效果。

3. 实现双向流水灯效果在完成流水灯电路的基础上,通过改变程序实现双向流水灯的效果。

在这个过程中,需要仔细分析程序的实现方式,并且结合8615芯片的具体情况,理解程序在底层机器中的工作方式。

4. 实现用数码管显示数字的功能使用7段数码管,将程序输出的结果显示在数码管上。

在这个过程中,我们需要灵活处理I/O端口和存储器的读写,以及处理各类中断信号。

实验过程1. 编写并调试汇编程序我们首先使用Keil软件编写了相应的汇编程序,并在8051单片机上运行。

在运行过程中发现,程序能够成功地对NUM与B进行加法运算,并将结果存储在MEM中。

2. 制作流水灯电路我们使用LED、电阻等元器件,制作了一个简单的流水灯电路,并测试了该电路的基本工作情况。

由于电路较为简单,因此没有出现特别明显的问题。

3. 实现双向流水灯效果为了实现双向流水灯效果,我们对程序进行了修改。

在这个过程中,初步出现了一些问题,包括倒计时初始值不正确、程序中断启动终止不及时等。

经过反复调试,我们成功地实现了这一功能。

4. 实现用数码管显示数字的功能最后,我们将流水灯程序变更为用数码管显示数字的程序。

在这个过程中,我们主要用到了表格查找和存储器读写等基本操作,成功将结果在数码管上显示。

北邮微机原理软件实验报告(精)

北邮微机原理软件实验报告(精)

北邮微机原理软件实验报告(精)微机原理软件实验报告实验二分支、循环程序设计一.实验目的1.启动独立的汇编语言编程。

2.掌握基本分支和循环编程。

3.掌握最简单的DOS函数调用。

二、实验内容1.安排一个数据区,内存有若干个正数,负数和零。

每类数的个数都不超过9。

2.编写一个程序统计数据区中正数,负数和零的个数。

3.将统计结果在屏幕上显示。

三.流程图IV源代码datasegmentzdw0;数据adw0中的零数;大于0 bdw0的数据数;数据中小于0的数量numdw9,8,0,-7,6,-5,-4,3,2,-1,0,-8,-1,9,0,0,1;设定的一组数据,其中4个0,7个正数,6个负数,符合题目要求NDW($-num/2);此组中的数据数量为类型0DB0DH,0ah,‘零的数量:$’类型1DB0DH,0ah,‘格雷特的数量:$'type2db0dh,0ah,'numberoflessthan0:$'locatedwtype0,type1,type2dataendsstacksegmentstackdw128dup(?stackendscodesegmentassumeds:data,ss:stack,cs:codestart:movax,datamovds,axmovax,stack莫夫斯,斧头;初始化DS和Ss以指向stamovbx,offsetnum;将num中第一个数字的地址送入bxmovcx,n;将n中数字个数送入cxloop1:movax[bx];取出num中的第一个数字cmpax,0;与零相比jzifz;判断结果为是0,跳转到ifz处继续执行salax,1jcifl;如果判断结果小于0,跳转到IFLincwordptra;否则,a自加,然后继续执行程序jmpcontinueifl:incwordptrb;B计数加上1jmpcontinueifz:incz;Z计数加1继续:addbx,2;指针+2,继续送入下一数字looploop1;循环cx次判断movcx,3;共显示3个字符串xorbx,bxdisp:movdx,定位[bx]movah,09h;dos09号功能调用,显示字符串int21hmovdx,z[bx]adddx,'0';转换为ASCII码movah,02h;dos02号功能调用,显示字符int21haddbx,2;指针+2(DW)loopdispmovax,4c00hint21h;返回dos系统codeendsendstart五.运行结果Vi预览问题1.十进制数0--9所对应的ascii码是什么?如何将十进制数0--9在屏幕上显示出来?。

推荐-北邮—微原软件实验报告 精品

推荐-北邮—微原软件实验报告 精品

微机原理软件实验报告学院:信息与通信工程学院班级:班内序号:姓名:学号:实验二分支,循环程序设计一.实验目的:1.开始独立进行汇编语言程序设计;2.掌握基本分支,循环程序设计;3.掌握最简单的DOS 功能调用.二.实验内容:1.安排一个数据区(数据段),内存有若干个正数,负数和零.每类数的个数都不超过9.2.编写一个程序统计数据区中正数,负数和零的个数.3.将统计结果在屏幕上显示.三.预习题:1.十进制数0 -- 9 所对应的ASCII 码是什么? 如何将十进制数0 -- 9 在屏幕上显示出来?答:0—9对应的ASCII 码是30H—39H;在屏幕上显示0—9,需要将对应字符的ASCII 码赋给DL,并进行DOS的2号功能调用,0—9的ASCII 码正是其本身的数值加上30H。

2.如何检验一个数为正,为负或为零? 你能举出多少种不同的方法?答:①用CMP命令和0比较,如果ZF为1,则该数为零;再用该数和8000H相与,取出符号位判断,可区分正负;②用CMP命令和0比较,结果不小于0时用JGE命令进行跳转,否则为负数;用JGE 命令跳转后,如果为0再用JZ命令跳转,否则为正数。

四.选作题:统计出正奇数,正偶数,负奇数,负偶数以及零的个数.五.实验过程1.流程图2.源代码DATA SEGMENTNUM DW 0,0,1,2,3,4,5,101,-6,-7,-8,-8,-9 ;有2个0,6 个正数,5 个负数N DW ($-NUM)/2 ;该组数据的个数Z DB 0 ;0 的个数P DB 0 ;正数的个数PO DB 0 ;正奇数的个数PE DB 0;正偶数的个数M DB 0 ;负数的个数MO DB 0;负奇数的个数ME DB 0 ;负偶数的个数STR0 DB 'number of zeros : $' ;STR0-4为用于显示的字符串STR1 DB 0DH, 0AH, 'number of positive numbers : $'STR2 DB 0DH, 0AH, 'number of negative numbers : $'STR3 DB 0DH, 0AH, ' odd : $'STR4 DB ' even : $'DATA ENDSSTACK SEGMENT STACKDW 100 DUP(?)STACK ENDSCODE SEGMENTASSUME DS:DATA, SS:STACK, CS:CODESTART: MOV AX, DATAMOV DS, AXMOV AX, STACKMOV SS, AX ;初始化DS、SSLEA BX, NUM ;将NUM 中第一个数字的地址送入BXMOV CX, N ;将数据个数送入CXAGAIN: MOV AX, [BX] ;取出NUM 中的第一个数字CMP AX, 0 ;和0比较JGE PLU ;大于等于0时转PLUINC M ;负数的个数加1TEST AX, 1 ;检测该数据最低位是否为1,即是否为负奇数JNZ MINODD ;ZF为0时转MINODD,该数为负奇数INC ME ;负偶数个数加1JMP NEXTMINODD: INC MO ;负奇数个数加1JMP NEXTPLU: JZ ZER ;等于0时转ZERINC P ;正数个数加1TEST AX, 1 ;检测该数据最低位是否为1,即是否为正奇数JNZ PLUODD ;ZF为0时转PLUODD,该数为正奇数INC PE ;正偶数个数加1JMP NEXTPLUODD: INC PO ;正奇数个数加1JMP NEXTZER: INC Z ;零的个数加1NEXT: ADD BX,2 ;偏移地址加2,指向下一数字LOOP AGAIN ;CX自减,CX≠0时继续循环DISPLAY: ;在屏幕上显示统计结果MOV AH, 09H ;9号功能调用,显示字符串MOV DX, OFFSET STR0 ;将字符串的首地址的偏移地址送到DX,DS已;是其段基址INT 21HMOV AH, 02H ;2号功能调用,显示单个字符MOV DL, Z ;将零的个数送到DLADD DL, 30H ;0—9数字本身加上30H即为其ASCII 码INT 21HMOV AH, 09H ;正数部分统计结果显示,原理同上MOV DX, OFFSET STR1INT 21HMOV AH, 02HMOV DL, PADD DL, 30HINT 21HMOV AH, 09HMOV DX, OFFSET STR3INT 21HMOV AH, 02HMOV DL, POADD DL, 30HINT 21HMOV AH, 09HMOV DX, OFFSET STR4INT 21HMOV AH, 02HMOV DL, PEADD DL, 30HINT 21HMOV AH, 09H ;负数部分统计结果显示,原理同上MOV DX, OFFSET STR2INT 21HMOV AH, 02HMOV DL, MADD DL, 30HINT 21HMOV AH, 09HMOV DX, OFFSET STR3INT 21HMOV AH, 02HMOV DL, MOADD DL, 30HINT 21HMOV AH, 09HMOV DX, OFFSET STR4INT 21HMOV AH, 02HMOV DL, MEADD DL, 30HINT 21HMOV AX, 4C00H ;返回DOSINT 21HCODE ENDSEND START3.运行结果数据为:0,0,1,2,3,4,5,101,-6,-7,-8,-8,-9运行结果:zero表示零的个数,为2;positive number表示正数的个数,为6,其中奇数odd为4个,偶数even为2个;negative number表示负数的个数,为5,其中奇数odd为2个,偶数even 为3个。

北京邮电大学微机原理软件

北京邮电大学微机原理软件

微机原理软件实验报告班级:姓名:学号:班内序号:指导老师:实验二分支、循环程序设计一、实验目的1.开始独立进行汇编语言程序设计;2.掌握基本分支,循环程序设计;3.掌握最简单的 DOS 功能调用.二、实验内容1.安排一个数据区,内存有若干个正数,负数和零.每类数的个数都不超过 9.2.编写一个程序统计数据区中正数,负数和零的个数.3.将统计结果在屏幕上显示.4.(选作)统计出正奇数,正偶数,负奇数,负偶数以及零的个数.三、实验设计四、源代码DATA SEGMENTARRAY DB -1,-2,-3,-4,-5,-6,0,1,2,3,5,4,5,6,0COUNT EQU $-ARRAYPOSI DB 0 ;正数NEGA DB 0 ;负数ZERO DB 0 ;零ODDPOS DB 0 ;正奇数EVENPOS DB 0 ;正偶数ODDNEG DB 0 ;负奇数EVENNEG DB 0 ;负偶数STRING1 DB '正数个数:','$' ;把最后的统计结果显示在屏幕上STRING2 DB '负数个数:','$' ;下同STRING3 DB '零的个数:','$'STRING4 DB '正奇数个数:','$'STRING5 DB '正偶数个数:','$'STRING6 DB '负奇数个数:','$'STRING7 DB '负偶数个数:','$'DATA ENDSSTACK SEGMENT STACK 'STACK'DB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATAMOV DS,AXMOV CX,COUNTLEA BX,ARRAY ;把数据段的偏移地址给BXLOOP1: CMP BYTE PTR [BX],0JGE POSINC NEGA ;统计负数TEST BYTE PTR [BX],01H ;利用奇数的二进制表示式最后一位必为1的特JZ ENEG ;点来判断奇偶INC ODDNEG ;统计负奇数JMP NEXTENEG: INC EVENNEG ;统计负偶数JMP NEXTPOS: JZ ZERINC POSI ;统计正数TEST BYTE PTR [BX],01HJZ EPOSINC ODDPOS ;统计正奇数JMP NEXTEPOS: INC EVENPOS ;统计正偶数JMP NEXTZER: INC ZERO ;统计零NEXT: INC BXLOOP LOOP1MOV AH,09H ;显示正数MOV DX,SEG STRING1MOV DS,DXLEA DX,STRING1INT 21HMOV AH,02HMOV DL,POSIADD DL,30HINT 21HMOV DL,0AH ;显示空格INT 21H ;显示回车MOV DL,0DHINT 21HMOV AH,09H ;显示负数MOV DX,SEG STRING2MOV DS,DXLEA DX,STRING2INT 21HMOV AH,02HMOV DL,NEGAADD DL,30HINT 21HMOV DL,0AHINT 21HMOV DL,0DHINT 21HMOV AH,09H ;显示零MOV DX,SEG STRING3MOV DS,DXLEA DX,STRING3INT 21HMOV AH,02HMOV DL,ZEROADD DL,30HINT 21HMOV DL,0AHINT 21HMOV DL,0DHINT 21HMOV DL,0AHINT 21HMOV DL,0DHINT 21HMOV AH,09H ;显示正奇数MOV DX,SEG STRING4MOV DS,DXLEA DX,STRING4INT 21HMOV AH,02HMOV DL,ODDPOSADD DL,30HINT 21HMOV DL,0AHINT 21HMOV DL,0DHINT 21HMOV AH,09H ;显示正偶数MOV DX,SEG STRING5MOV DS,DXLEA DX,STRING5INT 21HMOV AH,02HMOV DL,EVENPOSADD DL,30HINT 21HMOV DL,0AHINT 21HMOV DL,0DHINT 21HMOV AH,09H ;显示负奇数MOV DX,SEG STRING6MOV DS,DXLEA DX,STRING6INT 21HMOV AH,02HMOV DL,ODDNEGADD DL,30HINT 21HMOV DL,0AHINT 21HMOV DL,0DHINT 21HMOV AH,09H ;显示负偶数MOV DX,SEG STRING7MOV DS,DXLEA DX,STRING7INT 21HMOV AH,02HMOV DL,EVENNEGADD DL,30HINT 21HMOV DL,0AHINT 21HMOV DL,0DHINT 21HMOV AX,4C00HINT 21HCODE ENDSEND START五、程序运行结果六、预习题1.十进制数 0 -- 9 所对应的 ASCII 码是什么? 如何将十进制数 0 -- 9 在屏幕上显示出来?答:十进制数0—9对应的ASCII码是30H—31H。

北邮微机原理软件实验报告

北邮微机原理软件实验报告

实验一1.实验要求:编一程序,将地址偏移量为100H单元开始的256个单元分别写入00H,01H,……,FFH数据;统计写入的数据块的0元素、正元素、负元素的个数,并分别将统计结果送入上述数据块后的三个单元中;用DOS功能调用显示上面数据快各单元(包括统计结果)内容,要求每行显示16个数据,两个数据之间用空格隔开。

程序设计思路:分配256个单元存放数据00H,01H,……,FFH,3个单元存放统计结果。

约定:DH存放0的个数,BH存放负数的个数,BL存放正数的个数,然后进行将256个数据一一与0进行比较,得到 DH、BH、BL。

将DH、BH、BL 存入SI的最后三个单元。

最后在以高、低4位,依次将每个单元的数据输出。

2. 程序流程:4.子程序:DISP PROC NEAR ;Show number MOV DL,AL MOV AH,2 INT 21H RET DISP ENDP开始初始化;SI 前256个单元存放00 H……FFH;CX=256;DH=0;BX=0;CMP AL ,0;MOV AL ,[SI] CX=0?将DH ,BX 存入SI ;INC SI ;CX=259;YESINC DH ;INC BHINC BL显示高4位显示低4位; 添加空格; INC SI ;BH=0??BH=16;CX=0?SF=ELSZF=1N ONO YE SN O终止YE实验二1.实验要求:编一程序,把键入的十六进制数转换成十进制,要求:(1)在屏幕上显示转换的十进制数,键入的最大值为FFFFH;(2)若键入非16进制的数,则提示错误;(3)程序中至少用一个子程序和宏命令。

2.程序设计思路:首先判断键入的字符是否为合法的十六进制字符,若是十六进制,将其转化成二进制数值,放入BX中,然后接收下一个字符,并将上一个字符左移4位,再讲此时的BX与接收到的BX相加,直到键入回车,停止接收。

然后通过除以10000,依次将余数除以1000、100、10、1,将二进制转化为十进制,再显示出来。

北邮微机原理软件实验报告

北邮微机原理软件实验报告

北邮微机原理软件实验报告微机原理软件实验报告实验二分支,循环程序设计一、预习题:1.十进制数0 -- 9 所对应的ASCII 码是什么? 如何将十进制数0 -- 9 在屏幕上显示出来?答:要屏显0-9的数码,可以调用02h中断,然后将要显示的数码的ASCII码存进DL里,然后执行INT 21H就可以打印字符。

当然,若不只一个数,调用09h中断(显示字符串)更好,但要将DS:DXZ指向要显示的数字在内存中的首地址,并要求以$结束。

2.如何检验一个数为正,为负或为零? 你能举出多少种不同的方法?答:CMP X,0 检验标志位CFCF=1,X为负数CF=0接着检验ZF:ZF=1,X为零,ZF=0,X 为正数二、实验目的:1.开始独立进行汇编语言程序设计;2.掌握基本分支,循环程序设计;3.掌握最简单的DOS 功能调用.三、实验内容:1.安排一个数据区,内存有若干个正数,负数和零.每类数的个数都不超过9.2.编写一个程序统计数据区中正数,负数和零的个数.四、实验源代码assume cs:code,ds:datadata segmentbuff db 1,2,3,4,5,-1,-2,-3,0,0 ;安排的数据区string db '>0:'plus db 0;用变量plus来存储正数的个数db 0ah,0dhstring1 db '=0:'zero db 0 ;用变量zero来存储零的个数db 0ah,0dhstring2 db '<0:'minus db 0 ;用变量minus来存储负数的个数db '$'data endscode segmentstart:mov ax,datamov ds,axmov cx,10 ;初始化,并将CX赋为10,因为共有10个数mov dx,0 ;将计数器dx,ah初始化为0mov ah,0lea bx,buffcompare:cmp byte ptr [bx],0 ;取出一个数与0进行比较jge plu ;大于等于0,跳至plu执行inc ah ;小于0,用ah暂存小于0的个数,ah+1jmp next ;比完后进行下一个数的比较plu: je zer ;等于0,跳至zer执行inc dl ;大于0,用dl暂存大于0的个数,dl+1jmp next ;比完后进行下一个数的比较zer: inc dh ;等于0,用dh暂存等于0的个数,dh+1next: inc bxloop compare ;将dl,dh,ah分别赋值给变量plus,zero,minus,其ASCII分别加48add dl,48mov plus,dladd dh,48mov zero,dhadd ah,48mov minus,ahmov ah,09h ;调用09h中断,将最终结果输出lea dx,stringint 21hmov ax,4c00hint 21hcode endsend start五、流程图开始初始化,i=1,否cx=cx-1 cx是否等于0i = i+1实验截图六、实验总结及心得体会:这个实验有两个要点。

北邮软件实验报告

北邮软件实验报告

北邮软件实验报告北邮软件实验报告一、引言软件实验是计算机科学与技术专业的重要课程之一,旨在培养学生的软件开发能力和解决问题的能力。

本次实验是北邮软件实验的一部分,通过实践操作和理论学习,掌握软件开发的基本原理和技巧。

本报告将对实验过程进行整理和总结,以便更好地理解和应用所学知识。

二、实验背景本次实验的主题是软件开发,通过一个具体的项目,学生需要完成一个小型软件的设计、开发和测试。

这个项目涉及到数据库管理、用户界面设计和算法实现等多个方面的知识和技能。

通过实践操作,学生可以更好地理解软件开发的流程和方法,提高自己的编程能力和问题解决能力。

三、实验目标本次实验的目标是培养学生的软件开发能力和解决问题的能力。

通过实践操作,学生需要掌握以下技能:1. 熟悉软件开发的基本流程,包括需求分析、设计、编码、测试和维护等阶段;2. 掌握数据库管理的基本原理和技巧,能够设计和操作数据库;3. 理解用户界面设计的基本原则和方法,能够设计和实现用户友好的界面;4. 学会使用编程语言和工具进行软件开发,能够编写高质量的代码;5. 培养团队合作和沟通能力,能够与他人协作完成一个项目。

四、实验过程本次实验的实践操作包括以下几个步骤:1. 需求分析:根据实验要求和项目需求,分析用户需求,明确软件功能和性能要求;2. 设计:根据需求分析结果,设计软件的系统架构、数据库结构和用户界面;3. 编码:使用编程语言和工具,根据设计文档编写代码,实现软件功能;4. 测试:对编写的代码进行测试,确保软件功能正常运行,修复bug;5. 维护:根据用户反馈和需求变化,对软件进行维护和更新。

在实验过程中,我们遇到了一些问题和挑战。

例如,需求分析阶段需要与用户进行沟通和交流,确保理解用户需求的准确性;编码阶段需要仔细编写代码,避免出现错误和漏洞;测试阶段需要充分测试软件的各种功能,确保软件的质量和稳定性。

通过克服这些问题和挑战,我们逐渐掌握了软件开发的技巧和方法。

北京邮电大学实验报告实验三微机

北京邮电大学实验报告实验三微机

北京邮电大学实验报告题目:微机原理软件实验三班级: 2010211127专业:信息工程姓名:付莹学号:10210759实验五:中断实验1. 实验类设计型实验:编程实现时钟的显示。

2. 实验目的掌握计数器/定时器8253的工作原理和编程方法;掌握中断控制器8259的工作原理;掌握中断处理程序的编写。

3. 实验条件硬件条件:PC机一台。

软件条件:DOS操作系统;任意一种编辑程序,如EDIT;宏汇编程序MASM;连接程序LINK;调试程序DEBUG。

可借用该程序中的中断服务程序以及8253的初始化程序段(口地址为40H、41H、42H、43H,控制字为36H=00110110B,时间常数TC=11932:1.1932MHz/11932=100Hz,输出方波频率为100Hz,其周期为1000/100=10ms)。

4. 实验内容及步骤编一程序,在显示器上显示时、分、秒。

借用计数器8253的Timer0作为中断源,通过8259A向CPU发中断,每10ms产生一次中断。

在中断服务程序中管理刷新时、分、秒Current time is: xx:xx:xx (时分秒键盘输入)回车后时、分、秒开始计时,时钟不停的刷新。

当键入CTRL+C时,停止计时,返回系统,且系统正常运行不死机。

5. 实验报告(1)画出程序流程图。

开始等待回车键按下(08H 中断调用)取原8H 中断的中断矢量并压栈保护建立数据段的可寻址性 装载现在的中断服务程序8253初始化产生10ms 方波,10ms 中断一次重写IMR ,只开放时钟和键盘中断开中断监测键盘(06H 中断调用)是Ctrl+C ? 关中断 恢复IMR重置8253,,55ms 中断一次恢复原中断开中断返回DOS ,结束Yes有键按下?显示时间值(09H 中断调用)取消秒Yes 计数达到100次(1秒)?NoYesNoNo实现等待计时功能实现循环,秒值变化则返回继续执行程序显示“Current time is :” 读入键盘输入(2)提交调试好的汇编语言源程序(.asm)。

北邮 微机原理实验报告

北邮 微机原理实验报告

北邮微机原理实验报告一、实验目的本实验旨在通过对微机原理的实际操作,加深对计算机内部结构和工作原理的理解,并通过实验验证理论知识的正确性。

二、实验设备和材料•计算机硬件设备:PC机一台、示波器一台、数字信号发生器一台。

•软件工具:TASM、MASM汇编语言编译器。

三、实验内容本实验分为以下几个步骤:1. 准备工作•将PC机与示波器、数字信号发生器连接。

•打开PC机,进入实验环境。

2. 实验一:简单指令的执行•编写一个简单的汇编程序,实现两个数相加并将结果存储到指定寄存器中。

•使用TASM或MASM编译器对汇编程序进行编译,生成可执行文件。

•运行可执行文件,在示波器上观察到相加过程的波形。

3. 实验二:数据传输操作•编写一个汇编程序,实现数据在不同寄存器和内存之间的传输。

•编译并运行程序,通过观察PC机上的输出结果,验证数据传输的正确性。

4. 实验三:逻辑运算和移位操作•编写程序,实现逻辑运算和移位操作,并观察运算结果。

•通过数字信号发生器产生相应的输入信号,验证程序的正确性。

5. 实验四:中断处理•编写一个汇编程序,实现对中断请求的响应和处理。

•通过示波器观察中断请求和处理的波形,验证程序的正确性。

6. 实验五:串行通信操作•编写程序,实现串行通信的发送和接收操作。

•通过示波器观察串行通信的波形,验证程序的正确性。

四、实验结果和分析•对每个实验步骤进行记录,并详细分析实验结果。

•比较实验结果与理论预期是否一致,并给出原因分析。

五、实验心得通过本次实验,我深刻理解了微机原理的实际应用和操作过程。

通过实际操作,我对计算机内部结构和工作原理有了更深入的了解,并通过实验验证了理论知识的正确性。

同时,我也意识到在实际操作中的一些细节和注意事项,这对我今后的学习和工作都有很大的帮助。

六、实验总结通过本次实验,我不仅掌握了微机原理的实际应用技能,还深化了对计算机内部结构和工作原理的理解。

实验过程中,我遇到了一些问题,但通过思考和实践,逐步解决了这些问题,并取得了满意的实验结果。

【最新推荐】北邮微机原理软件实验报告-范文word版 (14页)

【最新推荐】北邮微机原理软件实验报告-范文word版 (14页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==北邮微机原理软件实验报告微机原理软件实验报告实验二分支,循环程序设计一、预习题:1.十进制数 0 -- 9 所对应的 ASCII 码是什么? 如何将十进制数 0 -- 9 在屏幕上显示出来?答:要屏显0-9的数码,可以调用02h中断,然后将要显示的数码的ASCII码存进DL里,然后执行INT 21H就可以打印字符。

当然,若不只一个数,调用09h中断(显示字符串)更好,但要将DS:DXZ指向要显示的数字在内存中的首地址,并要求以$结束。

2.如何检验一个数为正,为负或为零? 你能举出多少种不同的方法?答:CMP X,0 检验标志位CFCF=1,X为负数CF=0接着检验ZF:ZF=1,X为零,ZF=0,X为正数二、实验目的:1.开始独立进行汇编语言程序设计;2.掌握基本分支,循环程序设计;3.掌握最简单的 DOS 功能调用.三、实验内容:1.安排一个数据区,内存有若干个正数,负数和零.每类数的个数都不超过 9.2.编写一个程序统计数据区中正数,负数和零的个数.四、实验源代码assume cs:code,ds:datadata segmentbuff db 1,2,3,4,5,-1,-2,-3,0,0 ;安排的数据区string db '>0:'plus db 0db 0ah,0dhstring1 db '=0:'zero db 0db 0ah,0dhstring2 db '<0:'minus db 0db '$'data endscode segmentstart:movax,datamovds,axmov cx,10mov dx,0 mov ah,0 ;初始化,并将CX赋为10,因为共有10个数 ;用变量plus来存储正数的个数 ;用变量zero来存储零的个数 ;用变量minus来存储负数的个数 ;将计数器dx,ah初始化为0lea bx,buffcompare:cmp byte ptr [bx],0jgeplu inc ah jmp next ;取出一个数与0进行比较 ;大于等于0,跳至plu 执行 ;小于0,用ah暂存小于0的个数,ah+1 ;比完后进行下一个数的比较plu: je zer;等于0,跳至zer执行 inc dl jmp next zer: inc dh ;大于0,用dl暂存大于0的个数,dl+1 ;比完后进行下一个数的比较 ;等于0,用dh暂存等于0的个数,dh+1 ;将dl,dh,ah分别赋值给变量plus,zero,minus,其ASCII分别加next:incbx loop compare48add dl,48 movplus,dl add dh,48 movzero,dh add ah,48 movminus,ah mov ah,09h lea dx,string int 21h ;调用09h中断,将最终结果输出mov ax,4c00hint 21hcode ends否 end start实验截图六、实验总结及心得体会:这个实验有两个要点。

北邮微机原理实验报告

北邮微机原理实验报告

微机原理软件实验报告学院:信息与通信工程学院班级:2012211123班内序号:学生姓名:学号:实验二分支,循环程序设计一、实验目的1.开始独立进行汇编语言程序设计;2.掌握基本分支,循环程序设计;3.掌握最简单的DOS 功能调用.二、实验任务及内容1.安排一个数据区,内存有若干个正数,负数和零。

每类数的个数都不超过9。

2.编写一个程序统计数据区中正数,负数和零的个数。

3.将统计结果在屏幕上显示。

4.(扩展题)统计出正奇数、正偶数,负奇数、负偶数以及零的个数。

三、画出程序流程图Y四、给出源程序(要求加注释)data segmentbuff dw 1, 2, 0, 0 ,-1 ;数据段,初始化数据count equ $-buffplus db ? ;定义三种数的存储位置zero db ?minus db ?string1 db 'plus number:','$'string2 db 'zero number:','$'string3 db 'minus number:','$'data endsstack segment stack 'stack'db 100 dup(?)stack endscode segmentassume cs:code,ds:data,es:data,ss:stackbegin:mov ax,datamov ds,axmov cx,countshr cx,1mov dx,0mov ah,0lea bx,buffagain: cmp word ptr[bx],0 ;首先和0比较jge pluinc ah ;小于零MINUS+1jmp nextplu: jz zer ;判断是否等于零,等于零ZERO+1 inc dl ;不等于零PLUS+1jmp nextzer: inc dhnext: inc bx ;下一个数inc bxloop againadd dl,48mov plus,dladd dh,48mov zero,dhadd ah,48mov minus,ahshow:sub dx,dx ;显示模块mov dx,offset string1mov ax,0900h ;送显示指令int 21hmov dl,[plus]mov ax,0200hint 21hmov dl,0dhint 21hmov dl,0ahint 21hmov dx,offset string2mov ax,0900hint 21hmov dl,[zero]mov ax,0200hint 21hmov dl,0dhint 21hmov dl,0ahint 21hmov dx,offset string3mov ax,0900hint 21hmov ax,0200hmov dl,[minus]int 21hmov ax,4c00h ;结束程序int 21hcode endsend begin五、给出程序运行结果(运行结果抓屏保存)data segment 中存入1,2, 0, 0,-1显示有2个0、2个大于0的数、1个小于0的数,结果正确六、预习题1.十进制数0 -- 9 所对应的ASCII 码是什么? 如何将十进制数0 -9 在屏幕上显示出来? 答:对应的ASCII码是30H~39H,把0-9加上30H即可得到对应的ASCII,送给DL,再执行INT 21H即可显示。

北邮 微机原理实验报告

北邮 微机原理实验报告

北邮微机原理实验报告北邮微机原理实验报告引言:微机原理是计算机科学与技术专业的一门重要课程,通过学习和实践,我们可以深入了解计算机的组成结构和工作原理。

本次实验旨在通过对北邮微机原理实验的探索,加深对计算机硬件和软件的理解,并提升我们的实践能力。

一、实验目的本次实验的目的是熟悉计算机的硬件组成和工作原理,并通过实践操作加深对微机原理的理解。

具体包括以下几个方面:1. 熟悉计算机的硬件组成,包括中央处理器(CPU)、内存、硬盘等;2. 掌握计算机的启动过程和操作系统的加载;3. 理解计算机的指令集和指令执行过程;4. 学习计算机的输入输出设备和外部接口。

二、实验过程1. 实验一:计算机硬件的组装与连接在本实验中,我们需要将计算机的各个硬件组件进行正确的连接和组装。

首先,我们需要将主板与CPU、内存、显卡等硬件设备进行连接。

其次,我们需要将硬盘、光驱等存储设备与主板进行连接。

最后,我们需要将键盘、鼠标、显示器等外部设备与计算机进行连接。

通过这一步骤,我们可以了解计算机硬件的组成结构,并掌握正确的连接方式。

2. 实验二:计算机的启动过程和操作系统的加载在本实验中,我们需要了解计算机的启动过程和操作系统的加载过程。

首先,我们需要按下电源按钮,启动计算机。

然后,计算机会进行自检和硬件初始化,并加载操作系统。

在这个过程中,我们可以观察到计算机的启动画面和加载过程。

通过这一步骤,我们可以深入了解计算机的启动过程和操作系统的加载机制。

3. 实验三:计算机的指令集和指令执行过程在本实验中,我们需要学习计算机的指令集和指令执行过程。

首先,我们需要了解不同类型的指令,包括算术指令、逻辑指令、数据传输指令等。

然后,我们需要通过编写简单的汇编语言程序,来实现对数据的处理和操作。

在这个过程中,我们可以观察到指令的执行过程和结果。

通过这一步骤,我们可以深入理解计算机的指令集和指令执行过程。

4. 实验四:计算机的输入输出设备和外部接口在本实验中,我们需要学习计算机的输入输出设备和外部接口。

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

微机原理软件实验报告实验二分支,循环程序设计一、预习题:1.十进制数0 -- 9 所对应的ASCII 码是什么? 如何将十进制数0 -- 9 在屏幕上显示出来?答:要屏显0-9的数码,可以调用02h中断,然后将要显示的数码的ASCII码存进DL 里,然后执行INT 21H就可以打印字符。

当然,若不只一个数,调用09h中断(显示字符串)更好,但要将DS:DXZ指向要显示的数字在内存中的首地址,并要求以$结束。

2.如何检验一个数为正,为负或为零? 你能举出多少种不同的方法?答:CMP X,0 检验标志位CFCF=1,X为负数CF=0接着检验ZF:ZF=1,X为零,ZF=0,X为正数二、实验目的:1.开始独立进行汇编语言程序设计;2.掌握基本分支,循环程序设计;3.掌握最简单的DOS 功能调用.三、实验内容:1.安排一个数据区,内存有若干个正数,负数和零.每类数的个数都不超过9.2.编写一个程序统计数据区中正数,负数和零的个数.四、实验源代码assume cs:code,ds:datadata segmentbuff db 1,2,3,4,5,-1,-2,-3,0,0 ;安排的数据区string db '>0:'plus db 0 ;用变量plus来存储正数的个数db 0ah,0dhstring1 db '=0:'zero db 0 ;用变量zero来存储零的个数db 0ah,0dhstring2 db '<0:'minus db 0 ;用变量minus来存储负数的个数db '$'data endscode segmentstart:movax,datamovds,axmov cx,10 ;初始化,并将CX赋为10,因为共有10个数mov dx,0 ;将计数器dx,ah初始化为0mov ah,0lea bx,buffcompare:cmp byte ptr [bx],0 ;取出一个数与0进行比较jgeplu ;大于等于0,跳至plu执行inc ah ;小于0,用ah暂存小于0的个数,ah+1jmp next ;比完后进行下一个数的比较plu: je zer ;等于0,跳至zer执行inc dl ;大于0,用dl暂存大于0的个数,dl+1jmp next ;比完后进行下一个数的比较zer: inc dh ;等于0,用dh暂存等于0的个数,dh+1next:incbxloop compare ;将dl,dh,ah分别赋值给变量plus,zero,minus,其ASCII分别加48add dl,48movplus,dladd dh,48movzero,dhadd ah,48movminus,ahmov ah,09h ;调用09h中断,将最终结果输出lea dx,stringint 21hmov ax,4c00hint 21hcode endsend start否实验截图六、实验总结及心得体会:这个实验有两个要点。

一是字符显示。

要显示数字字符,首先要把数据转换成ASCII 码,然后调用DOS功能将其显示。

其中使用09H号功能时,要特别注意每段待输出的字符串要以’$’结尾,不然无法识别串尾,输出乱码。

二是判断正负数。

本程序选用CMP指令来实现该功能。

注意与0相比时,要使用有符号数的条件跳转指令,JGE等等,在使用无符号数的条件跳转指令时,不是与0相比较。

实验三代码转换程序设计一、预习题:1.如何将输入的两个字符(0 -- 9)变为十进制或二进制数?答:两字符减去0的ASCII码(30H)后,高位数乘以十加上低位数,即变为十进制数。

2.如何将选出的最小值(二进制或十进制)变为ASCII 码再进行显示?答:将十进制数除以十,商和余数分别加上0的ASCII码后显示在屏幕上。

3.你觉得采用二进制运算还是十进制运算更适合于这个实验?答:输入的两字符为十进制数,采用十进制运算更简洁。

二、实验目的:1.掌握几种最基本的代码转换方法;2.运用子程序进行程序设计.三、实验内容:1.从键盘上输入若干两位十进制数,寻找其中的最小值,然后在屏幕上显示出来.2.两个十进制数之间的分隔符,输入结束标志自定,但要在报告中说明.3.对输入要有检错措施,以防止非法字符输入,并有适当的提示.4.将整个程序分解为若干模块,分别用子程序实现.在报告中要给出模块层次图.四、实验源代码;说明:分隔符为空格键,结束标志位?,例如:00 00 00 00? 为正确的输入hong1 macro x ;定义宏1,检测是否为数字(asc码在48到57之间)moval,byteptr[x]cmp al,48jbwrongcmp al,57jawrongendmhong2 macro x ;定义宏2,检测是否为空格(asc码为32)moval,byteptr[x]cmp al,32jnewrongendmassume cs:code,ds:data,ss:stackdata segmentbuffer0db 100 ;存放输入的字符number db 0num db 100 dup (0)min dw 99 ;初始化的最小值min=99string0 db 'input like 00 00 00 00?',0ah,0dh,'$'string1 db 0ah,0dh,'error!',0dh,0ah,'$'string2 db 0dh,0ah,'The minus number is 'result dw ?db '$'data endsstack segmentdb 50 dup (0)stack endscode segmentinput: movdx,seg buffer0movds,dx ;初始化movax,stackmovss,axmov sp,50call displaymovdx,offset buffer0mov ah,0ahint 21hmoval,numberxorah,ahmov bl,3div bladd ah,0jnzwrongmovcl,alxorch,chmovbx,offsetnummovdx,cxdec cxjcxza2 ;若只有个一个二位数,特殊处理,跳至a2a1: call check1 ;调用check1,检测是否为数字和空格loop a1a2: call check2 ;检测结束标识符?moval,numberxorah,ahmov bl,3div blmovcl,alxorch,chmovbx,offsetnumcompare:mov al,[bx] ;将asc码转化为相应的十进制sub al,48mov dl,10mul dlmov dl,[bx+1]sub dl,48xordh,dhadd ax,dxcmpmin,ax ;将其与最小值比较,若比最小值小,则将其赋给min jbe s ;若比最小值大,则不处理,进行下一位的处理movmin,axs: add bx,3loop comparemovax,minmov bl,10 ;将最小值转化为二进制。

再加3030H转化为对应的asc码,然后显示div blmovresult,axmov ah,09hadd result,3030h ;再加3030H转化为对应的asc码,显示movdx,offset string2int 21hmov ax,4c00hint 21hdisplay:mov ah,09hmovdx,offset string0int 21hretwrong: mov ah,09hmovdx,offset string1int 21hjmp inputcheck1: hong1 bxincbxhong1 bxincbxhong2 bxincbxretcheck2: hong1 bxincbxhong1 bxincbxcmp byte ptr [bx],63jnewrongretcode endsend input程序流程图:是模块层次图:程序截图:输入错误的格式报错,然后再次输入以正确的格式输入一个数字输入两个数字输入四个数字六、实验总结及心得体会:这个实验出了很多错。

一是逻辑错误,像输入一个两位的十进制,高位的是存放在低地址,地位的存放在高地址,刚开始弄反了,导致结果出错。

二是语法错误,[BX]前面没指明类型,加byte ptr或word ptr解决。

另外在进行十进制转换时,很繁琐,实际上可以直接比较其ASC码值,这样程序将精炼很多。

实验四子程序设计一、实验目的:1.进一步掌握子程序设计方法;2.进一步掌握基本的DOS 功能调用.二、实验内容:1.从键盘上输入某班学生的某科目成绩.输入按学生的学号由小到大的顺序输入.2.统计检查每个学生的名次.3.将统计结果在屏幕上显示.4.为便于观察,输入学生数目不宜太多,以不超过一屏为宜.输出应便于阅读.尽可能考虑美观.5.输入要有检错手段.三、预习题:1.如何确定一个学生在这门科目中的名次?答:通过比较科目成绩,交换在数据区中的位置来实现,最后的位置即为科目名次。

2.你觉得输入结束后,采用什么方法进行比较以得到学生的名次最为简单?答:排序运用起泡排序算法较为简单,两两比较相邻成绩,如果不是从大到小的顺序则交换,直到没有反序的记录。

3.准备好模块层次图.4.给出输出显示的形式.答:RANK NUM SCORE,每行依名次显示排名、学号、成绩。

四、实验源代码assume cs:code,ds:data,ss:stackdata segmentbuffer db 30 ;输入字符存放的内存区number db 0info db 30 dup (0)string1 db 0ah,0dh,'input your number,name and score like"01 wang 98" ps.100=fu',0ah,0dh,'$' string2 db 0ah,0dh,'error!',0dh,0ah,'$'string3 db 'rank no name score',0ah,0dhstudent db 220 dup (32) ;用sudent开始的内存区存放所有的输入信息eg db 22 dup (32)totalnumberdw 0 ;记录总的输入学生人数statictotaldw 0 ;记录总的输入学生人数address dw 0circlenumberdw 0data endsstack segmentdb 100 dup (0)stack endscode segmentinit: movdx,seg buffer ;初始化movds,dxmovdx,stackmovss,dxmov sp,100movdx,offset buffermovaddress,offset studentadd address,2input: mov ah,09h ;调用中断,开始输入movdx,offset string1int 21hmovdx,offset buffermov ah,0ahint 21hmovbx,offset infomovcl,numberxorch,chadd cx,0jz compare ;当敲下回车时,跳至compare,开始排序call datacmp ;检测前两位学号是否输入正确call datacmpcall spacecmp ;检测中间是否为空格键sub cx,6s1: call stringcmploop s1 ;检测姓名部分是否全部为字符call spacecmpcall fullcmp1 ;检测成绩输入是否正确,注意满分用fu表示call fullcmp2 ;检测成绩输入是否正确,注意满分用fu表示movax,seg buffermoves,axmovsi,offset infomovcl,numberxorch,chsub cx,3movdi,addresscldrep movsb ;将buffer内的内容复制到student的内存区add si,1add address,16movdi,addressmov cx,2cldrep movsbadd address,6inctotalnumber ;记录总的输入学生人数incstatictotaljmp inputcompare:movdx,offset student ;排序部分,采用冒泡排序,关键处movbx,dxdectotalnumbermovcx,totalnumberjcxzspecialcase ;当只有一个学生的信息时,特殊处理:直接赋给student内存区,输出s3: movbx,dxmovtotalnumber,cx ;将cx保存在totalnumber中s4: movcirclenumber,cx ;将内层的cx保存在circlenumber中mov ah,[bx+18]cmp ah,[bx+40]ja s5jb exchangemov ah,[bx+19]cmp ah,[bx+41]jb exchanges5: add bx,22loop s4movcx,totalnumber ;恢复cx,继续循环,直至比较完毕loop s3display:decstatictotalmovcx,statictotalmovbx,offset studentmov al,49s6: mov byte ptr [bx],almov word ptr [bx+20],0a0dhinc aladd bx,22loop s6mov byte ptr [bx],almov byte ptr [bx+20],36 ;后期处理,将排序后的学生信息输出movdx,offset string3mov ah,09hint 21hmov ax,4c00hint 21hmov byte ptr [bx],49mov byte ptr [bx+20],36movdx,offset string3mov ah,09hint 21hmov ax,4c00hint 21hexchange: ;若后面的数大于前面的数,则交换两个学生的信息(22个字节)movdi,offsetegmovsi,bxmov cx,22cldrep movsbmovdi,bxmovsi,diadd si,22mov cx,22cldrep movsbmovsi,offsetegmovdi,bxadd di,22mov cx,22cldrep movsbmovcx,circlenumber ;将内层的cx恢复出来jmp s5datacmp proc ;数字检测模块,检测是否为数字cmp byte ptr [bx],48jb wrongcmp byte ptr [bx],57ja wrongincbxretdatacmpendpfullcmp1 proc ;成绩检测模块,并包含特殊字符(f)的检测cmp byte ptr [bx],102je s8cmp byte ptr [bx],48jb wrongcmp byte ptr [bx],57ja wrongretfullcmp1 endpfullcmp2 proc ;成绩检测模块,并包含特殊字符(u)的检测cmp byte ptr [bx],117je s9cmp byte ptr [bx],48jb wrongcmp byte ptr [bx],57ja wrongs9: incbxretfullcmp2 endpspacecmpproc ;空格检测模块,检测是否为空格cmp byte ptr [bx],32jne wrongincbxretspacecmpendpwrong: mov ah,09h ;错误信息显示模块movdx,offset string2int 21hjmp inputstringcmpproc ;字符检测模块,检测是否为小写字母cmp byte ptr [bx],122ja wrongcmp byte ptr [bx],97jbextracmps2: incbxretstringcmpendpextracmp:cmp byte ptr [bx],90 ;字符检测模块,检测是否为大写字母ja wrongcmp byte ptr [bx],65jb wrongjmp s2code endsend init总流程检测模块排序模块流程图内循环cx=totalnumberbx=offset studentcx=totalnumberbx=offset studentcx=totalnumberbx=offset studentcx=totalnumberbx=offset studentcx=totalnumberbx=offset student外循环cx=totalnumberbx=offset student程序截图输入错误信息输入真确信息六、实验六、实验总结与心得体会对学生成绩的排序,本实验采用的是冒泡排序,共有内外两层循环,但在汇编中只有CX一个计数器,所以关键是在进行内层循环之前一定要保存CX,内存循环结束后要恢复CX,另外,在内存循环中交换时采用了MOVSB指令,此指令也要用到CX,故本实验需要两次保存CX,两次恢复CX,分别用了totalnumber和statictotal两个变量。

相关文档
最新文档