汇编语言程序设计第二次实验题目

合集下载

汇编实验2-循环程序设计-实验报告

汇编实验2-循环程序设计-实验报告

汇编实验2-循环程序设计-实验报告一、实验目的1、了解循环程序设计的方法2、理解汇编语言中循环指令的使用3、掌握汇编语言中常用的循环结构二、实验原理1、循环指令循环指令是计算机中常用的一种控制结构,其作用是重复执行一定的操作。

在汇编语言中,常用的循环指令有LOOP、LOOPE、LOOPNE等,具体功能如下:(1)LOOP:重复执行指定次数的操作;(2)LOOPE:执行操作直到CX寄存器为0或ZF寄存器为1;(3)LOOPNE:执行操作直到CX寄存器为0或ZF寄存器为0。

LOOP指令的语法格式如下:LOOP label其中,label表示循环的目标地址。

2、循环结构循环结构是计算机程序设计中常用的一种结构,其基本形式包括:while、do...while、for等。

在汇编语言中,常用的循环结构有以下两种:(1)无限循环结构:该结构适用于需要不停顿地进行某项操作的情况,底层逻辑基于测试指令;(2)计数器循环结构:该结构适用于需要循环指定次数的情况,底层逻辑基于循环指令。

三、实验内容1、使用循环指令实现计算1~10的和;2、使用循环结构实现计算1~10的和。

四、实验步骤1、使用循环指令实现计算1~10的和。

(1)将计数器初始化为10,即MOV CX,10;(2)将累加器初始化为0,即MOV AX,0;(3)将当前计数器值加到累加器中,即ADD AX,CX;(4)将计数器减1,即DEC CX;(5)判断计数器是否为0,若不为0,则执行第3步;若为0,则跳转到计算结果的部分。

2、使用循环结构实现计算1~10的和。

(1)将计数器初始化为10,即MOV CX,10;(2)将累加器初始化为0,即MOV AX,0;(3)将当前计数器值加到累加器中,即ADD AX,CX;(4)将计数器减1,即DEC CX;(5)判断计数器是否为0,若不为0,则执行第3步;若为0,则跳转到计算结果的部分。

五、实验结果(1)使用循环指令实现计算1~10的和MOV CX,10MOV AX,0LOOP label1ADD AX,CXDEC CXJNZ label1label1:MOV sum,AX(2)使用循环结构实现计算1~10的和MOV CX,10MOV AX,0label2:ADD AX,CXDEC CXJNZ label2MOV sum,AX六、实验总结本次实验实现了两种不同的循环方式,分别使用了循环指令和循环结构。

山东大学汇编语言上机实验——实验二

山东大学汇编语言上机实验——实验二

程序的基本结构练习一:循环程序设计一、实验目的(1) 加深对循环结构的理解;(2) 掌握循环程序的设计方法;(3) 熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。

二、实验内容1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。

同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。

2.设STR字符串是以0结尾。

试编写一个把字符串中的所有大写字母改为小写字母的程序并将转换后的字符串显示输出。

3.试编程从自然数1开始累加,直到累加和大于5050为止,统计被累加的自然数的个数,并把统计的个数送入COUNT单元,累加和送入TOTAL单元。

三、算法描述流程图实验内容1、2、3的流程图分别为图1、图2、图3。

四、实验步骤1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。

同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。

1)输入源程序:DA TA SEGMENTBUF DW 23,123,-12,-210,45,0,90,-453BUF1 DW 8 DUP(0)BUF2 DW 8 DUP(0)A DWB DW DA TA ENDSCODE SEGMENTASSUME CS: CODE, DS: DA TASTART: MOV AX, DATAMOV DS, AXLEA BX, BUFLEA SI, BUF1LEA DI, BUF2MOV A,0MOV B,0MOV CX,8L0: MOV AX,[BX]CMP AX,0JGE L1MOV [DI],AXADD DI,2INC BJMP NEXTL1: MOV [SI],AXADD SI,2INC ANEXT: ADD BX,2LOOP L0MOV AH, 4CHINT 21HCODE ENDSEND START2)运行程序。

汇编语言程序设计实验报告二(分支循环程序实验)

汇编语言程序设计实验报告二(分支循环程序实验)

汇编语言程序设计实验报告二(分支循环程序实验)一、实验目的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。

2020年中国石油大学北京网络学院 汇编语言程序设计-第二次在线作业 参考答案

2020年中国石油大学北京网络学院 汇编语言程序设计-第二次在线作业 参考答案

中国石油大学北京网络学院
汇编语言程序设计-第二次在线作业
参考答案
1.(
2.5分)下列叙述正确的是:
A、对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMPS 指令
B、对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CMP 指令
C、对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/JNL 指令
D、对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/JNB 指令
我的答案:C 此题得分:2.5分
2.(2.5分)在下列指令的表示中,不正确的是:
A、MOV AL,[BX+SI]
B、JMP SHORT DONING
C、DEC [BX]
D、MUL CL
我的答案:C 此题得分:2.5分
3.(2.5分)在进行二重循环程序设计时,下列描述正确的是:。

汇编语言第二次实验报告

汇编语言第二次实验报告

汇编语言实验报告姓名:王先海专业:网络工程班级:133班学号:139074347实验内容一:编写一个程序,用来显示AL寄存器中的两位十六进位制数程序清单:datas segmentdata db '0123456789ABCDEF'datas endscodes segmentassume cs:codes,ds:datasstart: mov ax,55hmov bx,datasmov ds,bxmov bx,offset datapush axmov cl,04hlab1: shr al,1 ;循环4次逻辑右移1位取高位16进制数dec cljnz lab1xlatmov dl,almov ah,2int 21hpop axmov cl,04hmov ch,7fhlab2: and al,ch ;循环4次and使al高四位清零ror ch,1dec cljnz lab2xlatmov dl,almov ah,02hint 21hmov ah,4chint 21hcodes endsend start1.运行结果:2.思考与体会:循环需要一个跳出条件。

