微机实验教案09-10-1

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2009-2010学年度第一学期微机原理实验教案陈善荣物理科学与信息工程学院《微机原理与接口技术》实验安排表实验时间班级第一组第二组第三组07电科1,07电科2星期一第5、6节星期一第7、8节星期二第7、8节07电1星期四第7、8节星期三第7、8节星期四第5、6节07电2星期三第5、6节星期三第3、4节07通信星期二第1、2节星期二第9、10节星期四第1、2节实验项目教学周次实验项目名称对应的实验指导书的内容汇编语言程序设计指导书(电子文档)微机原理与接口实验指导书(2006.7)31、熟悉汇编语言的编程环境实验一熟悉汇编语言的编程过程42、循环程序设计实验实验五循环程序设计53、子程序设计实验实验七子程序设计64、中断程序设计实验P39实验八75、8279键盘显示接口实验P51实验十二86、8253定时/计数器实验P30实验六97、8255并口可编程实验P24实验四108、电子琴设计实验P73实验十九118、电子琴设计实验P73实验十九129、小型直流电机调速实验P57实验十三1310、数字钟设计实验P41实验九1410、数字钟设计实验P41实验九1511、双机通信实验P44实验十1612、继电器控制实验P61实验十五实验1熟悉汇编语言的编程环境[实验目的]1.学习并掌握VisualASM软件的使用;2.学习在MSDOS方式下的手工汇编方式;3.学习Debug.exe软件的使用方法;[实验重点和难点]1.Debug命令[实验课时]2学时[实验仪器]联想启天2400微型计算机。[实验原理]1.80X86微处理的编程结构1.18086/8088微处理器的内部编程结构1.28086/8088的内部寄存器2.VisualASM的使用方法选择工作目录;编写源程序-保存源程序-汇编源程序-链接目标码-运行/调试程序;3.手工汇编运行“cmd.exe”进入MSDOS方式,用记事本等文本编辑工具软件编写源程序并以“.asm”扩展名存盘-进入到工作目录-汇编源文件,运行“masm文件名”-链接目标文件,运行“link文件名”-运行可执行文件,“文件名.exe”4.DEBUG命令常用命令:汇编A;反汇编U;查看内存D;修改寄存器R;修改内存命令:E;单步命令:T;单步命令:P;运行命令:G等[实验内容与步骤]1.用VISUALASM的建立一个汇编语言程序;输入如下程序并存盘。datasegmentmessagedbHelloWorld!,'$'dataendscodesegmentassumecs:code,ds:databegin:movax,datamovds,axmovdx,offsetmessagemovah,9int21h;显示字符串movah,0int16h;等待键盘输入,暂停程序运行movah,4chint21h;退出程序codeendsendbegin汇编、链接、运行该程序,记录运行结果:2.将上述程序复制到记事本,另存为a1.asm。然后手工编译运行程序。2.1“另存为”对话框的选择保存路径“C:\dvcc8086”;“保存类型”选择“所有文件”,文件名填“a1.asm”;2.2“开始”菜单“运行。。。”执行命令“cmd”,进入MSDOS方式,执行“cd\dvcc8086”转换到工作目录“c:\dvcc8086”下;2.3执行“masma1.asm”将a1.asm汇编成目标代码;2.4执行“linka1.obj”将a1.obj连接生成可执行文件“a1.exe”2.5执行“a1.exe”或“a1”可以得到程序的执行结果。3.用DEBUG命令调试运行上述程序3.1同2.23.2执行“debuga1.exe”,显示“-”号提示符3.3执行“u”并按“enter”键,可以看到从“begin”行开始的程序代码,该命令为反汇编命令;3.4连续按“p”+“enter”,可以一步一步、执行程序,并显示每一步的执行结果;也可以按“t”+“enter”,但二者不同的是:后者会进行中断子程序中去,之后就看不懂了。3.5按“g”+“enter”执行程序,可以得到2中的运行结果,按“q”+“enter”退出。4.其它DEBUG命令使用,记录命令执行前和执行后的结果(1)键入DEBUG进入DEBUG控制状态,显示提示符'-'。(2)用命令F10010F'A'将'A'的ASCII码填入内存。(3)用命令D10010F观察内存中的十六进制码及屏幕右边的ASCII字符。(4)用命令F11011F41重复上二项实验,观察结果并比较。(5)用命令E100303132……3F将30H-3FH写入地址为100开始的内存单元中,再用D命令观察结果,看键入的十六进制数是什么字符的ASCII码?(6)用H命令检查下列各组十六进制数加减结果并和你的手算结果比较:A)34H,22HB)56H,78HC)A5,79HD)1284H,5678HE)A758H,347FH(7)用R命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内容。(8)用R命令将AX,BX内容改写为1050H及23A8H。5.用DEBUG调试指令,输入以下程序段MOVBX,1000MOVCX,10SUBAX,AXLOP:ADDAL,[BX]ADCAH,0INCBXJ:LOOPLOPINT3记录每一个步骤的执行执行结果。(1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替。(2)用命令NAA将此程序命名为文件AA(文件名可任取)。(3)用R命令将BX:CX改为程序长度值(即最后一条指令后面的地址减去开始地址)。(4)用命令W100将此程序存到AA命名的磁盘文件中。(5)用命令Q退出DEBUG。(6)用命令DEBUGAA再次调入DEBUG和文件AA,可用U命令检查调入程序。若调入DEBUG时忘了加AA文件名,可用N命令和L命令将文件调入。(7)用E命令在内存地址1000H处键入16个数字(8)用命令G=100J(J用实际地址代替),使程序运行并停在断点J上,检查AX,BX的值是否符合你的预计值。(9)用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计一样,若不一样,检查程序是否有错。(10)重复GJ与T,再检查AX是否正确。(11)用G命令使程序运行到结束,检查AX值是否正确。[本实验注意事项]1.第一次实验,请仔细按照指导书操作,以免出现莫名其妙的错误[实验总结]1.2.[附实验参考程序]1.2.实验2循环程序设计实验[实验目的]1.掌握循环程序和排序程序设计方法。2.掌握带符号数的比较转移指令:JL,JLE,JG,JGE;3.伪指令EQU及操作符'$'的使用;[实验重点和难点]1.转移指令的使用[实验课时]2学时[实验仪器]联想启天2400微型计算机。[实验原理]1.参考教材的汇编语言程序设计[实验内容与步骤]1.简单的循环程序。datasegmentstringdb“Helloworld”codesegmentassumecs:code,ds:databegin:movax,dsmovds,axmovcx,7movbx,offsetstringnext:movdl,[bx]movah,2int21hincbxloopnextmovah,0int16hmovah,4chint21hcodeendsendbegin编译上面的程序。指出其中的错误并改正错误。2.多重循环CODESEGMENTORG100HASSUMECS:CODE,DS:CODEMAIN:JMPSTARTARRAYDW1234H,5673H,7FFFH,8000H,0DFFHDW0AB5H,0369H,005FH,5634H,9069HCOUNTEQU$-ARRAYSTART:MOVCX,COUNTSHRCX,1DECCXMOVBL,-1AGAIN:MOVDX,CXANDBL,BLJEEXITXORBL,BLXORSI,SIAGAIN1:MOVAX,ARRAY[SI]CMPAX,ARRAY[SI+2]JLENCHGXCHGARRAY[SI+2],AXMOVARRAY[SI],AXMOVBL,-1NCHG:INCSIINCSIDECDXJNZAGAIN1LOOPAGAINEXIT:INT20HCODEENDSENDMAIN输入,汇编并连接此程序。忽略连接时的无堆栈告警。在DEBUG下运行此程序,记录运行结果。将转移指令JLE改为JBE,JGE和JAE,分别运行并记录排序结果。[本实验注意事项]1.2.[实验总结]1.2.[附实验参考程序]1.2.实验3子程序设计实验[实验目的]1.掌握利用堆栈传递参数的子程序调用方法。2.掌握子程序递归调用方法。3.过程调用伪指令:PROC,ENDP,NEAR和FAR。4.8088指令:CALL,RET,RETn。5.利用RET指令退出EXE文件的方法。[实验重点和难点]1.利用堆栈传递参数的子程序调用方法;[实验课时]2学时[实验仪器]联想启天2400微型计算机。[实验原理]1.参考教材的汇编语言程序设计2.[实验内容与步骤]1.利用堆栈传递参数的子程序调用(求累加和)程序内容:STACKSEGMENTSTACKDB256DUP(0)STACKENDSDATASEGMENTARY1DB1,2,3,4,5,6,7,8,9,10COUNT1EQU$-ARY1SUM1DW?ARY2DB10,11,12,13,14,15,16,17,18COUNT2EQU$-ARY2SUM2DW?DATAENDSMAINSEGMENTASSUMECS:MAIN,DS:DATA,SS:STACKSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVAX,COUNT1PUSHAXLEAAX,ARY1PUSHAXCALLFARPTRSUMMOVAX,COUNT2PUSHAXLEAAX,ARY2PUSHAXCALLFARPTRSUMRETSTARTENDPMAINENDSPROCESEGMENTASSUMECS:PROCESUMPROCFARMOVBP,SPMOVCX,[BP+6]MOVBX,[BP+4]XORAX,AXADN:ADDAL,[BX]ADCAH,0INCBXLOOPADNMOV[BX],AXRET4SUMENDPPROCEENDSENDSTART操作步骤:(1)输入,汇编并将此程序连接成EXE文件。(2)用DEBUG的断点命令和T命令运行此程序,观察并记录每次过程调用及进出栈指令前后(带';'的语句)的SP和堆栈内容。(3)记录最后结果:SUM1,SUM2的段及偏移地址和它们的内容。2.子程序递归调用(求阶乘)程序内容:STACKSEGMENTSTACKDB100HDUP(?)STACKENDSDATASEGMENTRESULDW?DATAENDSCODESEGMENTMAINPROCFARASSUMECS:CODE,DS:DATA,SS:STACKSTART:PUSHDSSUBAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVAX,5CALLFACTMOVRESUL,AXRETFACTPROCANDAL,ALJNEIIAMOVAL,1RETIIA:PUSHAXDECALCALLFACTX2:POPCXMULCLRETFACTENDPMAINENDPCODEENDSENDSTART操作步骤:(1)将程序输入,汇编并连接成EXE文件。(2)用DEBUG的断点和T命令检查并记录每层递归嵌套过程的堆栈和AL内容。(3)修改源程序,将阶乘数5改为本程序的最大允许值(是多少?),重新汇编连接之。用DEBUG运行并记录RESUL单元内容。(4)若要在DOS命令下直接运行并显示阶乘结果(十六进制形式),试修改程序并调试运行。(机动)[本实验注意事项]1.2.[实验总结]1.2.[附实验参考程序]1.2.实验4中断程序设计实验[

1 / 40
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功