收藏 分享(赏)

微机接口实验报告.doc

上传人:精品资料 文档编号:10415220 上传时间:2019-11-08 格式:DOC 页数:16 大小:649.49KB
下载 相关 举报
微机接口实验报告.doc_第1页
第1页 / 共16页
微机接口实验报告.doc_第2页
第2页 / 共16页
微机接口实验报告.doc_第3页
第3页 / 共16页
微机接口实验报告.doc_第4页
第4页 / 共16页
微机接口实验报告.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、武汉大学微机接口实验报告2目录目录 2实验一 数据传送 3实验二 算术逻辑运算及移位操作 8实验三 算术逻辑运算及移位操作 13实验四 字符及字符串的输入和输出 15微机原理与接口技术软件编程题目 183实验一 数据传送一、 实验目的1 熟悉 8086 指令系统的数据传送指令及 8086 的寻址方式。2 利用 EMU 调试工具来调试汇编语言程序。二、 实验预习要求1 复习 8086 指令系统中的数据传送类指令和 8086 的寻址方式。2 预习 EMU 的使用方法:3 按照题目要求预先编写好实验中的程序段。三、 实验任务1通过下述程序段的输入和执行来熟悉 EMU 的使用,并通过显示器屏幕观察程序

2、的执行情况。练习程序段如下:MOV BL,08HMOV CL,BLMOV AX,03FFHMOV BX,AXMOV DS:0020H,BX 2用以下程序段将一组数据压入(PUSH)堆栈区,然后通过不同的出栈顺序出栈,观察出栈后数据的变化情况。压栈程序段如下:4MOV AX,0102HMOV BX,0304HMOV CX,0506HMOV DX,0708HPUSH AXPUSH BXPUSH CXPUSH DX出栈段程序:POP CXPOP DXPOP BXPOP AXRET3. 指出下列指令的错误并加以改正,上机验证之。(1) MOV BX, SI5存储器操作数不可直接传递,改为 MOV BX

3、, SI(2) MOV AH,BX操作数字长不相同,改为 MOV AH,BH(3) MOV AX,SIDI基址変址寻址时,不允许两变址寄存器组合在一起,改为MOV AX,BXDI(4) MOV BYTE PTRBX,2000H字长不同,改为 MOV WORD PTRBX,2000H(5) MOV CS,AX段寄存器 CS 内容不通过 MOV 指令改写(6) MOV DS,2000H不能用立即数直接给段寄存器赋值,改为MOV AX, 2000H MOV DS, AX5. 将 DS:1000H 字节存储单元中的内容送到 DS:2020H 单元中存放。试分别用 8086 的直接寻址、寄存器间接寻址、

4、变址寻址、寄存器相对寻址传送指令编写程序段,并上机验证结果。(1)直接寻址MOV AX , 1000HMOV 2010H,AX(2)寄存器间接寻址MOV BX,1000HMOV AX, BXMOV 2020H, AX(3)变址寻址MOV SI,1000HMOV AX, SIMOV 2020H, AX(4)寄存器相对寻址MOV AX,1000HMOV BX,1000HMOV 1020HBX ,AX6. 设 AX 寄存器中的内容为 1111H,BX 寄存器中的内容为 2222H,DS :0010H 单元中的内容为63333H。将 AX 寄存器中的内容与 BX 寄存器中的内容交换,然后再将 BX 寄

5、存器中的内容与 DS:0010H单元中的内容进行交换。试编写程序段,并上机验证结果。MOV AX,1111HMOV BX,2222HMOV 0010H,3333HMOV DX,BXMOV BX,AXMOV AX,DXMOV DX,BXMOV BX, 0010HMOV 0010H,DX7. 设(DS)1000H ,(ES) 2000H ,有关存储器的内容如图 1.5 所示。要求将 DS 段的内容传送到 AX寄存器,ES 段的内容传送到 BX 寄存器,试编写程序段。MOV 1000H,0EEFFHMOV ES:2000H,0CCDDHMOV AX,1000HMOV BX,ES:2000H四、实验报

6、告要求小结 EMU 的使用方法:1.首先选择是建立.COM 文件还是.EXE 文件。这取决于是要编写运行一个程序段还是可执行程序。本节均是验证程序段。故采用.COM 文件。7实验二 算术逻辑运算及移位操作一、 实验目的1熟悉算术逻辑运算指令和移位指令的功能。2了解标志寄存器各标志位的意义和指令执行对它的影响。二、 实验预习要求1复习 8086 指令系统中的算术逻辑类指令和移位指令。2按照题目要求在实验前编写好实验中的程序段。三、 实验任务1 实验程序段及结果表格如表 1.2: 标志位 CF ZF SF OF PF AF0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 00 0 0

7、 0 1 10 0 0 0 0 00 0 0 0 0 00 0 0 0 0 00 0 0 0 0 00 0 0 0 0 00 0 0 0 0 0程序段 1:MOV AX, 1018HMOV SI, 230AHADD AX, SIADD AL, 30HMOV DX, 3FFHADD AX,BXMOV 20H, 1000HADD 20H, AXPUSH AXPOP BX 0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 01 0 0 0 1 11 0 0 0 1 11 0 0 0 1 00 1 0 0 1 00 0 0 0 0 00 0 1 0 1 00 0 0 0 1 0程序段 2

