微型计算机原理及接口技术实验报告.docx

上传人:doc321 文档编号:14952215 上传时间:2022-02-26 格式:DOCX 页数:30 大小:2.27MB
返回 下载 相关 举报
微型计算机原理及接口技术实验报告.docx_第1页
第1页 / 共30页
微型计算机原理及接口技术实验报告.docx_第2页
第2页 / 共30页
微型计算机原理及接口技术实验报告.docx_第3页
第3页 / 共30页
微型计算机原理及接口技术实验报告.docx_第4页
第4页 / 共30页
微型计算机原理及接口技术实验报告.docx_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《微型计算机原理及接口技术实验报告.docx》由会员分享,可在线阅读,更多相关《微型计算机原理及接口技术实验报告.docx(30页珍藏版)》请在三一文库上搜索。

1、成都理工大学微型计算机原理及接口技术实验报告学 院 : 核技术与自动化工程学院 专 业 : 电气工程及其自动化 班 级 : 学 号 : 姓 名 : 指导老师 : 完成时间 : 实验一 EMU 8086软件的使用1、实验目的通过对emu8086的使用,来理解微型计算机原理及接口技术课本上的理论知识,加深对知识的运用,以及emu8086交互式学习汇编语言(Assembly Language)、计算机结构(Computer Architecture)和逆向工程(Reverse Engineering)的完整仿真体系。以及了解创建,编译,链接,调试运行,拟屏幕、源代码观察、复位、辅助工具、变量、DEB

2、UG、堆栈及FLAGS(标志寄存器)观察等功能。2、实验环境及设备实验中用到的硬件:记本电脑。软件:emu8086编程程序emu8086.exe。3、实验内容1.emu8086的编辑面板:其中编程时要做好三个要点1. 数据段: segmentends 2. 堆栈段:segmentends3. 代码段e segmentends这三个框架。编辑好程序如下; multi-segment executable .data segment ; add your data here! a db 0 b db 1 c db 0 pkey db press any key.$endsstack segment

3、 dw 128 dup(0)endscode segmentstart:; set segment registers: mov ax, data mov ds, ax mov es, ax ; add your code here mov al ,a add al,b mov c,al lea dx, pkey mov ah, 9 int 21h ; output string at ds:dx ; wait for any key. mov ah, 1 int 21h mov ax, 4c00h ; exit to operating system. int 21h endsend sta

4、rt ; set entry point and stop the assembled1 segment进行编译后:无错误后点击运行:程序中实现了赋值,传址,加法,中断等功能。4、实验总结通过本实验:可以知道在不同的环境下运行emu8086是要注意某些问题,比如xp环境下的问号在 win7下要改成0,编辑程序的框架分为三个部分数据段datasegment 堆栈段stacksegment代码段codesegment。编辑好以后要点击编译必须无误后才能运行。点击运行后可以在下一个界面单步观察,AX BX CX DX CS IP SS SP BP SI DI DS ES 的值 的情况以便更好的了解e

5、mu8086。实验二 8086指令观察1实验目的1. 掌握汇编语言程序编辑、汇编、链接和调试的基本概念。2. 掌握在PC机上建立、汇编、链接和运行8088汇编语言程序的过程。3. 通过观察深入掌握数据传送类、算术运算类和逻辑运算类等各类指令的功能。2.实验环境及设备PC机、EMU80863、实验内容1. 寻找最大最小数程序实验设内存缓冲区从BUF单元开始,存放若干个单字节数,其数据长度在BUF单元,要求找出最大数送MAX单元,最小数送MIN单元。源程序:;:MAXMIN.ASMDATASEGMENTBUFDB 9,-4,55,78,-9,0,41,124B1EQU $-BUFMAXDB ?MI