XLAT指令用来将AL中的内容置换成以(BX)为首址(AL)为位移量的内存单元中的内容。

实验内容二:1.程序说明:本程序是用来判别键盘上输入的字符:若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符<CR>,z则结束程序,若为其他字符则不显示,继续等待新的字符输入。

首先输入一个字符,将其和回车字符比较,若是回车字符,则结束程序。

1-9字符,则显示之。

若是若小于0,则重新等待输入。

若大于9,则跳转到和‘A’、Z’比较,若小于’A’,则重新等待输入,若大于’Z’,则跳转到和’a’、’z’比较处,若小于a或大于z,则重新等待输入,否则输出‘c’。

2.程序清单:datas segmentstr db ?,0ah,0dh,'$',' input again!',0ah,0dh,'$'datas endscodes segmentassume cs:codes,ds:datasstart: mov ax,datasmov ds,axnext1: mov ah,01hint 21hcmp al,0dhjz exitlea dx,strmov bx,dxnext2: cmp al,'1'jb next7cmp al,'9'ja next3mov [bx],aljmp next6next3: cmp al,'a'jb next4cmp al,'z'ja next7jmp next5next4: cmp al,'A'jb next7cmp al,'Z'ja next7next5: mov [bx],byte ptr 'c'next6: mov ah,9int 21hjmp next1next7: lea dx,str+4mov ah,9int 21hjmp next1exit: mov ah,4chint 21hcodes endsend start3.运行结果:4.思考与体会:根据条件判定进入不同的分支程序。

汇编第二次上机实验

汇编第二次上机实验

汇编第二次上机实验班级:姓名:学号:时间:2012年11月2日题目:写一个完整的程序放在代码段C_SEG中,要求把数据段D_SEG中的AUGEND和附加段E_SEG中的ADDEND相加,并把结果放在D_SEG中的SUM中。

其中AUGEND,ADDEND和SUM均为双精度数,AUGEND赋值为99251,ADDEND赋值为-15962。

一、设计思路在数据段中分配两个双字AUGEND和SUM,AUGEND初始化为99251,在附加段中分配一个双字ADDEND并初始化为-15962。

然后利用寄存器AX对低位字相加,DX对高位字相加。

最后将结果放回SUM单元。

二、详细设计过程1.设计源代码新建一个文本文件,并把拓展名改为asm,我命名为“plus.asm”。

根据上述思路,设计出源代码。

写好之后先自行检查一下,更改语法错误并保存。

最终代码见附录。

2.对源程序进行汇编在命令提示符下,转到源文件plus.asm所在目录,输入命令“masm plus”。

若汇编有错误,根据错误提示修改源文件并重新汇编,直到显示“0 Waring Errors和0 Severe Errors”,汇编通过。

结果如图1。

图1 汇编结果3.用LINK程序产生EXE文件上一步产生的OBJ文件虽然是二进制的,但不是可执行的,还必须通过连接程序进行连接,使其转换成EXE可执行文件。

输入命令“link plus”,按ENTER,根据提示进行操作。

由于源程序中没有定义堆栈段,而是使用系统的堆栈段,连接程序给出无堆栈段的警告,但并不影响程序运行,如图2。

到此,已经得到了程序。

图2 连接结果4.执行和调试程序输入命令“plus”,发现并没显示结果如图3。

这是因为程序中没有调用中断把结果输出到屏幕上,其实程序已经瞬间执行完成并返回DOS了。

要看到执行的结果,只能使用命令调试程序了。

调用命令“debug plus.exe”,在调试模式下,输入“t d”执行13条指令,使程序停止在RETF指令处,用“d DS:0,LA”和“d ES:0,LA”显示数据段和附加段的前10个字节,如图4。

微机实验二

微机实验二

实验二:汇编语言(三种基本结构程序)设计与调试一、实验目的1.学习汇编语言(三种基本结构程序)设计与调试。

2.掌握多分支结构程序设计的方法。

3.掌握循环结构程序设计的方法。

4.熟悉在PC机上建立、汇编、连接和调试程序的方法。

二、实验内容(顺序结构的程序设计)程序一:设W、X、Y、Z均为16位带符号数。

要求完成计算表达式(W-(X*Y+Z-220))/X。

将表达式的商和余数存入数据区RESULT单元开始的区域中。

编程思路:该题目要求掌握乘除法运算中带符号数和无符号数运算的区别。

为了实现指定功能,应从以下几个方面考虑:(1)带符号数的乘除法运算应选用的指令。

(2)乘、除法运算中操作数的长度问题。

(3)带符号数的扩展问题。

参考程序清单DATA SEGMENTW DW -304X DW 1000Y DW -12Z DW 20RESULT DW 2 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AX,XIMUL YMOV CX,AxMOV BX,DXMOV AX,ZCWDADD CX,AXADC BX,DXSUB CX,220SBB BX,0MOV AX,WCWDSUB AX,CXSBB DX,BXIDIV XMOV RESULT,AXMOV RESULT+2,DXMOV AH,4CHINT 21HCODE ENDSEND START三、实验内容(分支结构的程序设计)程序二:在数据区中定义三个带符号字节变量,编写程序将其中的最大数找出送到MAX单元中。

该题目要求掌握多分支程序设计方法。

编程思路:为了实现指定功能,应从以下几个方面考虑:(1) 确定编程的算法思想。

(2) 确定带符号数比较大小转移应选择哪一组条件转移指令。

