您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > 微机原理实验指导一(2015-2)
一、系统认识实验1.1实验目的掌握QASM轻松汇编(TD系列微机原理及接口技术教学实验系统)的操作,熟悉QASM(Wmd86联机集成开发调试软件)的操作环境。学习和掌握程序编写,汇编,调试的方法和技术。1.2实验设备PC机一台,(TD-PITE实验装置或TD-PITC实验装置一套)。1.3实验内容编写实验程序,将00H~0FH共16个数写入内存03000H开始的连续16个存储单元中。1.4实验步骤1.进入QASM编程环境:将TDASM和ASMPRO文件夹复制到D盘根目录上,运行TDASM下的QASM,进入集成开发环境。2.输入汇编源程序:编写输入实验程序,如图所示,并保存为A1,此时系统会提示输入新的文件名,输完后点击保存。可以用打开文件方式将以前保存的源程序调入。程序编辑界面3.程序的汇编与连接:点击,编译文件,若程序编译无误,则可以继续点击进行链接,链接无误后方运行调试程序。编译输出信息界面4.观察程序及变量分配:点击“交叉文件”,观察源程序代码与机器代码与存储形式。点击“汇编程序”返回汇编程序窗口。操作练习:1、对上述程序进行观察。看汇编源程序的指令与机器码指令的对应关系及程序存放形式。2、打开程序EX1,观察变量定义及存放关系。3、打开EX3—2,观察变量定义及内存分配。5.集成调试环境的使用:单步执行:点击“调试”菜单下的“单步”,可以一条一条的执行指令。查看修改寄存器:在调试过程中,可能通过调试窗口的“调试”选单,观察和修改CPU中寄存器的内容。查看变量和存储单元内容:在调试过程中,可能通过调试窗口的“查看”选单,可以添加要查看的存储单元或者变量的的内容。断点设置:在程序的对应指令行点击行号,可以设置程序断点(出现红色园点)。或者取消断点。连续运行:点击调试菜单下的“GO”,或让程序连续运行到断点处停止。操作练习:1、打开程序EX1,单步运行程序,观察寄存器及存储单元变化。并记录。3、打开EX3—2,观察变量定义及内存分配。单步运行程序,观察寄存器及存储单元变化。并记录。6.TRUBODEBUGGER的使用:(详细说明见TRUBODEBUGGER一览表)进入TD:汇编连接完成后,点击“调试”菜单下的“TD。。。”可进入TRUBODEBUGGER调试环境。单步执行:点击“STEP”,可以一条一条的执行指令。查看修改寄存器:点击“VIEW”菜单下的“REGISTER”选单,可以观察和修改CPU中寄存器的内容。查看和修改变量单元内容:点击“VIEW”菜单下的“VARIABLE”选单,可以观察和修改变量单元的内容。查看和修改存储单元内容:点击“VIEW”菜单下的“DUMP”选单,可以观察和修改存储单元的内容。断点设置:在程序的对应指令行点击,再点击“BKPT”,可以在该得设置断点。连续运行:点击“RUN”,让程序连续运行到断点处停止。操作练习:1、打开程序A1,单步和设置断点运行程序,观察寄存器及存储单元变化。程序观察程序运行前后0000:3000开始的十六个字节单元的数据。2、打开EX1,单步和设置断点运行程序,输入不同数,运行后检查变量X和XXX的值,并记录。3、编写程序,将内存0000:3500H单元开始的8个数据复制到0000:3600H单元开始的数据区中。通过调试验证程序功能。使用TD调试程序,先将0000:3500H单元写入8个数,然后运行程序,观察程序是否将数据复制到0000:3600H单元中。二、数制转换实验计算机与外设间的数制转换关系如图2-1所示,数制对应关系如表2-1所示。主机键盘二进制光电机拨码开关数据开关CRT显示打印机多段显示位显示二进制二进制ASCII码BCD码BCD码ASCII码ASCII码ASCII码图2-1数制转换关系1.操作练习:1、打开程序A1,单步和设置断点运行程序,观察寄存器及存储单元变化。程序观察程序运行前后0000:3000开始的十六个字节单元的数据。2、打开EX1,单步和设置断点运行程序,输入不同数,运行后检查变量X和XXX的值,并记录。3、编写程序,将内存0000:3500H单元开始的8个数据复制到0000:3600H单元开始的数据区中。通过调试验证程序功能。使用TD调试程序,先将0000:3500H单元写入8个数,然后运行程序,观察程序是否将数据复制到0000:3600H单元中。2.将ASCII码表示的十进制数转换为二进制数十进制表示为:n0iii001n1nnn10D10D10D10D(1)Di代表十进制数0,1,2,…,9;上式转换为:012n1nnn0iiiD10)D10)D10)D10D(((10D(2)由式(2)可归纳十进制数转换为二进制数的方法:从十进制数的最高位Dn开始作乘10加次位的操作,依次类推,则可求出二进制数的结果。表2-1数制对应关系表十六进制BCD码二进制机器码ASCII码七段码共阳共阴00000000030H40H3FH10001000131H79H06H20010001032H24H5BH30011001133H30H4FH40100010034H19H66H50101010135H12H6DH60110011036H02H7DH70111011137H78H07H81000100038H00H7FH91001100139H18H67HA101041H08H77HB101142H03H7CHC110043H46H39HD110144H21H5EHE111045H06H79HF111146H0EH71H程序流程图如图2-2所示。实验参考程序如下。实验程序清单(例程文件名:A2-1.ASM)SSTACKSEGMENTSTACKDW64DUP(?)SSTACKENDSDATASEGMENTSADDDB30H,30H,32H,35H,36H;十进制数:00256DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAX,OFFSETSADDMOVSI,AXMOVBX,000AHMOVCX,0004HMOVAH,00HMOVAL,[SI]SUBAL,30HA1:IMULBXMOVDX,[SI+01]程序开始初始化转换首地址转换次数→CX取第一位ASCII码减去30H乘10加下一位ASCII码减30H转换完否?程序结束NYANDDX,00FFHADCAX,DXSUBAX,30HINCSILOOPA1A2:JMPA2CODEENDSENDSTART实验步骤(1)绘制程序流程图,编写实验程序,经编译、链接无误后装入系统。(2)待转换数据存放于数据段,根据自己要求输入,默认为30H,30H,32H,35H,36H。(3)在A2处设置断点,然后运行程序。(4)到断点后查看AX寄存器,即为转换结果,应为:0100。(5)数据区的数据修改为自己学号的后四位数据(如:03526),按照上面步骤运行程序,记录结果。(6)修改数据区数据,按照上面步骤运行程序,验证程序的正确性,记录结果。4.将十进制数的ASCII码转换为BCD码从键盘输入五位十进制数的ASCII码,存放于3500H起始的内存单元中,将其转换为BCD码后,再按位分别存入350AH起始的内存单元内。若输入的不是十进制的ASCII码,则对应存放结果的单元内容为“FF”。由表2-1可知,一字节ASCII码取其低四位即变为BCD码。实验程序清单(例程文件名:A2-2.ASM)SSTACKSEGMENTSTACKDW64DUP(?)SSTACKENDSCODESEGMENTASSUMECS:CODESTART:XORAX,AXMOVDS,AXMOVCX,0005H;转换位数MOVDI,3500H;ASCII码首地址A1:MOVBL,0FFH;将错误标志存入BLMOVAL,[DI]CMPAL,3AHJNBA2;不低于3AH则转A2SUBAL,30HJBA2;低于30H则转A2MOVBL,ALA2:MOVAL,BL;结果或错误标志送入ALMOV[DI+0AH],AL;结果存入目标地址INCDILOOPA1MOVAX,4C00HINT21H;程序终止CODEENDSENDSTART实验步骤(1)自己绘制程序流程图,然后编写程序,编译、链接无误后装入系统。(2)在0000:3500H~0000:3504H单元中存放五位十进制数的ASCII码,即:31,32,33,34,35。(3)在MOVAX,4C00H指令处设置断点,运行程序到断点。(4)0000:350AH单元,显示运行结果,应为:0000:350A0102030405CC…(5)反复测试几组数据,验证程序功能。图2-2转换程序流程图5.将十六位二进制数转换为ASCII码表示的十进制数十六位二进制数的值域为0~65535,最大可转换为五位十进制数。五位十进制数可表示为:01223344D10D10D10D10DNDi:表示十进制数0~9将十六位二进制数转换为五位ASCII码表示的十进制数,就是求D1~D4,并将它们转换为ASCII码。自行绘制程序流程图,编写程序可参考例程。例程中源数存放于3500H、3501H中,转换结果存放于3510H~3514H单元中。实验程序清单(例程文件名:A2-3.ASM)SSTACKSEGMENTSTACKDW64DUP(?)SSTACKENDSCODESEGMENTASSUMECS:CODESTART:MOVSI,3500H;源数据地址MOVDX,[SI]MOVSI,3515H;目标数据地址A1:DECSIMOVAX,DXMOVDX,0000HMOVCX,000AH;除数10DIVCX;得商送AX,得余数送DXXCHGAX,DXADDAL,30H;得Di的ASCII码MOV[SI],AL;存入目标地址CMPDX,0000HJNEA1;判断转换结束否,未结束则转A1A2:CMPSI,3510H;与目标地址得首地址比较JZA3;等于首地址则转A3,否则将剩余地址中填30HDECSIMOVAL,30HMOV[SI],ALJMPA2A3:MOVAX,4C00HINT21H;程序终止CODEENDSENDSTART实验步骤(1)编写程序,经编译、链接无误后,装入系统。(2)在3500H、3501H中存入0C00。(3)运行程序,待程序运行停止。(4)检查运行结果,键入D3510,结果应为:3030303132。(5)可反复测试几组数据,验证程序的正确性。6.十六进制数转换为ASCII码由表2.1中十六进制数与ASCII码的对应关系可知:将十六进制数0H~09H加上30H后得到相应的ASCII码,AH~FH加上37H可得到相应的ASCII码。将四位十六进制数存放于起始地址为3500H的内存单元中,把它们转换为ASCII码后存入起始地址为350AH的内存单元中。自行绘制流程图。实验程序清单(例程文件名为A2-4.ASM)SSTACKSEGMENTSTACKDW64DUP(?)SSTACKENDSCODESEGMENTASSUMECS:CODESTART:MOVCX,0004HMOVDI,3500H;十六进制数源地址MOVDX,[DI]A1:MOVAX,DXANDAX,000FH;取低4位CMPAL,0AHJBA2;小于0AH则转A2ADDAL,07H;在A~FH之间,需多加上7HA2:ADDAL,30H;转换为相应ASCII码MOV[DI+0DH],AL;结果存入目标地址DECDIPUSHCXMOVCL,04HSHRDX,CL;将十六进制数右移4位POPCXLOOPA1MOVAX,4C00HINT21H;程序终止CODEENDSENDSTART实验步骤(1)编写程序,经编译、链接无误后装入系统。(2)在3500H、3501H中存入四位十六进制数203B,即键入E3500,然后输入3B20。(3)先运行程序,待程序运行停止。(4)键入D350A,显示结果为:0000:
本文标题:微机原理实验指导一(2015-2)
链接地址:https://www.777doc.com/doc-6091949 .html