6、NDB ?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX, DATAMOVDS, AXMOVCH, 0MOVCL, B1;CX=数据个数DECCX ;循环次数 MOVAL, BUF;第一个数据送AL寄存器MOVMAX, AL;假设第一个数是最大数MOV MIN,AL;假设第一个数是最小数MOVBX, OFFSET BUF+1;下一个数据地址LAST:MOVAL, BXCMPAL, MAX;比较JGGREATCMPAL, MINJLLESSJMPNEXTGREAT:MOVMAX, AL ;大数-MAXJMPNEXTLESS:MOVMIN,

7、AL;小数-MINNEXT:INCBXLOOPLASTNOP;实验时程序执行到此,通过D命令查看数据段结果MOVAH, 4CHINT21HCODEENDSENDSTART将问号改成0后编译源程序得到错误如下:清除错误后得到点击run运行后得到2. 代码转换实验从键盘输入2个十进制数组合成压缩BCD码存入DL,再将压缩BCD码转换成ASCII码送CRT显示。 源程序:CODESEGMENTASSUMECS:CODEST:MOVAH, 01H INT21HMOVCL, 4SHLAL, CLMOV DL, ALMOVAH, 01HINT21HANDAL, 0FHORDL, ALMOVBL, DLSH

8、RDL, CLORDL, 30HMOVAH, 02HINT21HMOVDL, BLANDDL, 0FHORDL, 30HMOVAH, 02HINT21HMOV AH, 4CHINT21HCODEENDSENDST编辑后得到:编译后得到:运行后输入12 得到:4. 实验总结通过本次实验:先输入要 寻找的目的数据放于DB中,并定义max min 地址,实现的功能有数据传送,将数据送寄存器,地址指针,无条件转移指令JMP,中断 ,偏移地址传送offset。通过假设第一个数据分别是最大最小值,再将所有的数据值与第一个进行比较(CMP指令)后分别将得到的最大最小值传送给max和min. 实验三 顺序结构

9、程序设计1.实验目的 1. 熟悉EMU8086集成环境软件的使用方法。2. 熟悉8086汇编指令,能自己编写简单的程序,并调试运行验证结果。2.验设备及环境PC机、EMU80863.实验内容1. 编写简单程序,用数据运算指令,对两个16位数做加法运算。这两个数从地址10050H开始连续存放,低位在低地址一端,结果放在这两个数之后。实验框图:初始化被加数AX开始暂停被加数+加数AXAX(00054)和(00050)单元段地址DS:0000H , 被加数指针SI50H加数指针DI52H ,和的指针BX54H段地址DS:0000H , 被加数指针SI50H清除AX和CF程序清单:CODE SEGME

10、NTASSUMECS:CODEBG:MOVAX,0000HMOVDS,AXMOVSI,50HMOV DI, 52HMOVBX, 54HCLCXORAX, AXMOVAX, SIADCAX, DIMOVBX, AXHLTCODEENDSENDBG编辑得到编译无误得到:点击运行:运行后得到:4实验总结:通过本次实验:我们知道要实现两个16位数得相加,须先将两个数按大小分别送入数据寄存器中的高低地址端DI和SI再在其地址后放入相加的结果。其中用到了异或功能(XOR).实验四 分支结构程序设计一、实验目的和要求1. 学习分支结构程序的设计和调试方法;2. 熟悉8086汇编指令中的程序控制指令的应用。二

11、、实验任务学习使用EMU8086集成环境软件,验证及编写、调试实验内容。三、实验设备和软件PC机、EMU8086四、实验内容1. 已知在内存中有一个字节单元NUM,存有带符号数据,要求计算出它的绝对值后,放入RESULT单元中。 题目分析:根据数学中绝对值的概念知道,一个正数的绝对值是它本身,而一个负数的绝对值是它的相反数;要计算一个数的相反数,需要完成减法运算,即用0减去这个数。8086/8088指令系统中有专门的求相反数的指令NEG。实验框图:开 始AL0?NY结束初始化将X中的内容取到AL中将AL中的内容求补AL中的内容送RESULT单元程序清单:DATASEGMENTXDB-25RES