参考程序清单:DATA SEGMENTX DB 115Y DB 23Z DB -20MAX DB ?DATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART:MOV AX,DATAMOV DS,AXMOV AL,XCMP AL,YJG NEXTMOV AL, YCMP AL,ZJG EXITMOV AL,ZJMP EXITNEXT:CMP AL,ZJG EXITMOV AL,ZEXIT:MOV MAX,ALMOV AH,4CHINT 21HCODE ENDSEND START ;返回DOS四、实验内容(循环结构的程序设计)程序三:编写程序实现将数据段STR1单元开始的20个字符移到STR2开始的存储区。

2007_汇编第2次上机题

2007_汇编第2次上机题

《汇编语言程序设计》第二次上机一、目的1、加深对一些常用的汇编指令的理解;1、加深对常用DOS功能调用指令的理解;3、进一步熟悉TD的使用。

二、题目1、《80X86汇编语言程序设计》教材中 P95的 3.7 题。

要求:(1)将该题改成一完整的程序(可以省略实验报告中的程序框图)。

(2)请事先指出依次执行每条程序指令后(AX)的内容。

(3)请事先指出执行ADD、SUB、SAL、RCL指令后,CF、ZF的值。

(4)记录上机执行后与(2)、(3) 中对应的内容。

说明:MOV 指令不影响标志位,DEC指令不影响CF标志位,NOT 指令不影响标志位。

2、《80X86汇编语言程序设计》教材中 P94的 3.3 题。

要求:(1)将该题改成一完整的程序,其中数据段的定义为习题3.1中的数据段(可以省略实验报告中的程序框图)。

(2)请事先画出数据段中数据的存储形式。

(3)请事先指出依次执行每条程序指令后相应寄存器中的内容。

(4)请事先给出各调指令在汇编后的形式。

(5)比较上机执行后,看到的各项内容是否与(2)、(3) ,(4)内容一致。

不一致的应分析错误原因。

说明:MOV BX, OFFSET STR1+3 对应的汇编后的指令为:MOV BX, 3 MOV BX, STR1 对应的汇编后的指令为:MOV BX, [0000](上条指令等价于MOV BX, DS:[0000] )3、《80X86汇编语言程序设计》教材中 P96的 3.11 题。

要求:(1)请事先指出程序运行结束后,显示器显示的内容。

(2)若将NUM的定义改成如下形式:NUM DB 35显示的结果是什么?(3)若将NUM的定义改成如下形式:NUM DB 59显示的结果是什么?(4)指出程序运行后看到的结果,若不一致,分析产生错误的原因。

4. 从键盘输入两串字符分别存入BUF1和BUF2区,比较两串内容是否相等,相等显示“MATCH !”, 不相等显示“NO MATCH !”。

汇编第二次试验

汇编第二次试验

汇编第二次实验计网112班田凯飞1107300215一、实验题目编写一个子程序嵌套结构的程序模块,分别从键盘输入姓名以及8个字符的电话号码,并以一定的格式显示出来。

主程序TELIST:(1)显示提示符INPUT_NAME:;(2)调用子程序INPUT_NAME输入姓名;(3)显示提示符INPUT A TELPHONE NUMBER:;(4)调用子程序INPHONE输入电话号码;(5)调用子程序PRINTLINE显示姓名及电话号码。

子程序INPUT_NAME:(1)调用键盘输入子程序GETCHAR,把输入的姓名存放在INBUF缓冲区内;(2)把INBUF中的姓名移入输出行OUTPHONE。

子程序INPHONE:(1)调用键盘输入子程序GETCHAR,把输入的8位电话号码存放在INBUF缓冲区中;(2)把INBUF中的号码移入输入行OUTPHONE。

子程序PRINTLINE:显示姓名及电话号码,格式为:NAME TELXXX XXX二、实验代码data segmentinbuf db 12 dup(' ')outname db 16 dup(' ')outphone db 12 dup(' '),13,10,'$'hint1 db 'Input Name:','$'hint2 db 'Input a Telephone Number:','$'hint3 db 'Name:',12 dup(' '),'Tel:',13,10,'$'crlf db 13,10,'$'data endsstack segmentdw 100 dup(?)tos label wordstack endsprompt macro messagemov ah,9lea dx,messageint 21hendmcode segmenttelist proc farassume cs:code,ds:data;,es:data,ss:stackstart:mov ax,stackmov ss,axmov sp,offset tospush dssub ax,axpush axmov ax,datamov ds,axmov es,axprompt hint1 ;提示输入姓名call input_name ;输入姓名prompt hint2 ;提示输入电话号码call inphone ;输入电话号码call printline ;输出姓名及电话号码rettelist endpinput_name proc nearcall getcharlea si,inbuflea di,outnamemov cx,12cldrep movsbretinput_name endpinphone proc nearcall getcharlea si,inbuflea di,outphonemov cx,12cldrep movsbretinphone endpgetchar proc nearmov al,20hmov cx,12lea di,inbufcldrep stosbmov cx,12mov di,0 input:mov ah,1int 21hcmp al,0dhjz quitmov inbuf[di],alinc diloop input quit:prompt crlfretgetchar endpprintline proc nearprompt hint3prompt outnameretprintline endpcode endsend start三、实验截图。

汇编语言程序设计实验二及答案

汇编语言程序设计实验二及答案

实验二:汇编语程序设计一、实验目的旨在通过实验使同学了解汇编语言的程序结构和编程方法,可以编写出顺序程序、分支程序和一般的循环程序,并学会修改和调试方法。

二、实验环境MASM、LINK、DEBUG或包含此软件的相关软件三、实验内容1.1、从FIRST开始的100个单元中存放着一个字符串,结束符为$。

编写一个程序,统计该字符串中字母‘A’的个数。

