微机原理及应用课程学习总结与例程分析班级:xxxxx学号:xxxxx姓名:xxxx系部:机械工程学院一、课程学习总结通过对这门课程的学习,我对8086/8088单片机有了较为深刻的认识。
课程分为理论课和实验课,在理论课上,我由浅入深的了解了微型计算机的产生和发展、微机的系统组成和基本结构、微型计算机的工作过程。
以及8086\8088单片机的内部逻辑结构、外部引脚功能、存储器、指令系统中的寻址与逻辑算术运算、微型计算机存储器接口技术、输入输出及中断、模拟量数字量的转换、定时器\计数器、微机接口技术的应用等知识。
而在实验课上,我先学习了汇编软件win-Masm的使用,明白了汇编程序从编写到执行即编程→.ASM→编译→.OBJ→连接→.EXE→加载→内存中的程序→执行的过程。
然后又学习使用了模拟仿真软件Protues和汇编语言开发编写软件Keilc51。
再通过汇编小程序、延时控制、按键控制、流水灯等几个实验,更是让我了解到了汇编语言的强大与神奇之处,也激发起了我深厚的学习兴趣也锻炼了我的动手能力。
这门课程很注重系统性,和实用性,前后关联性很强,并有大量的程序和硬件设计类的案例,使学生能够深入了解计算机的原理、结构和特点,以及如何运用这些知识来设计一个实用的微型计算机系统。
具体来说,就是掌握Intel8086/8088微型计算机系统地组成原理,熟练运用8086宏汇编语言进行程序设计,熟悉各种I/O接口芯片的配套使用技术,并通过一定的课程实验与实践,进一步提高系统设计的能力,使学生能够完成实用的微型计算机系统软件的初步设计。
同时,我也对这门《微机原理与接口技术》课程中的“接口”有了深刻的理解与认识。
首先是计算机接口技术的基本原理。
计算机系统由中央处理器(CPU)、存储器、IO系统组成,在发展的初期,CPU与各模块之间采用点对点的方式直接连接,集成电路发展之后,才出现以总线为中心的标准结构。
计算机接口技术,实现了各个外部终端与系统内存的信息传递,与指令下达。
其次是并行/串行接口技术,1)并行接口,并行接口传输速率高,一般不要求固定格式,但不适合长距离数据传输。
2)串行接口,串行通信是将数据的各个位一位一位地,通过单条1位宽传输线按顺序分时传送,即通信双方一次传输一个二进制位。
总而言之,《微机原理与接口技术》作为我们机械设计及其自动化专业的选修课程,我觉得是很切合实际的。
顺应了,机械行业机电一体化的发展要求。
在计算机技术高度发展的今天,要开发一个系统,接口技术是重要的。
同时在自动化领域微型计算机的运用更是无处不在。
所以学好这门课程显得意义重大。
(1)输入字符串“HALO BOY”执行程序后以逆序输出这个字符串。
s1 segment stack ;定义栈段s1dw 100 dup(?) ;定义栈空间为100top label word ;top指向栈顶s1 endss2 segment ;定义数据段s2s db 'HALO BOY','$' ;定义字符串sS2 endss3 segment ;定义代码段s3assume cs:s3,ds:s2,ss:s1main proc farmov ax,s1 ;栈初始化——mov ss,axlea sp,top ;——栈初始化mov ax,s2 ;数据段初始化——mov ds,ax ;——数据段初始化mov si,15l: mov dl,s[si] ;dl获取字符串s的最后一个(从零开始的第十五个字符)mov ah,2 ;调用int 21h 2号功能输出dl上的值int 21hdec si ;寄存器减一,准备获取下一个字符cmp si,0ja lmov ah,4ch ;终止int 21hmain endps3 endsend main(2).在D盘根目录建立一个文件abc.txt,第一次向文件写入“123456”六个字符,第二次增加“abcdefg”几个字符s1 segment stackdw 100h dup(?);定义栈空间为100top label words1 endss2 segment ;定义数据段s2fn db 'd:\abc.txt',0fh dw ?buff1 db '1','2','3','4','5','6','$'buff2 db 'a','b','c','d','e','f','$'s2 endss3 segment ;定义数据段s3assume cs:s3,ds:s2,ss:s3main proc far ;栈初始化mov ax,s1 ;数据段初始化mov ss,ax ;选择SS作为寄存器 lea sp,topmov ax,s2mov ds,axmov ah,3ch ;建立文件mov cx,20hlea dx,fnint 21hjc errormov fh,ax ;获取文件代号lea dx,buff1mov ah,40h ;写文件mov bx,fhmov cx,6 ;写入“abcdefg”字符 int 21hjc errorlea dx,buff2mov ah,40hmov bx,fhmov cx,6int 21hjc errormov ah,3eh ;关闭文件mov bx,fhint 21herror:exit: mov ah,4chint 21hmain endps3 endsend main2.从键盘上输入两个数,分别放到定义的x,y单元中,并求出它们的和s1 segment stackdw 100h dup(?) ;定义栈空间为100top label words1 endss2 segmenth1 db 'Please input x:','$' ;提示输入h2 db 'Please input y:','$' ;提示输入h3 db 'z=x+y:','$' ;提示输出crlf db 0dh,0ah,24h ;定义回车换行x dw ?y dw ?s2 endss3 segment ;定义数据段s3assume cs:s3,ds:s2,ss:s3main proc farmov ax,s1 ;初始化——mov ss,axlea sp,topmov ax,s2mov ds,ax ;——初始化lea dx,h1 ;int 21h 9号功能输出“提示输入x”的字符串mov ah,9int 21hxor bx,bx ;bx清零,即把bx置零InputX:mov ah,1 ;输入一个字符int 21hcmp al,0dh ;判断时候为“回车”字符jz exit1 ;如果是回车字符就跳转到exit1cmp al,30h ;和30h(即字符0的asii值)比较jl exit1 ;如果输入字符小于'0',跳转到exit1cmp al,39h ;和39h(即字符9的ascii值)比较jg exit1 ;如果输入字符大于'9',跳转到exit1sub al,30h ;al减去30h,输入字符转化成数字(从这一行开始到后面的add bx,ax为输入字符转化为数字的处理方法)cbw ;al扩充为axxchg ax,bxmov cx,10mul cxxchg ax,bxadd bx,ax ;sub al,30h开始到这一行为输入字符转化为数字的处理方法jmp InputXexit1: mov x,bx ;把输入的存于bx的放到x中lea dx,crlfmov ah,9int 21hlea dx,h2mov ah,9int 21hxor bx,bxInputY: ;和InputX类似,输入y mov ah,1int 21hcmp al,0dhjz exit2cmp al,30hjl exit2cmp al,39hjg exit2sub al,30hcbwxchg ax,bxmov cx,10mul cxxchg ax,bxadd bx,axjmp InputYexit2: mov y,bx ;把输入的存于bx的放到y中mov bx,xadd bx,y ;此时bx为两数加和lea dx,crlfmov ah,9int 21Hlea dx,h3mov ah,9int 21hxor si,si ;si清零,用作计数mov ax,bx ;把和放到ax上l4: mov cl,10 ;把和连续除以10知div clmov dl,ahmov dh,0 ;和变为零时,余数依次进栈 push dxinc simov ah,0 ;重要,不能漏写cmp al,0jnz l4l5: pop dx ;余数依次出栈add dl,30h ;余数转换为显示的余数字符 mov ah,2 ;输入余数字符int 21hdec sicmp si,0jnz l5mov ah,4chint 21Hmain endps3 endsend main。