12、ULTDB0DATAENDSCODESEGMENTASSUMECS:CODE, DS:DATASTART:MOVAX,DATAMOV DS, AX; 初始化MOV AL, X;X取到AL中TEST AL, 80H;测试AL正负JZ NEXT;为正,转NEXTNEG AL否则AL求补NEXT:MOV RESULT, AL;送结果MOVAH, 4CHINT 21H;返回DOSCODEENDSEND START;汇编结束 编辑后得到:编译后无误:点击运行后:运行后得到:4.实验总结:通过本次实验我们能够将一个数进行取绝对值,对数据进行定义,传送等测试指令test可以测试一个数的正负情况,lea 的地

13、址偏移量传送功能,以及neg的求补功能。实验五 循环结构程序设计一、实验目的和要求1. 学习、掌握循环结构程序的设计和调试方法;2. 熟悉8086汇编指令中的程序控制指令和LOOP指令的应用。二、实验任务学习使用EMU8086集成环境软件,验证及编写、调试实验内容。三、实验设备和软件PC机、EMU8086四、实验内容1. 编写程序完成求123N的累加和,直到累加和超过1000为止。统计被累加的自然数的个数送CN单元,累加和送SUM。流程图如下图所示。实验框图:开 始AX1000?NY结束初始化0送AX,0送BX BX加1送BXAX加BX送AX BX送N,AX送SUM 程序清单:DATASEGM

14、ENTSUMDW?CNDW?DATAENDSCODESEGMENTASSUMECS:CODE, DS:DATASTART:MOVAX,DATAMOV DS, AX; 初始化MOV AX, 0;0送AXMOVBX, 0LP:INCBX;BX加1ADDAX, BX; 求累加和CMPAX, 1000; 比较JBELP; 1000转MOVSUM, AXMOV CN, BX; 送结果MOV AH, 4CHINT21HCODEENDSENDSTART; 汇编结束 编辑后:编译后无误: 点击运行:运行后得到:4.实验总结:本次实验用到了 ,三种结构顺次,分支,循环,结构中的循环语句结构,将从1开始的自然数相

15、加,将分别赋初值0,每相加一次bx自动加一并放入bx,ax顺次相加后将和放入ax,满足条件ax=1000以后,再将ax ,bx 分别传送给n 和sum.实验中用到了赋初值,加法add指令,比较cmp指令地址偏移量传送指令lea等。实验六 子程序设计一、 实验目的学习子程序的结构、特点,以及子程序的设计和调试方法。二实验设备及环境PC机,EMU8086三实验内容个子程序,功能是将一个字节的BCD码转换成二进制数。说明:名称:BCD2BIN 功能:将一个字节的BCD码转换成二进制数 所用寄存器:CX 入口参数:AL存放两位BCD码 出口参数:AL存放二进制数 主程序及子程序清单:CODESEGME

16、NTASSUMECS:CODESTART:MOVAL,12HCALLBCD2BINHALTBCD2BINPROC NEAR;子程序PUSH CXMOVCH, ALANDCH, 0FH;存低4位MOVCL, 4SHRAL, CL;高4位右移4位后乘10MOVCL, 10MULCLADDAL, CH;高4位加低4位POPCXRETBCD2BINENDP CODEENDSEND START编辑后:编译后:点击运行后:运行后:4.实验总结:本次实验中:三个结构中数据段datasegment定义数据,堆栈段stacksegment要求存取空间,代码段codesegment编写主程序代码,用寄存器CX将,入口参数AL中存放两位BCD码,出口参数AL 中存放转换后的二进制数。首先调取存取空间,并且调用子程序,CALL指令,HLT是8086处理器处于停止状态,不执行指令,定义过程的伪指令PROC,子程序中push将把CX的值压入堆栈段,SHR逻辑右移指令,MUL的乘法指令,子程序BCD2BIN中的RET是返回指令。本实验通过对子程序的调用,以及返回等操作来实现将BCD码转换成二进制数。30 / 30文档可自由编辑打印

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1