DATA SEGMENTFIRST DB 'AGHI K…$’ ;定义字符串,结束符为$NUMBER DB ? ;结果存放单元DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART: MOV AX,DATA ;建立数据段的可寻址性MOV DS, AXMOV BL,0 ;BL用作统计计数器LEA DI,FIRST ;取字符串首址NEXT: MOV AL, [ DI] ;取一个字符INC DI ;指向下一个字符CMP AL,’$’ ;与结束符’$’比较JE EXIT ;等于,搜索完结束CMP AL , 'A ;与字符‘A’比较JNE NEXT ;不等于。

不统计INC BL ;找到,计数IMP NEXT ;继续EXIT: MOV NUMBER,BLMOV AH,4CHINT 21HCODE ENDSEND START2.编程判断输入的ASCII码字符时数字还是字母,并将判断结果分别以“D”和“L”显示出来。

解:用宏实现字符显示。

程序如下:DISPLAY MACRD CHAR;显示字符宏定义MOV DL,CHARMOV AH,02HINT 21HENDMCODE SEGMENTASSUME CS: CODESTART : MOV AH, 0lH ;输人一个ASCI I码字符INT 21 HCMP AL, '0’JC ERROR ;非数字和字母,转ERROR处理CMP AL, '9'JA NEXT ;非数字,转NERTDISPLAY 'D' ;数字。

汇编语言程序设计实验报告二

汇编语言程序设计实验报告二

汇编语言程序设计实验报告(二)一、实验目的1)加深对循环结构的理解。

2)掌握循环程序的设计方法。

3)学习子程序的定义和调用方法。

4)掌握子程序、子程序的嵌套、递归子程序的结构。

5)掌握子程序设计、编制及调试。

6)熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。

二、实验内容1)编制在屏幕上显示九九乘法表的程序。

2)编制在屏幕上显示用*组成的三角形的程序。

三、实验结果(1)(2)四、源代码(1)DA TA SEGMENTM DB 31H,32H,33H,34H,35H,36H,37H,38H,39H DA TA ENDSSTACK1 SEGMENT STACKDW 20H DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,SS:STACK1 START:MOV AX,DA TAMOV DS,AXMOV CX,9MOV DI,OFFSET MLOP1:PUSH CXMOV CX,[DI]AND CX,0FHMOV SI,OFFSET M LOP2:MOV AL,[SI]MOV DL,ALMOV AH,2INT 21HAND AL,0FHMOV BH,ALMOV DL,'*'MOV AH,2INT 21HMOV BL,[DI]MOV DL,BLMOV AH,2INT 21HMOV DL,'='MOV AH,2INT 21HAND BL,0FHMOV AL,BHMOV AH,0MOV DL,10DIV DLMOV BL,AHCMP AL,0JE NEXTMOV DL,ALADD DL,30HMOV AH,2INT 21H NEXT:MOV DL,BLADD DL,30HMOV AH,2INT 21HMOV DL,' 'MOV AH,2INT 21HINC SILOOP LOP2MOV DL,0AHMOV AH,2MOV DL,0DHINT 21HINC DIPOP CXLOOP LOP1MOV AH,4CHINT 21HCODE ENDSEND START(2)STACK1 SEGMENT STACKDW 20H DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,SS:STACK1 BEGIN:MOV AH,1INT 21HMOV BL,ALSUB BL,30HMOV DL,0AHINT 21HMOV DL,0DHMOV AH,2INT 21HMOV BH,0MOV CX,BXMOV BX,1L1: PUSH CXMOV CX,BX L2: MOV DL,'*'MOV AH,2INT 21HLOOP L2MOV DL,0AHMOV AH,2INT 21HMOV DL,0DHMOV AH,2INT 21HADD BX,1POP CXMOV AH,4CHINT 21HCODE ENDSEND BEGIN五、实验心得这是第二次做汇编实验,首先,心理上已经没有了第一次做实验的那种茫然,知道了想要编写一个完整的程序,应当先将这一个大问题分解成若干个小的问题,找出每一个小问题所对应的解决方法,然后用代码一步一步实现,再将这一个一个的小问题串联起来,找到它们的契合点,用联系把它们组成一个完整的程序,其中最常用的就是转移指令和循环。

2020年春【中石油】汇编语言程序设计第二次在线作业(标准)

2020年春【中石油】汇编语言程序设计第二次在线作业(标准)

