微机原理:顺序、分支、循环、子程序设计
- 格式:docx
- 大小:798.77 KB
- 文档页数:19
《微机原理与汇编语言》课程教学大纲课程代码:030731004课程英文名称:Computer Principles and Assembly Language课程总学时: 56 讲课: 44 实验:12适用专业:电子信息科学与技术大纲编写(修订)时间:2010一、大纲使用说明(一)、课程地位及教学目标本课程是电子信息科学与技术专业的必修的专业基础课,主要任务是使学生掌握8088/8086系列汇编程序设计和PC机硬件原理知识,并具有一定的应用能力。
(二)、知识,能力及技能方面的基本要求通过本课程学习,要求学生从理论上和实践上掌握计算机的基本组成、工作原理、硬件的连接等内容,会编写较简单的汇编语言程序,并能利用PC总线进行I/O扩展及编程,建立微机系统的整体概念,使学生具有应用微机系统软硬件开发的初步能力,为后续课程单片机、数字系统设计、ARM等打下理论基础。
(三)、实施说明由于本课程是主要专业基础课,对先修课基础要求较高,在讲授具体内容时,应注重基础原理内容和实际应用介绍,使学生在掌握基本原理的基础上,具有一定解决实际问题的能力。
要提高学生的基本素质和应用能力,必须改变传统的教学手段。
要利用多媒体授课;增加自学讨论部分,使学生从被动吸收知识的状态下,转化到主动索取知识的状态中来。
同时,应不断增加新知识。
总学时:56学时;讲课:44学时;实验:12学时。
(四)、对习题,实验,实践环节的要求本大纲立足于实施素质教育为目标培养的。
习题从教材中选取,按时交作业,编程习题尽量上机验证。
实验强调应用性,学生应独立完成,实验前预习实验内容。
(五)、对先修课程的要求1.计算机导论课程中的计算机数的编码,二、十六进制,BCD,ASCII码;2.数字电子技术课程中的逻辑电路基础。
(六)、考核方式及成绩评定方式1.考核方式:考试。
2.考试方法:闭卷。
3.课程总成绩:最终理论考试与平时考核(包括实验、期中考试、作业、出勤、提问等)的总和。
微机原理 课程设计一、课程目标知识目标:1. 让学生理解微机的基本原理和结构,掌握微处理器的工作机制。
2. 使学生掌握汇编语言的基本指令,能够阅读和编写简单的汇编程序。
3. 帮助学生了解微机系统中内存、I/O设备的基本原理及其与CPU的交互方式。
技能目标:1. 培养学生运用汇编语言进行程序设计的能力,能够实现基本的输入输出、逻辑判断和循环等操作。
2. 培养学生分析和解决微机系统常见问题的能力,如调试程序、处理硬件故障等。
3. 提高学生动手实践能力,通过课程设计项目,使学生能够独立完成一个简单的微机系统设计与实现。
情感态度价值观目标:1. 培养学生对微机原理及计算机科学的兴趣,激发他们探索精神和技术创新意识。
2. 培养学生团队协作精神,学会与他人共同分析问题、解决问题,提高沟通能力。
3. 引导学生认识到微机技术在国家经济发展和国防建设中的重要作用,增强学生的社会责任感和使命感。
课程性质:本课程为理论与实践相结合的课程,注重培养学生的实际操作能力和实际应用能力。
学生特点:学生已具备一定的电子技术和计算机基础知识,对微机原理有一定了解,但缺乏实践经验。
教学要求:教师需结合课程性质、学生特点,采用案例教学、项目驱动等教学方法,引导学生主动学习,提高学生的实践能力和综合素质。
在教学过程中,注重分解课程目标,确保学生能够达到预定的学习成果。
二、教学内容1. 微机原理概述:介绍微机的发展历程、基本结构及工作原理,重点讲解CPU、内存、I/O设备等核心组件的作用和相互关系。
相关教材章节:第一章 微机原理概述2. 汇编语言基础:讲解汇编语言的基本概念、语法和指令系统,使学生掌握汇编程序的编写和调试方法。
相关教材章节:第二章 汇编语言基础3. 微机系统编程:学习微机系统中的程序设计方法,包括顺序程序设计、分支程序设计、循环程序设计等。
相关教材章节:第三章 微机系统编程4. 内存与I/O设备:介绍内存管理、I/O设备控制原理,分析微机系统中内存、I/O设备的访问方法。
南通大学计算机科学与技术学院微机原理实验报告书班级:智控151学号:***********名:***南通大学计算机类课程实验报告南通大学计算机科学与技术学院微机原理实验报告书班级:智控151学号:1512042022姓名:王建棋南通大学计算机类课程实验报告六、实验结果<一><二>七、实验存在问题和解决办法程序一:检查发现第16行的“ADD AL,20H”将数字0写成了大写字母O,排除错误后可正常运行。
字符串后忘了加$,导致转换为小写字母后出现如下乱码:字符串后加结束符$后乱码消除。
程序二:分析表明第28行“CMP BL,0FFH”中FFH前要加0八、实验心得和建议南通大学计算机科学与技术学院微机原理实验报告书班级:智控151学号:1512042022姓名:王建棋南通大学计算机类课程实验报告ADD AL,30HMOV DL,ALMOV AH,2INT 21HMOV AX,4C00HINT 21HCODE ENDSEND START(如不够,请另附纸)六、实验结果七、实验存在问题和解决办法分析表明错误原因如下:(1)O写成0;(2)相对寻址只限于用SI、DI、BX、BP,而程序中却用了其它寄存器。
修改后仍有错误如下:错误原因:使用“INC BYTE PTR[BX+2]”忘了加BYTE PTR修改后仍得不到正确结果,错误如下:错误原因:“CMP [DI],'0'”应改成“CMP BYTE PTR[DI],'0'”错误全部修改后得到所要的结果八、实验心得和建议南通大学计算机科学与技术学院微机原理实验报告书班级:智控151学号:1512042022姓名:王建棋南通大学计算机类课程实验报告MOV AX,4C00HINT 21HCODE ENDSEND START(如不够,请另附纸)六、实验结果七、实验存在问题和解决办法出错原因:(1)DEC,DW 是保留字;(2)“MOV CL,10000”中10000超过范围CL的最大范围。
微机原理与接口技术实验讲义物理与电子工程学院罗长更显示程序实验 (3)数据传送实验 (4)运算类程序实验 (6)分支程序设计实验 (14)循环程序设计实验 (16)综合程序设计实验 (18)SHR AL,4图1CMP AL,0AH ;是否是A以上的数JB C2ADD AL,07HC2: ADD AL,30HMOV DL,AL ;显示字符MOV AH,02HINT 21HMOV AL,DS:[DI]AND AL,0FH ;取低4位CMP AL,0AHJB C3ADD AL,07HC3: ADD AL,30HMOV DL,AL ;显示字符MOV AH,02HINT 21HMOV AX,4C00H ;返回DOSINT 21HCODE E NDSEND START数据传送实验END START将程序主体部分的寄存器间接寻址方式改为相对寻址方式,则如下所示:MOV BX,0MOV CX,LENNEXT: MOV AL,MSR[BX]MOV ES:MSD[BX],ALINC BXLOOP NEXT运算类程序实验实验目的(1) 掌握运算类指令编程及调试方法。
(2) 掌握运算类指令对各状态标志位的影响及测试方法。
实验内容及说明80x86指令系统提供了实现加、减、乘、除运算的基本指令,可对表1所示的数据类型进行算术运算。
表11.二进制双精度加法运算本实验要求计算X+Y=Z,将结果Z输出到屏幕,其中X=001565A0H,Y=0021B79EH。
实验利用累加器AX,先求低十六位和,并存入低址存储单元,后求高16位和,再存入高址存储单元。
由于低位和可能向高位有进位,因而高位字相加语句需用ADC指令,则低位相加有进位时,CF=1,高位字相加时,同时加上CF中的1。
在80386以上微机中可以直接使用32位寄存器和32位加法指令完成本实验的功能。
2.十进制数的BCD码减法运算本实验要求计算X-Y=Z,其中,X、Y、Z为BCD码,其中X=0400H,Y=0102H。
实验一系统操作及程序调试举例1.实验目的学习并掌握实验系统的基本操作,为以后的实验打下基础。
2.实验设备DICE-8086B实验系统一台3.实验准备工作系统一经连好,检查无误后,就可以通电运行。
系统提供两种启动方式,即:系统自动完成后,显示器上会显示“>”提示符,等待键入操作命令。
4.实验内容及步骤(1)系统操作练习(一)要求:从3500内存单元开始建立0~15共16个数据。
程序流程图如下:实验步骤①输入与修改:在“﹥”提示符下键入A2000,此时显示器上将会显示程序的段地址CS和偏移地址IP(=2000H),接着就可以在光标处输入程序。
注:在输入过程中,若发现本行有错误,则可以按“ ”键删除并重新输入;若回车后系统提示“ERROR!”,则要在原地址指针处重新正确输入。
输入程序后可通过反汇编查看程序。
(U操作)②程序运行:在DICE-8086B实验系统上,程序的运行方式有单步、连续和断点运行几种方式。
可参考(T操作,G操作,GB操作等)③内存单元的修改与显示:用(D操作)可显示内存单元的内容,用(E操作)可修改内存单元的内容。
(分别参考前)。
④运行程序观察从3500H单元开始连续存放的16个数据为多少?任意修改AX的值,再运行程序,显示运行结果是否正确?流程图及参考程序如下:地址机器码助记符注释2000 BF 3500 MOV DI,3500 ;设数据区首址2003 B9 0010 MOV CX,0010 ;字节数送CX2006 B8 0000 MOV AX,00002009 9E SAHF200A 88 05 MOV B[DI],AL ;写入一字节200C 47 INC DI ;修改地址指针200D 40 INC AX ;修改数据200E 27 DAA ;十进制调整200F E2 F9 LOOP 200A ;未填完转移2011 CD 00 INT(2)系统操作练习(二)要求:将内存3500单元开始的0~15共16个数传递到3600单元开始的数据区中。
《微机原理》课程教学大纲一、课程名称(中英文)中文名称:微机原理英文名称:Principle of Microcomputer二、课程编码及性质课程编码:0800305课程性质:专业核心课,必修课三、学时与学分总学时:32学分:2.0四、先修课程电路理论、模拟电子技术、数字电子技术、C语言及其编程五、授课对象本课程面向材料成型及控制工程专业学生与电子封装技术专业学生开设,也可以供材料科学与工程专业选修。
六、课程教学目的(对学生知识、能力、素质培养的贡献和作用)《微机原理》是材料加工工程专业学生必修专业课程之一,其教学的主要目的包括:1、通过一门理论性、实践性和实用性很强的职业技能课程,增强学生的分析问题能力、编写程序能力与动手能力。
2、深入了解单片微型计算机的原理与结构,为今后成型设备开发打下牢固的理论基础。
3、系统掌握单片机的指令系统、接口技术和一般应用开发方法,为今后设计实际的单片机应用系统打下牢固的理论基础。
4、了解微型计算机技术的发展前沿,掌握其发展特点与动向,具备研发单片机的基础与能力。
七、教学重点与难点:教学重点:1)当今计算机技术飞速发展,本课程以介绍单片微型计算机中最典型的8051为主体、以讲述单片机结构与应用为重点;2)在全面了解与掌握单片微型计算机种类及结构特点的基础上,重点学习汇编语言开发单片微型计算机技术;3)课程将重点或详细介绍新颖的流行的微型控制器及其开发方法,为同学提供更多的实践机会;4)重点学习的章节内容包括:第2章“单片机的结构和原理”(4学时)、第3章“单片机的指令系统”(4学时)、第4章“汇编语言程序设计基础”(8 学时)、第6章“单片机的定时/计数器”(8学时)。
教学难点:1)单片机原理与接口技术课程是实践性极强的课程之一,本课程将密切结合学生的生产实习、课程设置、实验课等实践环节,培养学生对单片微型计算机的认识及设计能力,提高授课质量与效果。
2)通过本课程学习,要求掌握单片微型计算机中的工作原理、结构特点、应用范围、控制方法等,具备合理开发单片微型计算机实践的能力。
[公司名称]实验二顺序、分支、循环、子程序设计微机原理上机实验[作者姓名][日期]预习报告零、相关知识1,LEA指令和MOV指令的区别一、顺序结构计算m*n-w,最终结果保存在AX其中m=12, n=12, w=4最终结果为AX=008CH=140Dname "sequence strcture"org 100hMOV AX, 1000HMOV DS, AXMOV SI, 1000HMOV [SI], 12MOV [SI+1], 12MOV [SI+2], 4MOV AL, [SI]MOV BL, [SI+1]MUL BLMOV BX, 0MOV BL, [SI+2]SUB AX, BXHLT二、分支结构在DS数据段偏移地址为DATA开始的顺序80个单元中,存放着某班80个同学的微机原理考试成绩。
现欲编程序统计>=90、89~70、69~60和<60分的人数,并将统计的结果存放在当前数据段偏移地址为BUFFER的顺序单元中name “branch structure”START:MOV DX, 0000HMOV BX, 0000HMOV CX, 80LEA SI, DATALEA DI, BUFFERGOON:MOV AL, [SI]CMP AL, 90JC NEXT3INC DHJMP STORNEXT3:CMP AL, 70JC NEXT5INC DLJMP STORNEXT5:CMP AL, 60JC NEXT7INC BHJMP STORNEXT7:INC BLSTOR:INC SILOOP GOONMOV [DI], DHMOV [DI+1], DLMOV [DI+2], BHMOV [DI+3], BLHLT三、循环结构在DS所决定的数据段,从偏移地址BUFFER开始顺序存放100个无符号16位数。
现欲编程序将这100个数按大小顺序排序(以下程序使用的是快速排序算法,也可以使用冒泡排序,嵌套两层循环)name “circle structure”LEA DI, BUFFERMOV BL, 99NEXT0:MOV SI, DIMOV CL, BLNEXT3:MOV AX, [SI]ADD, SI, 2CMP AX, [SI]JNC NEXT 5MOV DX, [SI]MOV [SI-2], DXMOV [SI], AXNEXT5:DEC CLJNZ NEXT3DEC BLJNZ NEXT0HLT四、子程序编写程序,完成将一组BCD数转换成16位二进制数。
(BCD数转换成16位二进制数用子程序实现)下面提供三种方案,分别用寄存器、储存器和堆栈传递参数①使用寄存器传递参数name "text subprogram using register"STACK SEGMENT STACKDB 256 DUP(?)STACK ENDSDATA SEGMENTBCD1 DB 07H, 06H, 07H, 02H, 03HLENG1 DB 5RESULT DW ?DATA ENDSCODEM SEGMENTASSUME CS:CODEM, DS:DATA, SS:STACKSTART:MOV AX, DATAMOV DS, AXLEA SI, BCD1MOV CX, LENG1CALL FAR PTR BCD-16BMOV RESULT, DXMOV AH, 4CHINT 21HCODEM ENDSCODES SEGMENTASSUME CS:CODES;the part of subprogramBCD-16B PROC FARPUSH BXPUSH AXADD SI, CXMOV DX, 0BCDL:DEC SIPUSH CXMOV AL, [SI]AND AL, 0FHCBWMOV BX, AXMOV AX, DXMOV CX, 10MUL CXMOV DX, AXADD DX, BXPOP CXLOOP BCDLPOP AXPOP BXRETBCD-16B ENDPCODES ENDSEND START②使用储存器传递参数name "text subprogram using store" STACK SEGMENT STACKDB 256 DUP(?)STACK ENDSDATA SEGMENTBCD1 DB 07H, 06H, 07H, 02H, 03HADSEG DW ?ADOFST DW ?LENG1 DW ?RESULT DW ?DATA ENDSCODEM SEGMENTASSUME CS:CODEM, DS:DATA, SS:STACK START:MOV AX, DATAMOV DS, AX;entrance parameterMOV AX, SEG BCD1MOV ADSEG, AXMOV AX, OFFSET BCD1MOV ADOFST, AXMOV LENG1, 5CALL FAR PTR BCD-16BMOV AH, 4CHINT 21HCODEM ENDSCODES SEGMENTASSUME CS:CODES;the part of subprogramBCD-16B PROC FARPUSH BXPUSH AXPUSH SIPUSH DSMOV DS, ADSEGMOV SI, ADOFSTMOV CX, LENG1XOR DX, DXADD SI, CXBCDL:DEC SIPUSH CXMOV AL, [SI]AND AL, 0FHCBWMOV BX, AXMOV AX, DXMOV CX, 10MUL CXMOV DX, AXADD DX, BXPOP CXLOOP BCDLPOP AXPOP BXPOP DSPOP SIRETBCD-16B ENDPCODES ENDSEND START③使用堆栈传递参数name "text subprogram using stack"STACK SEGMENT STACKDB 256 DUP(?)STACK ENDSDATA SEGMENTBCD1 DB 07H, 06H, 07H, 02H, 03HLENG1 DW ?RESULT DW ?DATA ENDSCODEM SEGMENTASSUME CS:CODEM, DS:DATA, SS:STACK START:MOV AX, DATAMOV DS, AX;pushPUSH DSLEA SI, BCD1PUSH SIMOV CX, LENG1PUSH CXCALL FAR PTR BCD-16BPOP DXMOV RESULT, DXMOV AH, 4CHINT 21HCODEM ENDSCODES SEGMENTASSUME CS:CODES;the part of subprogramBCD-16B PROC FARPUSH BPMOV BP, SPPUSH DSPUSH SIPUSH CXPUSH BXPUSH AXMOV CX, [BP]+6MOV SI, [BP]+8MOV DS, [BP]+10ADD SI, CXMOV DX, 0BCDL:DEC SIPUSH CXMOV AL, [SI]AND AL, 0FHCBWMOV BX, AXMOV AX, DXMOV CX, 10MUL CXMOV DX, AXADD DX, BXPOP CXLOOP BCDLPOP AXPOP BXPOP CXPOP DSPOP SIPOP BPRET ABCD-16B ENDP CODES ENDSEND START正式实验报告一、实验要求1.教材P74例1。
m=6,n=4,w=7。
结果Q也放在内存中。
2.教材P75例3。
3.从键盘上输入1个数,判断其奇偶性,如果是奇数,屏幕上显示”It is odd”,否则显示”It is even”。
4.从键盘上输入N个字符(N<16),求这N个字符中’A’的个数,并将’A’的个数显示在屏幕上。
5. 已知BUF1中有N1个按从小到大的顺序排列的互不相等的无符号数,BUF2中有N2个从小到大的顺序排列的互不相等的无符号数。
编写程序将BUF1和BUF2中的数合并到BUF3中,使在BUF3中存放的数互不相等且按从小到大的顺序排列。
6. 需要预习报告。
二、实验目的学习顺序、分支、循环结构以及子程序的编程设计。
三、实验过程(调试分析)3.1 textbook page74-1最后的计算结果应该为AX=6*4-7=17D=11Horg 100hMOV AX, 1000HMOV DS, AXMOV SI, 1000HMOV [SI], 6MOV [SI+1], 4MOV [SI+2], 7MOV AL, [SI]MOV BL, [SI+1]MUL BL; 6*4-->ALMOV BX, 0MOV BL, [SI+2]SUB AX, BXHLT3.2 textbook page75-3用"0","1","C","D","E","O","P","Q","R","S","$"的ASCII值代表10位学生的分数,分别为48/49/67/68/69/79/80/81/82/83分name "textbook page75-3"data segmentSCORES DB "0","1","C","D","E","O","P","Q","R","S","$";48/49/67/68/69/79/80/81/82/83endscode segmentstart:ASSUME DS:DATA, CS:CODEMOV AX, DATAMOV DS, AXMOV CX, 10MOV SI, OFFSET SCORES;<--> MOV SI, OFFSET SCORES MOV DI, 0000HGOON:MOV AL, [SI]CMP AL, 90JC NEXT3INC DHJMP STORNEXT3:CMP AL, 70JC NEXT5INC DLJMP STORNEXT5:CMP AL, 60JC NEXT7INC BHJMP STORNEXT7:INC BLSTOR:INC SILOOP GOONMOV [DI], DHMOV [DI+1], DLMOV [DI+2], BHMOV [DI+3], BLendsend start由结果可知:DH=0,DL=5,BH=3,BL=2说明90以上0人,89~70有5人,69~60有3人,小于60有2人3.3 experiment 2-3name "experiment 2-3"data segmentHEX1 DB 0AH,0DH,"It is even$"HEX2 DB 0AH,0DH,"It is odd$";0AH,0DH换行+回车endscode segmentstart:ASSUME DS:DATAMOV AX, DATAMOV DS, AX;read from the keyboardMOV CX, 16DO:MOV AH, 01HINT 21HCMP AL, 13JZ NEXT0MOV BL, ALLOOP DONEXT0:SUB BL, 48MOV AL, BLMOV BL, 2DIV BLCMP AH, 1JNZ NEXT1JZ NEXT2NEXT1:LEA DX, HEX1MOV AH, 09HINT 21HHLTNEXT2:LEA DX, HEX2MOV AH, 09HINT 21H endsend start若输入的为偶数若输入的为奇数3.4 experiment 2-4 name "experiment 2-4" data segmentHEX DB 16 DUP(0) endscode segmentstart:ASSUME DS:DATAMOV AX, DATAMOV DS, AXMOV CX, 16;read from keyboard read:CMP CX, 1JZ STOPMOV AH, 01HINT 21HCMP AL, 65JZ countCMP AL, 13JZ STOPLOOP read;count 'A' characterscount:INC BLLOOP readSTOP:MOV AH, 02HMOV DL, 0AHINT 21H; 打印换行MOV DL, 0DHINT 21H;打印回车ADD BL, 48MOV DL, BLINT 21Hendsend start3.5 experiment 2-5①冒泡排序,没有在BUF3中除去重复的字符此题设两个字符串为BUF1 = ”ACEGIK”BUF2 = ”BDFJLHMN”name "experiment 2-5";此程序不需要压入堆栈保护的数据data segmentBUF1 DB "ACEGIK$"BUF2 DB "BDFJLHMN$"BUF3 DB 14 DUP(0)endsstack segmentDB 256 DUP(0)endscode segmentstart:ASSUME DS:DATA, CS:CODEL, SS:STACKMOV AX, DATAMOV DS, AXLEA BX, BUF1LEA SI, BUF2LEA DI, BUF3CALL removeCALL reorder;段内转移,若段间转移,测试一下格式;print on the screenLEA DX, BUF3MOV AH, 09HINT 21HHLTremove proc nearMOV CX, 6DO1:MOV AX, [BX]MOV [DI], AXINC BXINC DILOOP DO1MOV CX, 8DO2:MOV AX, [SI]MOV [DI], AXINC SIINC DILOOP DO2RETremove endpreorder proc nearMOV CX, 13;注意是13,思考清楚JUDGE1:LEA DI, BUF3PUSH CXMOV CX, 13JUDGE2:MOV AL, [DI]MOV BL, [DI+1]CMP AL, BLJC NEXT1MOV [DI+1], ALMOV [DI], BLNEXT1:INC DILOOP JUDGE2POP CXLOOP JUDGE1RETreorder endpend start②采用串的合并的算法,可以除去BUF3中重复的字符name "experiment 2-5plus"data segmentBUF1 DB "ACEGIK$"BUF2 DB "BCFHILMN$"BUF3 DB 14 DUP(0)endsstack segmentDB 256 DUP(0)endscode segmentstart:ASSUME DS:DATA, CS:CODEL, SS:STACKMOV AX, DATAMOV DS, AXLEA BX, BUF1LEA SI, BUF2LEA DI, BUF3NEXT0:MOV AX, [BX]MOV DX, [SI]CMP AL, DL; 写成CMP AX, DX会出错JC NEXT1JZ NEXT1_5JA NEXT2NEXT1:MOV [DI], AXINC DIINC BXJMP NEXT3NEXT1_5:MOV [DI], AXINC BXINC SIINC DIJMP NEXT3NEXT2:MOV [DI], DXINC DIINC SIJMP NEXT3NEXT3:CMP [BX+1], 36JZ NEXT5CMP [SI+1], 36JZ NEXT6LOOP NEXT0NEXT5:INC SICMP [SI], 36JZ PRINTMOV DX, [SI]MOV [DI], DXINC DILOOP NEXT5NEXT6:INC BXCMP [BX], 36JZ PRINTMOV AX, [BX]MOV [DI], AXINC DILOOP NEXT6。