8、:MOV AX, 0A0AHADD AX, 0FFFFHMOV CX, 0FF00HADC AX, CXSUB AX, AXINC AXOR CX, 0FFHAND CX, 0F0FHMOV 10H, CX 0 0 0 0 1 00 0 0 0 0 00 0 0 0 0 0程序段 3: MOV BL, 25HMOV BYTE PTR10H, 4 0 0 0 0 0 080 0 0 0 0 0MOV AL, 10HMUL BL 0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 00 0 0 0 0 00 0 0 0 0 0程序段 4:MOV WORD PTR10H,80HMOV B

9、L, 4MOV AX, 10HDIV BL 0 0 0 0 0 00 0 0 0 0 00 0 1 0 1 11 0 0 0 0 10 0 0 0 1 10 0 0 0 1 10 0 1 0 1 00 0 1 0 0 00 0 1 0 0 01 0 0 1 1 0程序段 5:MOV AX, 0DEC AXADD AX, 3FFFHADD AX, AXNOT AXSUB AX, 3OR AX, 0FBFDHAND AX, 0AFCFHSHL AX,1RCL AX,1 1 12用 BX 寄存器作为地址指针,从 BX 所指的内存单元(0010H)开始连续存入三个无符号数(10H、04H、30H),接

10、着计算内存单元中的这三个数之和,和放在 0013H 单元中,再求出这三个数之积,积放 0014 单元中。写出完成此功能的程序段并上机验证结果。程序如下:MOV BX,0010HMOV BX,10HMOV 0001HBX,04HMOV 0002HBX,30HMOV AL,BXADD AL,0001HBXADD AL,0002HBXMOV 0003HBX,ALMOV AL,BLMUL 0001HBXMUL 0002HBXMOV 0004HBX,AX93写出完成下述功能的程序段。上机验证你写出的程序段,程序运行的最后结果(AX)(1) 传送 15H 到 AL 寄存器;(2) 再将 AL 的内容乘以

11、2;(3) 接着传送 15H 到 BL 寄存器;(4) 最后把 AL 的内容乘以 BL 的内容。程序如下:MOV AL,15HMOV DX,2MUL DXMOV BL,15HMUL BLRET4写出完成下述功能的程序段。上机验证你写出的程序段,程序运行后的商?(1) 传送数据 2058H 到 DS:1000H 单元中,数据 12H 到 DS:1002H 单元中;(2) 把 DS:1000H 单元中的数据传送到 AX 寄存器;(3) 把 AX 寄存器的内容算术右移二位;(4) 再把 AX 寄存器的内容除以 DS:1002H 字节单元中的数;(5) 最后把商存入字节单元 DS:1003H 中。程序

12、如下:MOV 1000H,2058HMOV 1002H,12HMOV AX,1000HMOV CL,2SAR AX,CLDIV 1002HMOV 1003H,ALRET105下面的程序段用来清除数据段中从偏移地址 0010H 开始的 12 个字存储单元的内容(即将零送到这些存储单元中去) 。(1) 将第 4 条比较指令语句填写完整(划线处) 。MOV SI,0010HNEXT: MOV WORD PTRSI,0ADD SI,2CMP SI, (填写 18)JNE NEXTHLT(2) 假定要按高地址到低地址的顺序进行清除操作(高地址从 0020H 开始) ,则上述程序段应如何修改?程序如下:M

13、OV SI,0020HNEXT: MOV WORD PTRSI,0SUB SI,2CMP SI,18 JNE NEXTHLT116 输入并运行表 1.3 中的程序段,把结果填入表右边的空格中,并分析结果,说明本程序段的功能是什么。程序段 字单元(1A00H)= 字单元(1A02H)=55 0055 D555 AA55 AA55 AA55 55MOV 1A00H, 0AA55HMOV 1A02H, 2AD5HSHL WORD PTR1A02H,1 CMP 1A00H, 8000HCMCRCL WORD PTR1A02H,1RCL WORD PTR1A00H,1 AA 55功能是将第一个数除以 2

14、,第二个数乘以 4四、 实验报告要求1 简要说明 ADD、SUB、AND 、OR 指令对标志位的影响。ADD:对 6 个状态标志位都会影响;SUB: 影响与 ADD 指令影响完成相同;AND: 影响 6 个标志位,并使 CF=OF=0;OR: 影响 6 个标志位,并使 CF=OF=02 简要说明一般移位指令与循环移位指令之间的主要区别。一般移位: 将操作数右移 m 位,同时每移一位,左边的符号位保持不变,移出的最低位进入标志位CF。对于有符号数和无符号数而言,算术右移相当于除以 2.;循环移位:循环移位指令的操作数形式与移位指令相同,如果仅移动一次,可以用 1 表示;如果需要移位多次,则需用