【石油大学】汇编语言程序设计-第二次在线作业试卷总分:100 得分:100第1题,1.(2.5分)下列叙述正确的是:A、对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMPS指令B、对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CMP指令C、对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/JNL指令D、对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/JNB指令正确答案:C第2题,2.(2.5分)在下列指令的表示中,不正确的是:A、MOV AL,[BX+SI]B、JMP SHORT DONINGC、DEC [BX]D、MUL CL正确答案:C第3题,3.(2.5分)在进行二重循环程序设计时,下列描述正确的是:A、外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内B、外循环初值应置外循环之内;内循环初值应置内循环之内C、内、外循环初值都应置外循环之外D、内、外循环初值都应置内循环之外,外循环之内正确答案:A第4题,4.(2.5分)条件转移指令JNE的测试条件为:A、ZF=0B、CF=0C、ZF=1D、CF=1正确答案:A第5题,5.(2.5分)下列指令执行时出错的是:A、ADD BUF1,BUF2B、JMP DWORD PTR DAT [BX]C、MOV AX,[BX+DI] NUMD、TEST AL,08H正确答案:A第6题,6.(2.5分)在下列指令中,执行会影响条件码中的CF位的指令是:A、JMP NEXTB、JC NEXTC、INC BXD、SHL AX,1正确答案:D第7题,7.(2.5分)用户为了解决自己的问题,用汇编语言所编写的程序,称为:A、目标程序B、源程序C、可执行程序D、汇编程序正确答案:B第8题,8.(2.5分)用一条指令仅实现将BX+SI=&gt;AX的方法是:A、XCHG AX,[BX][SI]B、MOV AX,[BX+SI]C、LEA AX,BX[SI]D、LEA AX,[BX][SI]正确答案:D第9题,9.(2.5分)设SP初值为2000H,执行指令“PUSHAX”后,SP的值是:A、1FFFHB、1998HC、2002HD、1FFEH正确答案:D第10题,10.(2.5分)CBW指令的功能是:A、把源操作数的符号位扩展到目的操作数中B、把AL中的符号位扩展到AH中C、把AH中的符号位扩展到AL中D、把AX中的符号位扩展到DX中正确答案:B第11题,11.(2.5分)循环指令LOOPNZ终止循环的条件是:A、CX=0,且ZF=0B、CX=0,或ZF=1C、CX≠0,且ZF=0D、CX≠0,或ZF=1正确答案:B第12题,12.(2.5分)下列传送指令中有语法错误的是:A、MOV CS,AXB、MOV DS,AXC、MOV SS,AXD、MOV ES,AX正确答案:A第13题,13.(2.5分)与MOVBX,OFFSETVAR指令完全等效的指令是:A、MOV BX,VARB、LDS BX,VARC、LES BX,VARD、LEA BX,VAR正确答案:D第14题,14.(2.5分)MOVSP,3210HPUSHAX执行上述指令序列后,SP寄存器的值是:A、3211HB、320EHC、320FHD、3212H正确答案:B第15题,15.(2.5分)汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是:A、名字项B、操作项C、操作数项D、注释项正确答案:B第16题,16.(2.5分)使计算机执行某种操作的命令是:A、伪指令B、指令C、标号D、助记符正确答案:B第17题,17.(2.5分)若AX=3500H,CX=56B8H,当ANDAX,CX指令执行后,AX=A、1400HB、77F8HC、0000HD、0FFFFH正确答案:A第18题,18.(2.5分)下面XCHG指令语句中,语法正确的是:A、XCHG AX,DSB、XCHG AX,[BX]C、XCHG AX,CSHD、XCHG[SI],[DX]正确答案:B第19题,19.(2.5分)设数据段有:DA1DBXX;是任一数据DA2DBOFEH下列两条指令:MOVDL,DA1ORDL,DA2执行后,DL中的内容可能是:A、.0FFH或0FEHB、只能是0FEHC、只能是0FFHD、只能是01H正确答案:A第20题,20.(2.5分)ORG100HNUMEQU8042HDA1DB56HMOVBX,0FFSETDA1上述程序段执行后BX 中的值是:A、56HB、100HC、101HD、102H正确答案:B第21题,21.(2.5分)指令JMPFARPTRDONE属于:A、段内转移直接寻址B、段内转移间接寻址C、段间转移直接寻址D、段间转移间接寻址正确答案:C第22题,22.(2.5分)将DX的内容除以2,正确的指令是:A、DIV 2B、DIV DX,2D、SHL DX,1正确答案:C第23题,23.(2.5分)AND,OR,XOR,NOT为四条逻辑运算指令,下面的解释正确的是:A、指令XOR AX,AX执行后,AX内容不变,但设置了标志位B、指令OR DX,1000H执行后,将DX最高位置1,其余各位置0C、指令AND AX,OFH执行后,分离出AL低四位D、NOT AX,执行后,将AX清0正确答案:C第24题,24.(2.5分)完成对CL寄存器的内容乘以4的正确操作是:A、ROL CL,1ROL CL,1B、MUL 4C、SHL CL,1SHL CL,1D、MOV CL,2SHL CL,CL正确答案:C第25题,25.(2.5分)下面各传送指令中,正确的是:A、MOV [DI],[SI]B、MOV [DX+DI],ALC、MOV WORD PTR [BX],0100HD、MOV AL,BX正确答案:C第26题,26.(2.5分)比较两个带符号的数A、B,当A=B时程序转移,测试的条件为:A、ZF=1B、ZF=0C、SF=1D、SF=0正确答案:A第27题,27.(2.5分)汇编源程序时,出现语法错误的语句是:A、MOV [BX+SI],BXB、MOV CL,[BP+DI]C、MOV CS,AX正确答案:C第28题,28.(2.5分)设AL=57H,BL=24H,执行指令SUBAL,BL后,寄存器内容为:A、AL=57H,BL=24HB、AL=33H,BL=24HC、AL=57H,BL=33HD、AL=33H,BL=0正确答案:B第29题,29.(2.5分)设CL=8,AL=0C8H,执行SARAL,CL后,AL中的数据是:A、0FFHB、80HC、00HD、0FEH正确答案:A第30题,30.(2.5分)已知BX=028AH,SI=0294H,(DS:051EH)=5432H。

汇编语言学习知识程序设计实验

汇编语言学习知识程序设计实验

汇编语⾔学习知识程序设计实验⽬录⽬录 (1)实验⼀利⽤DEBUG熟悉常⽤指令的使⽤ (2)⼀、实验⽬的 (2)⼆、⽰例 (2)三、实验题 (2)实验⼆汇编程序和连接程序的使⽤ (6)⼀、实验⽬的。

(6)⼆、⽰例。

(6)三、实验题。

(8)实验三顺序结构程序设计 (11)⼀、实验⽬的 (11)⼆、⽰例 (11)三、实验题 (12)四、实验报告 (15)实验四循环结构程序设计 (16)⼀、实验⽬的 (16)⼆、⽰例 (16)三、实验题 (18)实验五分⽀结构程序设计 (21)⼀、实验⽬的 (21)⼆、⽰例 (21)三、实验题 (22)实验六⼦程序设计 (29)⼀、实验⽬的 (29)⼆、实验题 (29)实验⼀利⽤DEBUG熟悉常⽤指令的使⽤⼀、实验⽬的熟悉指令系统,掌握常⽤指令的⽤法;通过实验加深对各种寻址⽅式的理解;能熟练使⽤DEBUG中的命令对指令进⾏反汇编,观察并了解机器代码。

