汇编语言及微机接口实验小结
学习汇编语言及微机原理与接口技术的课程,并通过上机实验,让我不仅巩固了以前所学到的知识,还学习到了很多书本上没有的知识,以前对于汇编语言及其应用是处于一种一知半解的状态,经过每一次的上机实验,让我越来越了解汇编语言的作用,其功能强大,让我逐渐的明白了程序运行的原理,怎样去查错、排错,如何看每一步运行的结果,每一个阶段运行的情况,怎样去了解寄存器的内容以保证程序的正确性上有了很大的提高。 通过微机接口技术的几次上机实验,加深了我对于汇编软件(MASM、LINK)、DEBUG程序调试及对汇编语言指令的熟悉,汇编语言直接描述了计算机的指令,比计算机指令容易记忆和理解。为今后对于软件系统的原理,打下了技术理论的基础,为掌握硬件系统的理论,打下了实践应用基础。
下面是个人所作实验的记录与报告:
在内存1000单元开始,建立00H~0FH~00H 31个数,要求00H~0FH数据逐渐增大,0FH~00H逐渐减小,程序从内存CS:0100H地址开始输入
MOV AX ,100H
MOV DS ,AX
MOV SI,0
MOV CL ,0FH
XOR AX,AX
PPE1: MOV [SI] ;AL
INC SI ;
INC AL
DEC CL
JNZ PPE1
MOV CX,10H
PPE2:MOV[SI],AL
INC SI
DEC AL
LOOP PPE2
INT 20H
数据块的内容:
1000:0000:00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 1000:0100:0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00
把上一程序的执行结果分几种方式传送到以下指定区域
1、 该程序从内存CS:0150H开始输入,把数据块传送到
15050H开始的存储区域中
MOV AX,1000H
MOV DS,AX
MOV SI,0
MOV DI,5050H
MOV CX,1FH
PPEA: MOV AL,[SI]
MOV [DI],AL
INC SI
INC DI
LOOP PPEA
INT 20H
结果:
1000:5050 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 1000:5060 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00
2、 用串传送指令MOVSB,把数据块传送到15150H开始的区
域,该程序从内存CS:0200H开始输入
MOV AX,100H
MOV DS,AX
MOV ES,AX
MOV SI,0
MOV DI,5150H
MOV CS,1FH
CLD
PPEB: MOVSB
LOOP PPEB
INT 20H
结果:
1000:5150 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 1000:5160 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00
3、 用重复串操作指令”REP MOVSB”把数据传送到15250H
开始的区域,该程序从CS:250H地址开始输入
MOV AX,1000H
MOV DS,AX
MOV ES,AX
MOV SI,0
MOV DI,5250H
MOV CX,1FH
CLD
REPZ
MOVSB
INT 20H
结果:
1000:5250 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 1000:5260 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00
4、 用串操作的减量工作方式,把数据传送到25050H开始
的区域,该程序从CS:0300H开始输入
MOV AX,1000H
MOV DS,AX
ADD AX,AX
MOV ES,AX
MOV SI,1EH
MOV DI,506EH
MOV CX,1FH
STD
REP MOVSB
INT 20H
结果:
2000:5050 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 2000:5060 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00
通过微机原理与接口技术的上机实验使我懂得了理论与实际操作相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实验实践相结合起来,从实践中得出结论,才能真正的提高自己的实际动手能力和独立思考能力,只有通过实验实践,才会发现在实验过程出现的各种问题,然后思考如何解决和避免错误的发生,使得实验进一步的完善,达到理解、应用和提高自身的目地。汇编语言是一门非常有深度、有内涵的学问,我现在只是初步的接触了汇编语言,并只是了解了汇编语言的表面的内容,不能因此就产生骄傲、自满的情绪,汇编语言还有其他很多我不了解、不明白的地方需要我认真的钻研和学习。
班级:
学号:
姓名:
第二篇:汇编语言实验心得
一.实验内容
1.DEBUG的启动及其基本命令的使用
2.内存操作数与寻址方式
1)利用DEBUG程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。
2)分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。
3.顺序程序设计
X、Y、Z、V均为字变量,在X、Y、Z、V字单元中存放是16位带符号数。试编写汇编语言程序完成以下功能:
①计算表达式值(V–(X*Y+Z-720))/X;
②将上述表达式运算结果整数放在SUM1单元,余数放在SUM2单元。
4.分支程序设计
1)设X,Y为字变量,假定不溢出,计算X=|X-Y|。
2)将NUM单元中的一位十六进制数(0~9,A~F),转换为对应的ASCII码值存入ASC单元。
3)已知字节变量X,编程求下列表达式
即:当x>0
当x=0
当x<0
5.循环程序设计
1)定义10个字节型带符号数,求其和。
2)在内存单元DATA中定义一个16位数,统计其16位中1的个数,存入内
存的字单元COUNT。
3)定义10个字型无符号数,编写程序求其最小值。
6.子程序设计
1)设计一个子程序,计算1+2+?+N,其中N为给定的正整数,且N小于100。
2)定义10个字型带符号数,编写子程序求其最大值和统计正数的个数。
3)从键盘接收4位十进制数,将其转换为十六进制数并显示。
二.实验心得
上学期学习计算机组成原理的时候就对汇编有所了解,但通过这学期的学习,使我更加深入了解了其知识体系和计算机组成及内部程序执行的原理。对于各命令的熟练掌握后,自己亲自动手实验更是体会到了各命令的用途及执行的方法。通过各个基本命令可以轻松更改计算机内部寄存器的值和读写内存,磁盘,I/O端口的值,通过更改观察其对计算机的影响变化。
对于汇编语言的寻址方式,更是多种多样,通过对各寻址方式的比较,可以感受到各寻址方式的不足与好处,还有是对各寻址方式的注意事项,有的寻址方式需专用的寄存器,有的寄存器是禁止使用的,然而有的就开放的多,对寄存器没有特殊要求,然而在编程过程中使用较为合适的寻址方式是提高程序运行效率的保障,在对寄存器中的值做运算时要正确书写各值,在X86中只支持十六进制数,在运算结束后值得保存也是很重要的,不能随意保存。写数据传送指令时,目的操作数和源操作数的类型一定要匹配,CS不能作为目的操作数。
在学习完汇编语言程序格式和结构后就可以完整的编写汇编语言程序了,在编程中各种结构的选择是对程序效率的保障,在顺序结构中就不需要各种选择分支结构,顺序结构适合一些较简单按顺序执行的程序,然而复杂程序的编写就需要用到选择结构和分支结构了。另外,我们还应该掌握DOS系统功能调用,宏汇编等知识。
现在课程已结束一段时间,虽然不是完全掌握,但是还是了解了一些基本操作,可以解决一些基本问题,想要学好汇编,还需花更多时间去学习。在今后的学习过程中尽可能完善自己。