15、CL 寄存器表示移位次数。 12实验三 算术逻辑运算及移位操作一、 实验目的1熟悉串操作指令的功能。2了解串操作指令的使用方法。二、 实验预习要求1复习 8086 指令系统中的串操作类指令。2按照题目要求在实验前编写好实验中的程序段。三、 实验任务1 输入以下程序段并运行之,回答后面的问题。 CLDMOV DI,1000HMOV AX,55AAHMOV CX,10HREP STOSW(1) 从 DS:1000H 开始的 16 个字单元的内容是什么?(2) (DI )= ?(CX)= ?,并解释其原因。2 在上题的基础上,再输入以下程序段并运行之,回答后面的问题。MOV SI,1000HMOV

16、DI,2000HMOV CX,20HREP MOVSB(1) 从 DS:2000H 开始的 16 个字单元的内容是什么?(2) (SI ) = ?(DI)= ?(CX )= ?,并分析之。3 从 DS:1000H 开始存放有一个字符串”This is a string”,要求把这个字符串从后往前传送到DS:2000H 开始的内存区域中(即传送结束后,从 DS:2000H 开始的内存单元的内容为”gnirts a si siht”) ,试编写程序段并上机验证之。#MAKE_COM#13ORG 100H JMP STARTSTR DB THIS IS A STRING,13,10 START: L

17、EA SI, STRMOV DI,1000HMOV CX,10HCLDREP MOVSBMOV CX,10HMOV SI,1000HMOV DI,200FHAGAIN: CLDLODSBSTDSTOSBLOOP AGAIN四、 实验报告要求1 简要说明执行串操作指令之前应初始化哪些寄存器和标志位。应预设源串指针 DS,SI,目标串指针 ES,DI,重复次数 CX,及操作方向 DF2 总结串操作指令的用途及使用方法。14实验四 字符及字符串的输入和输出一、 实验目的1熟悉如何进行字符及字符串的输入输出。2掌握简单的 DOS 系统功能调用。二、 实验预习要求1复习系统功能调用的 1、2、9、10

18、号功能。2按照题目要求预先编写好实验中的程序段。三、 实验任务1 要在屏幕上显示一个字符串“Hello, world”,写出该字符串变量的定义语句和显示这个字符串的程序段。上机验证之。DSEG SEGMENTSTR DB Hello,world, 0DH,0AH,$DSEG ENDSCSEG SEGMENTASSUME CS: CSEG,DS: DSEGSTART: MOV AX,DSEGMOV DS,AXLEA DX,STRMOV AH,09HINT 21HMOV AH,4CHINT 21HCSEG ENDSEND START2 按 6 行16 列的格式顺序显示 ASCII 码为 20H 到

19、 7FH 之间的所有字符,即每 16 个字符为一行,共 6 行。每行中相邻的两个字符之间用空格字符分隔开。试编写程序段并上机运行验证。提示:程序段包括两层循环,内循环次数为 16,每次内循环显示一个字符和一个空格字符;外循环次数为 6,每个外循环显示一行字符并显示一个回车符(0DH)和一个换行符(0AH ) 。程序如下:#MAKE_EXE#CODE SEGMENTMAIN PROC FARASSUME CS:CODESTART:15MOV AH, 02HMOV DL, 20HMOV BL, 6E:MOV CX, 16L:INT 21HPUSH DX MOV AH, 02HMOV DL, 0IN

20、T 21HMOV AH, 02HMOV DL, 0INT 21HPOP DXINC DL LOOP LPUSH DXMOV AH, 02HMOV DL, 0DH INT 21HMOV AH, 02HMOV DL, 0AHINT 21HPOP DX DEC BL CMP BL, 0 JNE AGAIN JE EEXIT:MOV AX, 4CHINT 21HMAIN ENDPCODE ENDSEND START四、 实验报告要求1 1、2、9、10 号功能的输入输出参数有哪些?分别放在什么寄存器中?2 总结一下,如何实现字符及字符串的输入输出。字符串输入:MOV AH, 0AH ;功能号 0AHL

21、EA DX, ; 字符串在内存中的存放地址(由 DS:DX 定)INT 21H字符串输出:显示字符串(功能号 =9) MOV AH, 9 LEA DX, ; DS:DX 待输出字符串的偏移地址INT 21H 注意:被显示的字符串必须以$结束。 16微机原理与接口技术软件编程题目(0)、设 MEM1 中有一个任意字符串 STRING,以 ASCII 码$结尾,假定 MEM1 中的字符串不会导致数据段的溢出,编写一个程序,在 STRING 中找到第一次出现“OK”这个字母序列的首地址,如果没有这个序列,则直接返回 0,并在显示器(LED)上显示。 程序及结果如下所示:#MAKE_EXE#DATA

22、SEGMENTSTRING DB DGDFEROKGVDF,0DH,0AH,$STR DB OK0DH,0AH,$DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART :LEA DX,STRMOV SI,DX INC SILEA DI , STRINGCLD MOV AL,SISCAN: REPNE SCASBJZ MATCH NO: MOV DL,0JMP DESPLY ; MATCH:REPZ CMPSBPOP DIPOP SIJZ FOUNDJNZ NOJMP SCANDESPLY:MOV AH , 02H INT 21HFOUND: DEC DIHLT CODE ENDSEND START

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报