⼆、⽰例请分别⽤⼀条汇编语⾔指令完成如下功能:(过程略)。

1.⽤寄存器BX和SI的基址变址寻址⽅式把存储器的⼀个字节与AL寄存器的内容相加,并把结果送到AL中。

ADD AL,[BX][SI]2.⽤位移量为0520H的直接寻址⽅式把存储器中的⼀个字与3412H相加,并把结果送回该存储单元。

ADD WORF PTR [0520H],3412H三、实验题1.调试、验证下列指令的结果,已知(DS)=2000H,(BX)=0100H,(SI)=0002H,(BP)=0200H,(SS)=2300H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(21200)=2AH,(21201)=4CH,(21202)=B7H,(21203)=65H,(23204)=88H,说明各指令执⾏完后AX寄存器的内容。

要求输⼊指令,相应存储单元的内容要事先设置,单步P执⾏,观察执⾏结果。

(设置存储器的值)①.MOV AX,1200H②.MOV AX,BX③.MOV AX,[1200H]④.MOV AX,[BX]⑤.MOV AX,1100[BX]⑥.MOV AX,[BX][SI]⑦.MOV AX,1100[BX][SI]⑧ .MOV AX,[BP+SI+04]2、上机调试、验证教材习题3.15。

汇编语言程序设计2

汇编语言程序设计2

目录系统认识 (1)实验一数码转换编程及程序调试 (5)实验二运算类编程实验 (11)实验三分支程序、循环程序设计实验 (16)实验四子程序设计实验 (22)实验五显示程序实验 (26)实验六串行通讯应用实验 (27)附录WMD86 联机软件使用说明 (40)系统认识一、实验目的掌握TD-PITE微机原理与接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。

二、实验设备PC微机一台,TD-PITE实验装置一套。

三、实验内容编写实验程序,将00H~0FH共16个数写入内存3000H开始的连续16个存储单元中。

四、实验步骤1. 运行Wmd86软件,进入Wmd86集成开发环境。

2. 根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言,如图1所示。

语言选择后,下次再启动软件,语言环境保持这次的修改不变。

在这里,我们选择汇编语言。

图13. 语言选择后,点击新建或按Ctrl+N组合键来新建一个文档,如图2所示。

默认文件名为Wmd861。

图24. 编写实验程序,如图3所示,并保存,此时系统会提示输入新的文件名,输完后点击保存。

图3程序:SSTACK SEGMENT STACK ;定义堆栈段DW 32 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODE, SS:SSTACKSTART: PUSH DSXOR AX, AXMOV DS, AXMOV SI, 3000H ;建立数据起始地址MOV CX, 16 ;循环次数AA1: MOV [SI], ALINC SI ;地址自加1INC AL ;数据自加1LOOP AA1AA2: JMP AA2CODE ENDSEND START5. 点击,编译文件,若程序编译无误,则输出如图4所示的输出信息,然后再点击进行链接,链接无误输出如图5所示的输出信息。

图4图56. 连接PC与实验系统的通讯电缆,打开实验系统电源。

汇编作业第二次循环程序设计

汇编作业第二次循环程序设计

昆明理工大学信息工程与自动化学院学生实验报告(2010--2011 学年第下学期)课程名称:汇编开课实验室: 2010年11月10日年级、专业、班2008计科083 学号姓名成绩实验项目名称循环程序设计教师袁梅宇教师评语教师签名:年月日实验二、循环程序设计一,实验要求:1)掌握循环程序的设计方法;2)输入并汇编起泡排序程序;3)观察并记录运行结果。

二、实验设计思路:(1)、把一组无序数存放在数组ARY中,计算数组中元素个数记作CT;(2)、初始化排序外层循环次数DI为CT-1,内层循环次数CX为DI;(3)、置地址指针指向数组第一个元素;若当前指针指向的数小于数组中的下一个数,则交换这两个数在数组中的位置;(4)、修改地址指针,指向当前指针的下一个元素,并让内层循环次数CX减1;(5)、若内层循环次数CX不等于0,则跳转到第(4)步执行;否则让外层循环次数DI减1;(6)、若外层循环次数DI不等于0,则跳转到第(2)不执行;否则说明排序完成;(7)、修改地址指针指向下一个元素,DI+1,判断循环显示次数DI是否为0,若不为0则跳转到第(9)步执行,否则说明整个程序运行完成,返回DOS功能调用。

