微机原理习题答案.docx
微机原理习题答案21. 将学生的班级、姓名、学号、课程名、成绩定义为一个结构,用结构预置语句,产生5个学生的成绩登记表,编程序将成绩小于60分的学生姓名、成绩显示出来。答:STUDENT STRUCCLASS DB ? ;班级NAM DB 'ABCDE$' ;姓名NUM DB ? ;学号COURSE DB 'ABCD' ;课程SCORE DB ? ;成绩STUDENT ENDSDATA SEGMENTSTUDENT1 STUDENT <1,'XIAOA$',001,'MATH',70>STUDENT2 STUDENT <1,'XIAOB$',002,'MATH',80>STUDENT3 STUDENT <1,'XIAOC$',003,'MATH',50>STUDENT4 STUDENT <1,'XIAOD$',004,'MATH',90>STUDENT5 STUDENT <1,'XIAOE$',005,'MATH',55>DATA ENDSCODE SEGMENTASSUME CS:CODE,ds:DATASTART: MOV AX,DATAMOV DS,AXMOV CX,5 ;通过循环结构进行筛选MOV SI,0CONT: MOV AL,STUDENT1.SCORESI ;取成绩CMP AL,60JAE D1LEA DX,STUDENT1.NAMSI ;小于60则显示姓名和成绩MOV AH,9INT 21HMOV DL,' 'MOV AH,2INT 21HMOV AL,STUDENT1.SCORESI ;成绩转换为ASCII码显示 39MOV AH,0MOV BL,10DIV BLPUSH AXMOV DL,ALADD DL,30HMOV AH,2INT 21HPOP AXMOV DL,AHADD DL,30HMOV AH,2INT 21HMOV DL,0DHMOV AH,2INT 21HMOV DL,0AHINT 21HD1: ADD SI,13LOOP CONTMOV AH,4CHINT 21HCODE ENDSEND START22. 编程序统计学生的数学成绩,分别归类90分99分,80分89分,70分79分,60分69分及60分以下,并将各段的人数送入内存单元中。答:设学生人数为字节,成绩为压缩BCD码,且都是合法的。DATA SEGMENTBUFF DB XXH,.ANUM EQU $-BUFFSNUM DB 5 DUP(0) ;存放各类成绩统计结果BUFF1 DB ANUM DUP(0) ;存放60分以下成绩BUFF2 DB ANUM DUP(0) ;存放60分69分成绩BUFF3 DB ANUM DUP(0) ;存放70分79分成绩BUFF4 DB ANUM DUP(0) ;存放80分89分成绩BUFF5 DB ANUM DUP(0) ;存放90分以上成绩DATA ENDSCODE SEGMENTASSUME CS:CODE,DS: DATA,ES: DATASTART: MOV AX, DATAMOV DS,AXMOV ES,AXMOV CL,ANUM ;取学生人数MOV CH,0 40MOV BH,0MOV SI,OFFSET BUFFMOV DI,OFFSET SNUMD1: MOV AL,SICMP AL,60HJAE NEXT1MOV BL,DIMOV BUFF1BX,ALINC BYTE PTR DIJMP NEXT5NEXT1: CMP AL,69HJA NEXT2MOV BL,DI+1MOV BUFF2BX,ALINC BYTE PTR DI+1JMP NEXT5NEXT2: CMP AL,79HJA NEXT3MOV BL,DI+2MOV BUFF2BX,ALINC BYTE PTR DI+2JMP NEXT5NEXT3: CMP AL,89HJA NEXT4MOV BL,DI+3MOV BUFF3BX,ALINC BYTE PTR DI+3JMP NEXT5NEXT4: MOV BL,DI+4MOV BUFF4BX,ALINC BYTE PTR DI+4NEXT5: INC SILOOP D1MOV AH,4CHINT 21HCODE ENDSEND START23. 编制宏定义,将存储器区中一个用$结尾的字符串传送到另一个存储器区中,要求源地址、目的地址、串结尾符号可变。答:SEND MACRO SCHARS, DCHARS , FLAGLOCAL NEXT, EXIT ;LOCAL用于解决宏定义内的标号问题PUSH AX ;SCHARS源串地址,DCHARS目的串地址PUSH SI ;FLAG串结尾符号MOV SI, 0 41NEXT: MOV AL, SCHARSSIMOV DCHARSSI, ALCMP AL, FLAGJZ EXITINC SIJMP NEXTEXIT: POP SIPOP AXENDM