您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > 华南理工大学微机与接口实验报告(四实验-题目原理流程图代码截图完整版)
微机原理实验报告班级:2012级电子科学与技术卓工班姓名:黄中一学号:201236460273序号:评阅分数:实验一一、实验目的1、学会如何建立汇编源文件ASM2、学会调用MASM宏汇编程序对源文件进行汇编,获得目标程序OBJ及LST列表文件3、学会调用LINK连接程序汇编后的目标文件OBJ连接成可执行的文件EXE4、学会使用DEBUG调试程序把可执行文件装入内存并调试运行,用D命令显示目标程序,用U命令对可执行文件反汇编,用G命令运行调试。二、实验设备装有MASM软件的IBMPC机三、实验内容1、汇编程序对源程序进行编译,生成扩展名为OBJ的目标文件;连接程序是将目标程序和库文件进行连接、定位,生成扩展名为EXE的可执行文件;调试程序是对目标文件进行调试,验证它的正确性。2、DEBUG程序各种命令的使用方法功能命令格式使用说明显示内存单元内容D地址从指定地址开始显示40H个字节或80H个字节修改内存单元内容E地址先显示地址和单元内容等待输入修改的内容检查和修改寄存器的内容R显示全部寄存器和标志位及下条指令单元十六进制数码和反汇编格式反汇编U地址从指定地址开始反汇编16个或32个字节汇编A地址从指定地址直接输入语句并从指定指定汇编装入内存跟踪T=地址从指定地址开始逐条跟踪指令运行G=地址无断点,执行正在调试的指令退出Q退出DEBUG返回DOS3、实验过程①、在edit环境,写字板,记事本等中输入源程序。或双击屏幕上“未来汇编”快捷方式进入编辑环境输入源程序。②、保存,输入文件名如A1.asm,并将其与MASM的三个可执行文件放在同一目录下。③、在DOS环境下(可用windows下的命令提示符进入),用MASM生成目标文件A1.OBJ进入DOS环境,将当前目录设置为存放MASM的路径.如图所示:如果MASM的软件放在C:\TOOLS\WJYL则先要进入到该子目录下,进入该子目录的方法为,cdc:\退到c盘的根目录下,cdtoolscdWJYL则如上所述进入该目录下,然后输入MASM,可见屏幕上有四个提问,按如下格式回答:Sourcefilename[.ASM]:a1↙Objectfilename[A1.OBJ]:↙Sourcelisting[NUL.LST]:a1↙Cross-reference[NUL.CRF]:a1↙④、键入DIR/W可见目标文件A1.OBJ和列表文件A1.LST。⑤、在DOS环境下,用连接文件LINK连接程序生成可执行文件A1.EXE输入LINK,可见屏幕有四个提问,按以下格式回答:ObjectModules[.OBJ]:A1↙RUNFile[A1.EXE]:↙ListFile[NUL.MAP]:↙Libraries[.LIB]:A1↙用DIR命令,查看生成的各文件⑥、用TYPEA1.LST↙命令观看列表文件⑦、在DOS环境下,用DEBUG跟踪程序来安装运行A1.EXE程序1)输入DEBUGA1.EXE↙可见有提示符“—”2)输入-R↙可见CPU内所有寄存器内容和标志位状态如下:AX=0000BX=0000CX=0100DX=0000SP=0028BP=0000SI=0000DI=0000DS=1112ES=1112SS=1126CS=1129IP=0000NVUPDIPLNZNAPONC1129:0000B82211MOVAX,11223)输入-U,可看到11行指令,再用U命令可看到余下的各指令。4)输入运行命令-G=0028可见程序执行到INT21H句便停下来,屏幕展示此刻各寄存器的内容如下:AX=4C00BX=0007CX=0001DX=0000SP=0028BP=0000SI=0000DI=0000DS=1122ES=1112SS=1126CS=1129IP=0028NVUPDIPLZRACPECY1129:0028CD21INT215)输入-RIP可修改指令指针6)输入-T↙可看到执行第一条指令的结果输入-T=03↙可看到3条指令执行的过程7)输入-Q↙退出DEBUG,回到DOS状态。注:如果masm的过程中出现错误,可参看错误提示,在相应的行和列去寻找错误。可直接在dos环境下键入edit进入编辑环境。附:标志寄存器对应的含义NVOF=0OVOF=1UPDF=0DNDF=1DIIF=0EIIF=1PLSF=0NGSF=1NZZF=0ZRZF=1NAAF=0ACAF=1P0PF=0PEPF=1NCCF=0CYCF=1{{{{{{{{实验例程1:DATASEGMENTARRAY1DB2,5,0,3,-4,5,0,0AH,0FHARRAY2DB3,5,4,-2,0,8,3,-0AH,20HCOUNTDB$-ARRAY2LENDB?SUMDB20HDUP(0)DATAENDSSTACK1SEGMENTPARASTACK'STACK'DW20HDUP(0)STACK1ENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK1START:MOVAX,DATAMOVDS,AXMOVBX,-1MOVCX,0MOVCL,COUNTNOZERO:INCBXMOVAL,ARRAY1[BX]ADDAL,ARRAY2[BX]MOVSUM[BX],ALLOOPNENOZEROJEENDOINCBLENDO:MOVLEN,BLMOVAH,4CHINT21HCODEENDSENDSTART实验例程2:显示字符串;SAMPLEPROGRAMDISPLAYMESSAGE;注释行STACKSEGMENTPARASTACK‘STACK’;定义堆栈段DB1024DUP(0);在存储器的某个区域建立一个堆栈区STACKENDSDATASEGMENT;定义数据段MESSAGEDB‘THISISASAMPLEPROGRAM.$’;在存储器中存放供显示的数据DATAENDS;数据段结束CODESEGMENT;定义代码段ASSUMECS:CODE,DS:DATA,SS:STACK;告诉汇编程序段范围START:PROCFAR;将程序定义为远过程PUSHDSMOVAX,0;可用XORAX,AXPUSHAX;标准序,以便返回DOS操作系统MOVAX,DATAMOVDS,AX;初始化DSLEADX,MESSAGE;MESSAGE地址偏移量给BXMOVAH,9INT21H;调用DOS9号中断功能显示字符串。RET;返回DOS操作系统STARTENDP;过程结束CODEENDS;代码段结束ENDSTART;整个程序汇编结束例3人机交互:DATASEGMENTBUFDB100;缓冲区长度DB?;预留用来存放实际长度DB100DUP(?);接收来自键盘的输入下信息MESGDB‘WHATISYOURNAME?$’DATAENDSCODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AXMOVDXOFFSETMESGMOVAH,09H;屏幕显示提示信息INT21HMOVDXOFFSETBUFMOVAH,0AH;接收键盘输入INT21HMOVAH,4CHINT21HCODEENDSENDSTART实验二数码转码编程及程序调试一.实验目的1.掌握不同进程数及编码相互转换的程序设计方法,加深对数码转换的理解;2.进一步熟悉键盘使用方法;3.进一步熟悉调试程序的方法。二.实验设备装有汇编软件的IBMPC机一台三.实验内容及步骤计算机输入设备输入的信息一般ASCii码或BCD码表示的数据或字符,CPU处理信息一般均用二进制数进行计算或其它处理,处理结果输出的外设有必须一外设的要求变为ASCII码,BCD码或七段显示码等。因此,在应用软件中各累数制的转换和代码的转换是必不可少的。计算机于外设间的数码转换关系如图2-1所示,数码对应关系如表2-1所示。一.将ASCII码表示的十进制数转换为二进制数1.程序流程十进制数可表示为:lnllnnnnDDDD10*10*...10*10*600011LD代表十进制1,2,3,···9,0;((...(10*0lnllD012110*)...10*)10*)10*DDDDDnnln由式(2)可归纳十进制数转换为二进制数的方法:从十进制的最高位Dn开始作乘10加次位的操作,将结果再乘10再加下一个次位,如此重复,则可求出二进制的数结果来。程序流程图如图2-2。这里我们规定:被转换的ASCII码十进制数存放在3500h~3504h单位中。而转换结果在3510~3511单位中。2.实验步骤(1)输入程序并检查无误。(2)在3500~3504h单元存入十进制12的ASCII码,即e3500,并输入3030303132。(3)g=2000,运行程序,并用CTR+C来中断程序返回监控态。(4)用d3510查看结果,应为35100C00(5)反复试几组数,考查程序的正确性。流程图如下:代码如下:地址(H)助记符注释2000MOVSI,3500;源地址2003MOVDI,3510;结果地址2006MOVBX,000A;乘数102009MOVCX,0004;计数200CMOVAH,00;AH清零200EMOVAL,[SI];取被转换数2010SUBAL,30;ASCII码变十进制数2012IMULBX;高位(AX)*(BX)送AX2014ADDAL,[SI+01];取下一位1017SUBAL,30;ASCII码减30变十进制数2019INCSI;源地址指针+1201ALOOP2012;CX-1,若CX不等于零则继续201CMOV[DI],AX;若CX不等于零则存结果201EINT3运行结果截图:二.将十进制数的ASCII码转换为BCD码1.程序流程将从键盘输入的五位十进制数的ASCII码已存在3500起始的内存单元中。把它转换成BCD码后,再按位分别存入350A起始的内存单元内。若输入的不是十进制的ASCII码,则显示FF.2.实验步骤(1)输入程序并检查无误。(2)在3500H——3504H单元中存入五位十进制数的ASCII码,即E3500↙,并输入31,32,33,34,35。(3)G=2000↙,运行以上程序。(4)D350A↙,显示结果为:0000:350A0102030405CC…(5)反复试几组数,考查程序的正确性。流程图如下:代码如下:地址(H)助记符注释2000MOVCX,0005;循环计数器赋初值2003MOVDI,3500;ASCII码首址2006MOVBL,FF;错误标志送BL2008MOVAL,[DI];送ASCII码至AL200ACMPAL,3A;比较AL与3AH200CJNB2014;不低于3A则转2014200ESUBAL,30;低于3A则取ASCII码的低四位2010JB2014;低于30则转20142012MOVBL,AL;否则AL内容送BL,取代FF2014MOVAL,BL;结果或错误标志送AL2016MOV[DI+0A],AL2019INCDI201ALOOP2006201CINT3运行结果截图:三.将十六位二进制数转换为ASCII码表示的十进制数1.程序及其流程十六位二进制数的值域为0——65535,最大可转换为五位十进制数。算法:五位十进制数可表示为:(Di:表示十进制数0——9。)因此,将十六位二进制数转换为五位ASCII码表示表示的十进制数,就是求D1——D4,并将它化为ASCII码。程序流程图如图1-3所示,设源数据存于3500——3501H单元中,结果数存于3510——3514H单元中。2.实验步骤(1)输入程序并检查无误。(2)在3500——3501H单元中存放0C00,运行程序并检查结果,应看到3510——3514H单元中的数依次为3030303132。(3)反复试几组数,并运行程序、观察结果。DDDDDND流程图如下:SI-目标+1SI-1DX-0AX-二进制数存入SISI-1从原单元中取数余下高位化为AS
本文标题:华南理工大学微机与接口实验报告(四实验-题目原理流程图代码截图完整版)
链接地址:https://www.777doc.com/doc-2597036 .html