三、流程图:开始初始化排序外层循环次数DI 为CT-1内层循环次数CX=0?YN 外层循环次数DI=0?N YN 结束初始化排序内层循环次数CX 为DI置地址指针指向第一个元素当前指针指向的数大于等于下一个数?YN 交换当前数与下一个数的位置修改地址指针,指向这两个数中的后一个内层循环次数CX 减1外层循环次数DI-1待排序元素个数为CT初始化显示循环次数DI为元素个数CT把当前指针指向的元素赋给ax 并把它转换成ASCII 码把AH 赋给DL调用INT21的2号功能显示DL修改地址指针指向下一个元素,DI+1DI=0?Y四、实验程序:STACKSG SEGMENT STACK 'S'DW 64 DUP('ST')STACKSG ENDSDATA SEGMENTARY DW 5,7,1,4,3,6,9,8,2 ;数组ARYCT EQU ($-ARY)/2 ;元素个数DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSGMAIN PROC FARMOV AX,DATAMOV DS,AXMOV DI,CT-1 ;初始化外循环次数LOP1:MOV CX,DI ;置内循环次数MOV BX,0 ;置地址指针LOP2:MOV AX,ARY[BX]CMP AX,ARY[BX+2] ;两数比较JGE CONT ;次序正确转,次序不正确互换位置XCHG AX,ARY[BX+2]MOV ARY[BX],AXCONT:ADD BX,2 ;修改地址指针LOOP LOP2 ;内循环控制DEC DI ;修改外循环次数JNZ LOP1 ;外循环控制MOV DI,CTMOV BX,0SHOW:MOV CL,10 ;显示数组MOV AX,ARY[BX]DIV CLADD BX,2OR AX,3030HMOV DL,AHMOV AH,2INT 21HDEC DIJNZ SHOWMOV AX,4C00H ;返回DOSINT 21HMAIN ENDPCODE ENDSEND MAIN五、实验结果以及分析:1、用“masm”指令汇编px.asm文件2、用“link”指令连接.obj 文件3、执行生成的可执行文件4、反汇编程序5、反汇编到程序结束6、用D命令显示内存单元状态7、显示0010到0050段的内存单元8、查看所有寄存器的状态9、查看某一个寄存器的状态,例如查看CX 寄存器10、修改寄存器,例如修改寄存器cx为000011、调用G命令显示排序结果12、用T命令逐条显示程序前骤13、初始化循环次数和地址指针14、内层循环,比较当前指针所指内容是否大于等于数组中其后的一个数,若是则转至CONT 执行,否则交换两个数的位置。

汇编语言第二次实验报告

汇编语言第二次实验报告

《汇编语⾔言》第⼆二次实验姓名:任凯学号:139074018循环和分⽀支程序设计⼀一、实验⺫⽬目的1、掌握循环程序的设计⽅方法。

2、进⼀一步熟悉利⽤用DEBUG程序修改参数的⽅方法,并检查和验证结果的正确性。

3、学会针对不同的问题,选⽤用不同的组织循环的⽅方法。

4、掌握分⽀支程序的设计⽅方法。

5、掌握汇编语⾔言源程序的编辑、汇编、连接及调试过程。

⼆二、实验内容:1、编写⼀一个程序,显⽰示AL寄存器中的两位⼗十六进制数。

2、编写⼀一个程序,判断键盘上输⼊入的字符;若是1-9字符,则显⽰示之;若为A-Z或a-z字符,均显⽰示“c”;若是回⻋车字符<CR>(或其他ASCII码为0DH),则结束程序,若为其他字符则不显⽰示,继续等待新的字符输⼊入。

三、实验源码1、编写⼀一个程序,显⽰示AL寄存器中的两位⼗十六进制数。

通过汇编连接成功⽣生成可执⾏行⽂文件流程图2、编写⼀一个程序,判断键盘上输⼊入的字符;若是1-9字符,则显⽰示之;若为A-Z或a-z字符,均显⽰示“c”;若是回⻋车字符<CR>(或其他ASCII码为0DH),则结束程序,若为其他字符则不显⽰示,继续等待新的字符输⼊入。

流程图统计不同成绩段学⽣生的⼈人数⼀一、实验⺫⽬目的:1、掌握分⽀支、循环、⼦子程序调⽤用、DOS功能调⽤用等基本的程序结构。

2、掌握综合程序的编制及调试⽅方法。

⼆二、实验内容:设有⼗十个学⽣生成绩分别是76,69,84,90,73,88,99,63,100和80分。

试编制⼀一个⼦子程序,统计低于60分,60〜~69分,70〜~79分,80〜~89分,90〜~99分和100分的⼈人数,并输出显⽰示统计结果。

成绩分等部分采⽤用分⽀支结构,统计所有成绩则⽤用循环结构完成,显⽰示统计结果采⽤用DOS功能调⽤用。

计学⽣生成绩和显⽰示统计结果两部分内容⽤用⼦子程序结构来完成。

三、实验源码。

汇编语言程序设计第二次作业

汇编语言程序设计第二次作业

首页一.单选题(共40题,40.0分)1AOV网是一种( )。

•A、有向图•B、无向图•C、无向无环图•D、有向无环图正确答案: D 我的答案:D得分: 1.0分2指令“MOV AX,0FH XOR 1111B”执行后的结果是( )。

•A、0FFFFH→AX•B、0FH→AX•C、1111B→ AX•D、0→AX正确答案: D 我的答案:D得分: 1.0分3已知(AL)=35H, (BL)=57H,执行指令ADD AL, BLDAA后,AL的值为()。

•A、92HB、8CHC、92D、CH正确答案: A 我的答案:A得分: 1.0分4设Huffman树的叶子结点数为m,则结点总数为( )。

•A、2m•B、2m-1•C、2m+1•D、m+1正确答案: B 我的答案:B得分: 1.0分5以下程序段中,有数据2000H的字单元的偏移量分别是( )。

ORG 20HVAR1 DB 0,’0’,20H,0,20HDW VAR1•A、03H•B、21H•C、22H•D、23H•E、24H正确答案: D 我的答案:E得分: 0.0分6图所示二叉树结点的前序遍历的序列为( )。

•A、E、G、F、A、C、D、B•B、 E、A、G、C、F、B、D•C、E、A、C、B、D、G、F•D、E、G、A、C、D、F、B正确答案: C 我的答案:C得分: 1.0分7ORG 100HNUM EQU 42HDA1 DW $+56H……MOV BX,0FFSET DA1上述程序段执行后BX中的值是( )。

•A、42H•B、156H•C、100H•D、157H正确答案: C 我的答案:C得分: 1.0分8对线性表进行二分法查找,其前提条件是( )。

•A、线性表以链接方式存储,并且按关键码值排好序•B、线性表以顺序方式存储,并且按关键码值的检索频率排好序•C、线性表以顺序方式存储,并且按关键码值排好序•D、线性表以链接方式存储,并且按关键码值的检索频率排好序正确答案: C 我的答案:A得分: 0.0分9为实现单步操作,即每执行完一条指令就停下来,必须设置标志位( )。

