您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 建筑材料 > 微机原理与接口技术实验报告-西安邮电
西安邮电大学(计算机学院)微机原理与接口技术实验报告实验名称:寻址方式与基本指令实验专业名称:班级:学生姓名:学号:指导教师:实验日期:2017年10月31日寻址方式与基本指令实验1、实验目的1.1、熟悉80x86寻址方式及基本指令的功能,进一步理解和巩固课堂学习内容。1.2、掌握汇编语言程序设计上机过程,掌握汇编语言源程序结构,为后续汇编语言程序设计打好基础。1.3、熟悉Microsoft的DEBUG或Borland的TurboDEBUG调试工具的使用方法2、实验预习要求2.1、认真阅读本书第一部分第1章,熟悉汇编语言程序设计上机步骤。2.2、认真阅读本书第三部分,熟悉DEBUG调试工具的使用方法。2.3、复习80x86操作数寻址方式及基本指令(数据传送、算术运算和逻辑运算等)。2.4、了解实验内容,并在实验前根据课堂所学知识回答有关问题(个别取决于程序实际运行环境的问题除外),以便在实验时进行验证。3、实验内容3.1、读懂下列源程序,使用EDIT生成名为EX11.ASM的源程序,汇编生成EX11.OBJ文件和EX11.LST文件,连接生成EX11.EXE文件;用EDIT打开EX11.LST文件,了解.LST文件包含的信息;使用DEBUG调试工具单步执行EX11.EXE程序,注意观察IP值的变化,并回答下列问题。(1)程序装入后,代码段寄存器CS的内容为____0913__H,代码段第一条可执行指令MOVAX,DATA对应的机器代码为__B81209__H,它是一个__3__字节指令,注意观察执行该指令时IP值的变化情况,该指令源操作数DATA的寻址方式是__立即数寻址__,其值为__0912H__。(2)执行完MOVDS,DATA指令后,数据段寄存器DS的内容为_0912__H,源程序在数据段中定义的数据82H、68H和88H被装入的存储单元的物理地址分别为_09120_H、_09121__H和__09122__H。(3)程序中第一条ADDAL,[BX]指令对应的机器代码为___0207__H,它是一个___2__字节指令,注意观察执行该指令时IP值的变化情况;该指令中源操作数的寻址方式为___寄存器间接寻址___,该操作数所在存储单元的逻辑地址(DS):(BX)为_0912:0001___,其物理地址为__09121___H;执行完该指令后(AL)=___EA___H,CF=___0__,OF_=__0_,ZF=__0__,SF=1,AF=0,PF=0;若两操作数为无符号数,计算结果是否正确__是__?若两操作数为带符号数,计算结果是否正确__是__?若计算结果正确,结果是正数还是负数___负___?(4)执行完第二条ADDAL,[BX]指令后(AL)=__72__H,CF=__1__,OF=__1_,ZF=_0___,SF=_0__,AF=_1__,PF=_1__;若两操作数为无符号数,计算结果是否正确__否___?若两操作数为带符号数,计算结果是否正确___否_____?3.2、指令MOVSUM,AL中目的操作数的寻址方式为___寄存器寻址____。该指令执行完后,注意观察(DS):0003H单元中值的变化,该单元的值变为_72__H。DATASEGMENTNUMDB82H,68H,88HSUMDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVBX,OFFSETNUMMOVAL,[BX]INCBXADDAL,[BX]INCBXADDAL,[BX]MOVSUM,ALMOVAH,4CHINT21HCODEENDSENDSTART(2)读懂下列源程序,编辑、汇编、连接生成EX12.ASM、EX12.OBJ、EX12.LST、EX12.EXE文件使用DEBUG单步调试EX12.EXE文件,并回答一下问题。①代码的前三段指令“MOVAX,STACK”、“MOVSS,AX”和“MOVSP,LENGTHSTL”的功能为堆栈初始化,试问执行完这三条指令后,堆栈栈底所在单元的逻辑地址(SS):(SP)为0912:0100;执行“PUSHAX”指令后,堆栈指针寄存器(SP)=00FEH,此时(SS):(SP+1)和(SS):(SP)单元的值为0AH和5BH;执行完“PUSHBX”后,(SP)=00FCH;此时(SS):(SP+1)和(SS):(SP)单元的值为4CH和A3H;执行完“POPAX”后,(SP)=00FEH;执行完“POPBX”后,(SP)=0100H,此时(AX)=4CA3H,(BX)=5B0AH。请读者通过对堆栈操作指令执行情况的观察,进一步掌握进、出栈操作过程。②执行“ADDAX,BX”指令后,(AX)=A7ADH,CF=0,OF=1,ZF=0,SF=1,AF=0,PF=0,(注意考虑PF值与计算结果高8位有无关系);若两操作数为无符号数,计算结果是否正确正确?若两操作数为带符号数,计算结果是否正确不正确?③执行“ANDAX,BX”指令后,(AX)=4802H,CF=0,OF=0,ZF=0,SF=0,AF=0,PF=0.STACKSEGMENTstackSTLDW100HDUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,SS:STACKSTART:MOVAX,STACKMOVSS,AXMOVSP,LENGTHSTL;表达式“LENGTHSTL”的功能为计算STL中定义的变量的个数;汇编后其值为100HMOVAX,0101101100001010BMOVBX,0100110010100011BPUSHAXPUSHBXADDAX,BXPOPAXPOPBXANDAX,BXMOVAH,4CHINT21HCODEENDSENDSTART(3)指出下列指令的错误原因,上机运行,观察汇编程序(MASM.EXE)给出的出错信息,改正后上机验证。①MOVBP,BL②MOV[BX],[BP]③MOV[BX],20H④INC[SI]⑤ADDAX,[SI+DI]⑥SHLAX,3⑦PUSH2000H⑧POPAL⑨MOVCS,AX⑩MOVDS,1000H答:①出错信息:warningA4031:Operandtypesmustmatch错误原因:操作数类型不匹配,BP是一个16位寄存器,而BL是一个8位寄存器。改正后:MOVBP,BX;②出错信息:errorA2052:Improperoperandtype错误原因:源操作数和目的操作数不能同时为存储器。改正后:MOVAX,[BP]MOV[BX],AX;③出错信息:error:A2035:Operandmusthavesize错误原因:源操作数长度不明确④出错信息:error:A2035:Operandmusthavesize错误原因:操作数的长度未指定⑤出错信息:error:A2047:Multipleindexregisters错误原因:同时使用了多个变址寄存器⑥出错信息:errorA2052:Improperoperandtype错误原因:循环次数大于1应该间接移位⑦出错信息:errorA2056:Immediatemodeillegal错误原因:不能对立即数进行栈操作⑧出错信息:errorA2058:Byteregisterillegal错误原因:要求用字寄存器而使用了字节寄存器⑨出错信息:errorA2059:IllegaluseofCSregister错误原因:CS不能作为目的操作数⑩出错信息:errorA2056:Immediatemodeillegal错误原因:立即数不能送入数据段4、实验总结这是第一次上机实验,并不知道具体怎样做,通过老师讲的知识和操作,理解和巩固了课堂学习内容,基本掌握了汇编语言程序设计上机过程和汇编语言源程序结构,为以后汇编语言程序设计打好基础。初步掌握了调试工具的使用方法。西安邮电大学(计算机学院)微机原理与接口技术实验报告实验名称:字符及字符串输入输出与顺序程序设计专业名称:班级:学生姓名:学号:指导教师:实验日期:2017年11月14日字符及字符串输入输出与顺序程序设计1、实验目的1.1、学习和掌握字符及字符串的输入输出方法。1.2、掌握顺序程序设计方法。1.3、进一步掌握调试工具的使用方法。2、实验内容从键盘输入两个一位十进制数,计算这两个数之和,并将结果在屏幕上显示出来。2.1、问题分析比如使用功能号为01H的用于实现单个字符输入的DOS功能调用接收从键盘输入的两个十进制数8和6,这时计算机内部得到的是这两个数的ASCII码值38H和36H。由于数字09的ASCII码值与其代表的数值之间相差30H,因此将其减去30H即可得到以非压缩型BCD数形式表示的十进制数08H和06H,使用ADD指令对它们进行相加后结果为0EH(00001110B),显然需要用非压缩型BCD数加法调整指令对ADD的运算结果进行调整,调整后得到两个非压缩型BCD数01H和04H,将它们分别加上30H后变为其对应的ASCII码31H(1的ASCII码)和34H(4的ASCII码),然后调用功能号为02H用于单个字符输出的DOS功能调用将它们显示出来。综上所述,需要考虑以下问题。(1)从键盘输入一个一位十进制数的方法通过功能号为1的DOS功能调用实现从键盘输入一个字符,格式如下:MOVAH,01HINT21H;此时程序等待用户键入,键入字符的ASCII码值存在AL中SUBAL,30H;减去30H后得到键入数字所代表的数值(2)提示信息字符串的显示通过功能号为9的DOS功能调用实现字符串显示,注意字符串的最后一个字符必需为‘$’。指令格式如下:MOVDX,OFFSETINFOR1;INFOR1为在数据段中定义的要显示的字符串MOVAH,09HINT21H(3)非压缩型BCD数加法调整指令的使用设从键盘输入的数值已存放在寄存器AL,BL中,可用下列程序完成数据相加和调整操作:XORAH,AHADDAL,BLAAA;执行该指令后,AH中为和的十位上的数字,AL中为个位上的数字请读者考虑,为什么要使用指令“XORAH,AH”,不用行否?(4)计算结果的显示执行完AAA指令后,只需分别将AH(十位上的数值)和AL(个位上的数值)加上30H,并依次调用功能号为2的DOS功能调用来显示字符。2.2、原程序框架DATASEGMENTINFOR1DB”PLEASEINPUTTHEFIRSTDATA(10):$”INFOR2DB0AH,0DH,”PLEASEINPUTTHESECONDDATA(10):$”INFOR3DB0AH,0DH,”THERESULTIS:$”;0DH和0AH分别为非显示字符回车和换行的ASCII码值,;美元符号”$”为字符串结束标志,不能省略。DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXSUBAL,30HMOVBL,ALSUBAL,30HPUSHAXPOPAXPUSHAXMOVAH,4CHINT21HCODEENDSENDSTART2.3、程序调试源程序编写完成后,先静态检查,无误后,对源程序进行汇编和连接,生成可执行文件。在DOS命令提示符下运行该程序,分析运行结果是否正确。若结果不正确,使用DEBUG对其进行调试。2.4、源代码1)、源程序框架补全源代码ASSUMECS:CODE,DS:DATADATASEGMENTINFOR1DBPLEASEINPUTTHEFIRSTDATA(10):$INFOR2DB0AH,0DH,PLEASEINPUTTHESECONDDATA(10):$INFOR3DB0AH,0DH,THERESULTIS:$显示提示信息INFOR1并从键盘接收一个字符的指令序列显示提示信息INFOR2并从键盘接收一个字符的指令序列求和并调整指令序列显示提示信息INFOR3的指令序列显示十位及个位上数字的指令序列DATAENDSCODES
本文标题:微机原理与接口技术实验报告-西安邮电
链接地址:https://www.777doc.com/doc-1832960 .html