1、南邮微机原理实验报告资料 微型计算机原理与接口技术上机实验 学 院: 电子科学与工程 专 业: 电磁场与无线技术 姓 名: 陈秀慧 课 程 号: B0300062S 学 号: B14020604 任课老师: 欧晓鸥 2016年 3 月 21日一、实验目的 熟悉第四章汇编语言程序设计中简化段定义格式,汇编语言循环结构的实现,DOS功能的调用等功能,以及算术运算程序设计中字符串处理程序设计中内容的显示,十六进制ASCII码与各数值的转化,比较搜索等命令。二、实验任务1.在微型计算机上用汇编语言编程完成实验内容所规定的实验;2.记录源代码和程序调试过程;3.完成实验报告。三、主要仪器设备硬件:微型计
2、算机软件:未来汇编四、实验内容上机题1.显示5行HELLO源程序:.486DATA SEGMENT USE16MESG DB HELLO DB 0,0,0DATA ENDSCODE SEGMENT USE16 ASSUME CS:CODE,DS:DATABEG: MOV AX,DATA MOV DS,AX MOV ES,AX MOV CX,5LL1: MOV MESG+5,0DH MOV MESG+6,0AH MOV MESG+7,$ CALL DISP MOV MESG+5,0 MOV MESG+6,0 MOV MESG+7,0 LOOP LL1 MOV AH,4CH INT 21HDISP
3、 PROC MOV AH,9 MOV DX,OFFSET MESG INT 21H RETDISP ENDPCODE ENDS END BEG运行结果:上机题2.询问用户姓名并等待输入,用户输入姓名后按回车键程序再把输入的姓名复制显示在屏幕上源程序: .586DATA SEGMENT USE16MESG DB What is your name?$MESG2 DB ?(Y/N)$BUF DB 30 DB ? DB 30 DUP(?)DATA ENDSCODE SEGMENT USE16 ASSUME CS:CODE,DS:DATABEG: MOV AX,DATA MOV DS,AXAGAIN:
4、MOV AH,9 MOV DX,OFFSET MESG INT 21H MOV AH,0AH MOV DX,OFFSET BUF INT 21H MOV AH,2 MOV DL,0AH INT 21H MOV BL,BUF+1 MOV BH,0 MOV SI,OFFSET BUF+2 MOV BYTE PTR BX+SI,$ MOV AH,2 MOV DL,0AH INT 21H MOV AH,9 MOV DX,OFFSET BUF+2 INT 21H MOV AH,9 MOV DX,OFFSET MESG2 INT 21H MOV AH,1 INT 21H CMP AL,Y JNE AGAI
5、N MOV AH,4CH INT 21HCODE ENDS END BEG运行结果:上机题3.从键盘输入的一位十六进制ASCII码二进制数显示源程序:DATA SEGMENT USE16MESG DB Please Enter!,0DH,0AH,$DATA ENDSCODE SEGMENT USE16 ASSUME CS:CODE,DS:DATABEG: MOV AX,DATA MOV DS,AX MOV AH,9 MOV DX,OFFSET MESG INT 21H MOV AH,1 INT 21H CMP AL,3AH JC NEXT1 SUB AL,7HNEXT1:SUB AL,30H
6、MOV BL,AL MOV AH,2 MOV DL,= INT 21H CALL DISP MOV AH,2 MOV DL,B INT 21HEXIT:MOV AH,4CH INT 21HDISP PROC MOV CX,8LAST:MOV DL,0 RCL BL,1 JNC NEXT2 MOV DL,1NEXT2:MOV AH,2 INT 21H LOOP LAST RETDISP ENDPCODE ENDS END BEG运行结果:上机题4.字符串比较比较从键盘输入的字符串STR1,和数据段中定义的字符串STR2是否相等。若相等,则置FLAG单元为Y,不相等则置为N。 源程序:.586DA
7、TA SEGMENT USE16STR1 DB 30,?,30 DUP(?)FLAG DB NDATA ENDSEXTRA SEGMENT USE16STR2 DB WELCOMECOUNT EQU $-STR2EXTRA ENDSCODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA,ES:EXTRABEG: MOV AX,DATA MOV DS,AX MOV AX,EXTRA MOV ES,AX MOV CX,COUNT MOV AH,0AH MOV DX,OFFSET STR1 INT 21H MOV CL,STR1+1 MOV CH,0 CMP CX,COU
8、NT JNZ EXIT MOV SI,OFFSET STR1+2 MOV DI,OFFSET STR2 CLDLOAD:REPE CMPSB JNZ EXIT MOV FLAG,YEXIT: MOV AH,2 MOV DL,0AH INT 21H MOV AH,09H MOV DX,OFFSET FLAG MOV AH,4CH INT 21HCODE ENDS END BEG运行结果:上机题5.数据查找设从BUF单元开始,存有一字符串,找出其中ASCII码最小和最大的字符,并送屏幕显示。 源程序:.586DATA SEGMENT USE16BUF DB DLSIEFLIEFAWOKFADLCO
9、UNT EQU $-BUFMAX DB MAX=,?,0DH,0AH DB $MIN DB MIN=,? DB $DATA ENDSCODE SEGMENT USE16 ASSUME CS:CODE,DS:DATABEG: MOV AX,DATA MOV DS,AX MOV AL,BUF MOV MAX+4,AL MOV MIN+4,AL MOV BX,OFFSET BUF+1 MOV CX,COUNT-1LAST:MOV AL,BX CMP AL,MAX+4 JNA LESS MOV MAX+4,ALLESS:CMP AL,MIN+4 JNC NEXT MOV MIN+4,ALNEXT:IN
10、C BX LOOP LAST MOV AH,9 MOV DX,OFFSET MAX INT 21H MOV AH,9 MOV DX,OFFSET MIN INT 21H MOV AH,4CH INT 21HCODE ENDS END BEG运行结果:上机题6.字符串中关键字符的搜索假设从STRING单元开始有一字符串,从键盘输入一个关键字符,查找字符串中是否存在输入的关键字符,将搜索到的关键字符的个数存放在内存NUM单元,并将每一个搜索到的关键字符在字符串中的位置信息存放到POINTER开始的内存单元。源程序:.586DISP MACRO VAR MOV AH,9 MOV DX,OFFSET
11、VAR INT 21H ENDMDATA SEGMENT USE16STRING DB BASIC FORTRAN_77 C+ FOXPRO JAVALENS EQU $-STRINGPOINTER DW LENS DUP(0)FLAG DB 0MESGY DB 0DH,0AH,-Found!$MESGN DB 0DH,0AH,-Not Found!$DATA ENDSCODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA,ES:DATABEG: MOV AX,DATA MOV DS,AX MOV ES,AX MOV AH,1 INT 21H MOV BX,OFFS
12、ET POINTER MOV DI,OFFSET STRING MOV CX,LENS CLDAGA: REPNE SCASB JNZ NEXT MOV FLAG,1 MOV SI,DI DEC SI MOV BX,SI ADD BX,2 JMP AGANEXT:CMP FLAG,1 JZ FOUNDNOFOUND:DISP MESGN JMP EXITFOUND:DISP MESGYEXIT: MOV AH,4CH INT 21HCODE ENDS END BEGCODE ENDS END BEG运行结果:五、实验思考题字符串比较中显示比较的结果:FLAG DB N EXIT: MOV AH
13、,2 MOV DL,0AH INT 21H MOV AH,09H MOV DX,OFFSET FLAG但是发现键入字符串中会多出Y或者N输入正确出Y错误为N,后来发现是FLAG的显示结果与键入字符串连在了一起不方便观察故加入换行符$修改为:FLAG DB N$显示结果:六、实验小结通过该上机实验,掌握了汇编语言程序设计的基本过程及其各阶段的基本任务,了解其生成过程及其相关的技术对课本上的知识有了更深的理解,课本上的知识是机械的,表面的。通过把书上例题的程序段在计算机上实现,把原来以为很深奥的书本知识变的更为简单,对那些本来很陌生的言语有了更深的理解,知道和理解了题干要求的指标在计算机中是怎样执行的,对这门课程在实践中的应用有深刻的理解。七、教师评阅 日期:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1