中国石油大学微机原理期末考试微机编程题总结WORD_第1页
中国石油大学微机原理期末考试微机编程题总结WORD_第2页
中国石油大学微机原理期末考试微机编程题总结WORD_第3页
中国石油大学微机原理期末考试微机编程题总结WORD_第4页
中国石油大学微机原理期末考试微机编程题总结WORD_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1已知在数据段中定义变量VAL1,其中装入了100个字节的数据;VAL2为数据段中定义的可以存储100个字节的变量。要求将VAL1中的内容取负(即,正数变负数,负数变正数,零不变)后传送到VAL2中。画出程序流程图,并编写完整的8086汇编程序。数据段可采用以下定义形式:DATASEGMENTVAL1DB 100 DUP(?)VAL2DB 100 DUP(?)DATA ENDS答:流程图:(2分) 程序(4分):结构1分,初始化1分,循环体1分,DOS接口1分。每部分可按0.5分进行得扣分。CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DATAMOV

2、DS,AXMOVES,AXCLDMOVSI,OFFSET VAL1;LEA SI,VAL1MOVDI,OFFSET VAL2;LEA DI,VAL2MOVCX,100LP:NEGSIMOVSBLOOP LPMOVAH,4CHINT21HCODEENDSENDSTART注:循环体内也可以使用减法指令、MOV指令、INC指令等。只要完成取负及数据传送即可。与DOS接口也可采用子程序结构。2设在内存缓冲区中有一数据块STRDATA,存放着30 个字节型补码数据。要求画出程序流程框图,编写完整的汇编语言源程序,找出其中的最大数,存入RESULT单元中,并在关键语句后加适当注释。答:DSEG SEGME

3、NTSTRDATA DB 30 DUP(?) ;定义数据串RESULT DB DUP(?)DSEG ENDSCSEG SEGMENT ASSUME CS:CODE, DS:DATASTART: MOV AX,DATAMOV DS,AXMOV BX, OFFSET STRDATA ;数据串首址BXMOV AL, BXMOV CX, 29 ;数据长度CXL1: INC BX ;地址指针加1CMP AL, BX ;和当前数比较JGE L2 ;当前数大MOV AL, BX ;当前数为最大数L2: DEC CX ;数据串长度减1JNZ L1 ;串未完,继续MOV RESULT, AL ;保存最大数在RE

4、SULTMOV AH,4CHINT 21HCSEG ENDSEND START三、(10 分)设在内存缓冲区中有一数据块BLOCK,存放着50 个字节型数据。要求画出程序流程框图,编写完整的汇编语言源程序,统计出其中偶数的个数,结果存入RESULT 单元中。【答案】程序流程框图 (4分); 完整程序 (6 分);DATA SEGMENTBLOCK DB 50 DUP(?)RESULT DB ?DATA ENDS (1 分)CODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX,DATAMOV DS,AXMOV BX, OFFSET BLOCKMOV C

5、X, 50MOV AH,0 (1 分)L1: MOV AL, BXTEST AL,01H (1 分)JNZ L2INC AHL2: INC BXDEC CXJNZ L1 (1 分)MOV RESULT, AH (1 分)MOV AH,4CHINT 21HCODE ENDSEND START (1 分)四、(10分)设在内存缓冲区中有一数据块DATA,存放着20个带符号的字节型数据,对这20个数据进行以下处理:去掉其中的最大值,然后对剩余的19个数求和,并将和送入SUM单元。要求画出程序流程框图,编写完整的汇编语言源程序。注:不考虑求和是否溢出。DATA SEGMENTDATA DB 20 DU

6、P(?) SUMDB 0DATAENDS (1分)结束数据块DATA定义BXAL数据块首地址BX数据块长度CX初值0送SUMBXALBX+1BXSUM=SUM-ALALBX?20个数判断完了?NYNY开始SUM=SUM+BXCODESEGMENTASSUME CS:CODE, DS:DATASTART:MOV AX,DATA MOV DS,AX MOVBX, OFFSET DATA MOV CX, 20 MOVAL, BX (1分) MOV AH,0 L1: ADD AH,BX (1分)CMP AL,BX JG L2 (或JGE L2) (1分)MOV AL,BXL2:INCBX DECCX

7、JNZL1 (1分)SUB AH,AL MOV SUM,AH (1分) MOV AH,4CHINT 21HCODEENDSENDSTART 开始初始化设置循环次数CX=100 设置地址指针BX设置优秀和不及格的计数器DH,DL分数=90?BUF取数据分数90分并计数的分支1分,判断90分并计数2分,判断60分并计数1分,循环控制1分,送结果1分。开始初始化设置循环次数CX=50设置地址指针DI,SI,BX根据SI和BX从BUF中取出两个数据CX=0?结束YL+1NL+1对取出的两个数据进行加法求和运算根据DI将加法求和运算的结果送入到SUM中地址指针DI+1,SI+1, BX-1循环次数CX-

8、1六、已知数据段中从BUF开始的区域中存放着100个字节型无符号数据,编程将第一个数与第100个数求和,第二个数与第99个数求和,第三个数与第98个数求和依次类推,求得的50个和(不考虑和是否有进位)依次存放于数据段中从SUM开始的区域中。要求画出程序流程框图,并写出完整的汇编语言源程序三、编程题(10分)DATA SEGMENTBUF DB 100DUP(?);SUM DB 50DUP(?);DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV CX,50MOV DI,OFFSET SUMMOV SI

9、,OFFSET BUFMOV BX,SIADD BX,99AGAIN:MOV AL,SIADD AL,BXMOV DI,ALINC DIINC SIDEC BXLOOP AGAINMOV AH,4CHINT 21HCODE ENDSEND START评分标准:(1)流程图3分:其中初始化1分,取数求和1分,循环控制1分。(2)源程序7分:其中数据段定义1分,分段结构、段分配1分,初始化1分,取数求和1分,结果送到SUM中1分,循环控制1分,返回DOS系统1分。八、已知数据段中从BUF开始的区域中存放着100个字节型无符号数据,编写完整的汇编语言源程序,找出BUF数组中的最大值和最小值,并将最大

10、值存放到变量MAX中,最小值存放到变量MIN中。要求:采用子程序MAXMIN实现求最大值及最小值的功能。编程题(10分)DATA SEGMENTBUF DB 100 DUP(?)MAX DB 0MIN DB 0DATA ENDS (1分)CODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS, AX MOV CX,100 LEA BX, BUF (1分) MOV DL,0 ; MAX MOV DH,0FFH; MIN (1分) CALL MAXMIN (1分) MOV MAX,DL MOV MIN,DH (1分) MOV AH,4CH INT 21H MAXMIN PROC (子程序功能正确5分) AGAI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论