汇编语言程序设计实验报告

汇编语言程序设计实验报告

实验报告实验名称汇编语言程序设计||专业班级:信息安全学号:姓名:实验一汇编语言上机过程和Debug常用调试命令一.实验目的:学习程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法。

二.实验题目:熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)的使用方法。

在调试过程中,学习及掌握debug程序的各种操作命令。

三.问题描述:试编写一程序:比较两个字符串string1和string2所含的字符是否相同,若相同则显示‘match’; 否则,显示‘no match’。

四.方法说明:a) 使用ws、tc或EDIT编辑程序来建立源文件,然后存盘,使系统返回DOS。

b) 用汇编程序masm(或asm)对源文件汇编产生目标文件obj如:汇编指示出错则需重新调用编辑程序修改错误,直至汇编通过为止。

c) 用连接程序link 产生执行文件EXE.d) 执行程序,可直接从DOS执行程序。

e) 使用debug程序调试程序的方法。

五.实验步骤:1.调用字处理程序EDIT 建立以sample.asm文件datarea segmentstring1 db ‘move the cursor backward.’string2 db ‘move the cursor backward.’mess1 db ‘Match..’,13,10,’$’mess2 db ‘No match!..’,13,10,’$’datarea endsprognam segmentmain proc farassume cs:prognam,ds:datarea,es:datarea start:push dssub ax,axpush axmov ax,datareamov ds,axmov es,axlea si,string1lea di,string2cldmov cx,25repz cmpsbjz matchlea dx,mess2jmp short dispmatch:lea dx, mess1disp:mov ah,09int 21hretmain endpprognam endsend start2.对源文件汇编产生目标文件obj D:\masm 文件名。

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

《汇编语言程序设计实验》
第二次上机实验任务
实验名称:实验二分支程序、循环程序的设计。

一.实验目的和要求
1、熟悉分支、循环程序的结构及控制方法,掌握分支、循环程序的调试方法;
2、加深对转移指令及一些常用的汇编指令的理解;
3、加深对常用DOS功能调用指令的理解,进一步熟悉TD的使用。

二.实验内容
设计实现一个学生成绩查询的程序。

1、实验背景
在以BUF为首址的字节数据存储区中,存放着n个学生的课程成绩表(百分制),每个学生的相关信息包括:姓名(占10个字节,结束符为数值0),语文成绩(1个字节),数学成绩(1个字节),英语成绩(1个字节),平均成绩(1个字节)。

例如:
N EQU 1000
BUF DB ‘zhangsan’,0,0 ;学生姓名,不足10个字节的部分用0填充
DB 100, 85, 80,? ; 平均成绩还未计算
DB ‘lisi’,6 DUP(0)
DB 80, 100, 70,?
DB N-3 DUP( ‘TempValue’,0,80,90,95,?) ;除了3个已经具体定义了学生信息的成绩表以
外,其他学生的信息暂时假定为一样的。

DB ‘wangwu’,0,0,0,0
DB 85, 85, 100, ?
2、功能一:提示并输入学生姓名
(1)使用9号DOS系统功能调用,提示用户输入学生姓名。

(2)使用10号DOS系统功能调用,输入学生姓名。

输入的姓名字符串放在以in_name为首址的存储区中。

(3)若只是输入了回车,则回到“(1)”处重新提示与输入;若仅仅输入字符q,则程序退出,否则,准备进入下一步处理。

3、功能二:以学生姓名查询有无该学生
(1)使用循环程序结构,在成绩表中查找该学生。

(2)若未找到,就提示用户该学生不存在,并回到“功能一(1)”的位置,提示并重新输入姓名。

(3)若找到,则将该学生课程成绩表的起始偏移地址保存到POIN字变量中。

提示:字符串比较时,当采用输入串的长度作为循环次数时,若因循环次数减为0而终止循环,则还要去判断成绩表中名字串的下一个字符是否是结束符0,若是,才能确定找到了。

4、功能三:计算所有学生的平均成绩
使用算数运算相关指令计算并保存每一个学生的平均成绩。

平均成绩计算公式:(A*2+B+C/2)/3.5,即将语文成绩A乘以权重2、英语成绩C除以权重2后,与数学成绩B一起求和,再计算该生的平均成绩。

要求避免溢出。

提示:使用循环程序结构,注意寻址方式的灵活使用。

把小数3.5转换成分数后再运算避免使用浮点数指令。

5、功能四:将功能二查到的学生的平均成绩进行等级判断,并显示判断结果。

(1)平均成绩等级显示方式:若平均成绩大于等于90分,显示“A”;大于等于80分,显示“B”;大于等于70分,显示“C”;大于等于60分,显示“D”;小于60分,显示“F”。

提示:使用分支程序结构,采用2号DOS系统功能调用显示结果。

(2)使用转移指令回到“功能一(1)”处(提示并输入姓名)。

6、思考与选做功能
(1)对输入的姓名进行合法性检查,比如:是否存在大小写字母之外的字符,等等;若存在非法的输入情形,则提示之后重新输入。

(2)对BUF中预先定义的课程成绩表中的所有成绩项进行合法性检查,判断是否符合实际(如超过100分等),不符合则提示并退出程序。

预先定义的学生姓名中,如果有重名如何处理?
(3)除了显示平均成绩的等级外,还将平均成绩同时显示。

(4)由于有些课程体系中,成绩的满分可能会达到300分,此时,成绩项的定义必须采用字类型,那么,如何改造程序呢?采用数据结构来定义BUF存储区是否会更好?
上述任务中,重要操作环节(纳入到学生自己写的实验步骤中)提示:。

相关文档
最新文档