ImageVerifierCode 换一换
格式:DOCX , 页数:40 ,大小:488.72KB ,
资源ID:4758924      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4758924.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机原理Emu8086仿真软件实验讲义.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微机原理Emu8086仿真软件实验讲义.docx

1、微机原理Emu8086仿真软件实验讲义实验一 显示程序实验1.emu8086介绍Emu8086-Assembler and Microprocessor Emulator是一个可在Windows 环境下运行的8086CPU汇编仿真软件, Emu8086集源代码编辑器,汇编反汇编工具以及可以运行debug的模拟器(虚拟机器)于一身,它优于一般编译器的地方在于提供了一个虚拟的80x86环境,拥有自己一套独立的“硬件”,可以完成一些纯软件编译器无法完成的功能例如Led显示,交通灯,步进电机等等,而且动态调试(DEBUG)时非常方便一软件启动启动界面如图1所示,用户可以选择新建文本、程序实例、启动指南

2、、近期文档。注册的用户名随意,密码112,即可成功。二新建文件单击图1中的“New”选项,软件会弹出如图2所示的选择界面。 COM模板适用于简单且不需分段的程序,所有内容均放在代码段中,程序代码默认从ORG 0100H开始; EXE模板适用于需分段的复杂程序,内容按代码段、数据段、堆栈段划分。需要注意的是采用该模板时,用户不可将代码段人为地设置为ORG 0100H,而应由编译器自动完成空间分配; BIN模板二进制文件,适用于所有用户定义结构类型; BOOT模板适用于在软盘中创建文件。此外,若用户希望打开一个完全空的文档,则可选择empty workspace的选项。三编译和加载程序用户可根据上

3、述选择的模板中编写程序,如图3所示。该编辑界面集文档编辑、指令编译、程序加载、系统工具、在线帮助为一体,其菜单功能如表1所示。编写完程序后,用户只需单击工具栏上的“compile”按钮,即可完成程序的编译工作,并弹出如图4所示的编译状态界面。若有错误则会在窗口中提示,若无错误则还会弹出保存界面,让用户将编译好的文件保存相应的文件夹中。默认文件夹为emu8086MyBuild,但您可以通过菜单中assembler/ set output directory对默认文件夹进行修改。用户保存的文件类型与第一阶段所选择的模板有关。完成编译和保存文件后,用户可按下图4中的“close”按钮先关闭该窗体,再

4、利用工具栏上的“emulate”按钮打开真器界面和原程序界面进行真调试,也可以按下图4中的Run按钮运行直接程序。表1编译器菜单功能一级菜单名称二级菜单名称三级菜单名称功能file文件new新建com templatecom模板exe templateexe模板bin templatebin模板boot templateboot模板example实例open 打开文件save保存文件save as另存为prints打印文件export to HTML转换为超文本文件exit退出edit编辑undo取消redo重复cut剪切cope复制paste粘贴select all选择全部find查找fin

5、d next查找下一个replace代替indent缩进outdent凸出comment block将被选块变为注释uncomment block将被注释变为指令advanced editor macros高级宏汇编advanced高级设置Show line numbers显示行编号tabitfy selection空格转换为定位字元untabitfy selection定位字元转换为空格lowercase selection用小写字母表示uppercase selection用大写字母表示display white space显示出空格出空间bookmark书签toggle bookmark

6、在光标处放置标签previous bookmark跳到上一个标签处next bookmark跳到下一个标签处jump to first跳到第一个标签处jump to last跳到最后一个标签处clear all bookmark清除所有标签assembler汇编compile编译compile and load in the emulation编译并加载到真器中fasmFasm汇编 set output directory设置输出文件夹emulator真器show emulator显示真窗口assemble and load in the emulator编译并加载到真器中math数学计算mu

7、lti base calculator多进制基本计算器base converter基本转换器ascii code ASCII 码表help帮助documentation and tutorials 文档及指南check for an update软件更新检查 about 关于软件四仿真调试当用户完成程序编译后,利用工具栏中的“emulate”按钮可将编译好的文件加载到仿真器进行真调试。除使用“emulate”按钮外,用户也可以用菜单栏中的assembler/compile and load in the emulation或emulator/assemble and load in the e

8、mulator打开仿真器。仿真器界面如图5所示。当用户将程序加载到仿真器后,会同时打开仿真器界面和源程序界面,用户在仿真器界面中也可以同时看到源代码和编译后的机器码。点击的任意一条源程序指令,则对应的机器代码显示为被选显示状态,与此同时,上面的代码指针也会相应变化。用户也可以通过这种操作了解,数据段和堆栈段中各变量或数据在存储器中的情况。用户可以利用工具栏中的“single step”按钮进行单步跟踪调试,以便仔细观察各寄存器、存储器、变量、标记位等情况,这对于程序初始调试时十分有用;当程序调试完毕,或需要连续运行观察时,则可以使用“run”按钮;当希望返回上一步操作时,则可以使用“step

9、back”按钮;若单击“reload”按钮,则真器会重新加载程序,并将指令指针指向程序的第一条指令;您也可以利用“load”按钮,从您保存的文件夹中加载其它程序。用户除使用上述工具栏中的按钮进行仿真调试外,还可以利用其菜单中的其它功能进行更高级的调试和设置。菜单的详细功能见表2所示。表2真器菜单功能一级菜单名称二级菜单名称功能file文件load executable加载要执行的程序reload重新加载程序examples打开实例reset emulator and ram复位真器和RAMset command line parameter设置命令行参数set the emulators st

10、ate保存真器设置load form previous state载入原先保存的设置math数学计算multi base calculator多进制基本计算器base converter基本转换器debugsingle step 单步跟踪single over单步step back单步返回stop on condition设置停止运行的条件run until 运行到光标处run连续运行set break point 在光标处设置断点 clear break point清除所有断点show current break point 显示当前断点指令show current instruction

11、(at CS :IP)显示当前指令set CS:IP to selected position将被选指令设定为当前指令view观察log and debug.exe emulation打开debug.调试窗口extend value viewer打开扩展数值观察器stack打开堆栈窗口variables打开变量窗口symbol table打开标记表listing显示源程序及目标文件内容original source code 打开源程序代码窗口option 软件高级设置,可对字体、颜色、文本格式、键盘输入等进行设置arithmetic & logical unit选择打开存储器、寄存器等单元,

12、与AUX按钮功能相同flag打开标记位窗口lexical flag analyser打开文本说明格式的标记位窗口ascii code打开ASCII码表emulator screen打开模拟屏幕窗口external 外部真器start debug.exe启动windows的debug真调试器command prompt打开DOS命令窗口run在DOS环境下运行程序virtual devices虚拟设备LED-Disply.exeLED显示器printer.exe打印机robit.exe机器人simple.exe读写端口simplest.exe在屏幕上读写端口stepper_motor.exe步进

13、马达thermometer.exe温度控制tranffic_lights交通灯控制VGA_STATE.exe显示屏控制Virtual drive虚拟驱动盘boot form virtual floppy (floppy_0) 从虚拟的软盘中导入程序write 512 byte at 0000:7C00 to boot sector (floppy_0) (将存储器中07C00单元开始的512个字节写到软盘中write “.bin” file to floppy 将bin文件写到软盘中create new floppy drive 创建一个新的软盘2.实验目的 (1) 熟悉emu8086集成环境

14、和调试器的使用。 (2) 掌握部分DOS功能调用使用方法。 3.实验内容本实验要求显示一串字符。注释:INT10H是由BIOS对屏幕及显示器所提供的服务程序,这些服务程序也加挂在INT10H内。使用INT10H中断服务程序时,先指定AH寄存器为下表编号其中之一,该编号表示欲调用的功用,而其他寄存器的详细说明,参考表后文字,当一切设定好之后再调用INT10H。AH:00H设置显示器模式AL:03H 802516色文本AH: 10H设置颜色中断。AL: 03H触发闪烁/亮显位4.参考程序:name hi-world; this example prints out hello world!; by

15、 writing directly to video memory.; in vga memory: first byte is ascii character, byte that follows is character attribute.; if you change the second byte, you can change the color of; the character even after it is printed.; character attribute is 8 bit value,; high 4 bits set background color and

16、low 4 bits set foreground color.; hex bin color; ; 0 0000 black; 1 0001 blue; 2 0010 green; 3 0011 cyan; 4 0100 red; 5 0101 magenta; 6 0110 brown; 7 0111 light gray; 8 1000 dark gray; 9 1001 light blue; a 1010 light green; b 1011 light cyan; c 1100 light red; d 1101 light magenta; e 1110 yellow; f 1

17、111 white org 100h; set video mode mov ax, 3 ; text mode 80x25, 16 colors, 8 pages (ah=0, al=3)int 10h ; do it!; cancel blinking and enable all 16 colors:mov ax, 1003hmov bx, 0int 10h; set segment register:mov ax, 0b800hmov ds, ax; print hello world; first byte is ascii code, second byte is color co

18、de.mov 02h, Hmov 04h, emov 06h, lmov 08h, lmov 0ah, omov 0ch, ,mov 0eh, W mov 10h, omov 12h, rmov 14h, lmov 16h, dmov 18h, !; color all characters:mov cx, 12 ; number of characters.mov di, 03h ; start from byte after hc: mov di, 11101100b ; light red(1100) on yellow(1110) add di, 2 ; skip over next

19、ascii code in vga memory. loop c; wait for any key press:mov ah, 0int 16hret5.总结思考1.DS数据段寄存器:数据所存放段的起始地址b800h,观察内存b800:0000的存放内容2. mov ax, 0b800hmov ds, ax改为mov ds, 0b800h是否可行实验二 十进制数的BCD码加法运算程序实验1.实验目的 (1) 掌握运算类指令编程及调试方法。 (2) 掌握运算类指令对各状态标志位的影响及测试方法。2.实验原理(1)二进制数在计算机上进行运算是非常简单的。但是,通常人们习惯于用十进制数。在计算机中

20、十进制数是用BCD码来表示的,BCD码有两类:一类叫压缩型BCD码,一类叫非压缩型BCD码。压缩BCD码与非压缩BCD码的区别 压缩BCD码的每一位用4位二进制表示,一个字节表示两位十进制数。例如10010110B表示十进制数96D;非压缩BCD码用1个字节表示一位十进制数,高四位总是0000,低4位的00001001表示09.例如00001000B表示十进制数8.8421 BCD码是最基本和最常用的BCD码,它和四位自然二进制码相似,各位的权值为8、4、2、1,故称为有权BCD码。和四位自然二进制码不同的是,它只选用了四位二进制码中前10组代码,即用00001001分别代表它所对应的十进制数

21、,余下的六组代码不用。用BCD码进行加、减、乘、除运算,通常采用两种方法:一种是在指令系统中设置一套专用于BCD码运算的指令;另一种是利用二进制数的运算指令算出结果,然后再用专门的指令对结果进行修正(调整),使之转变为正确的BCD码表示的结果。80868088指令系统所采用的是后一种方法。BCD码的运算规则:BCD码是十进制数,而运算器对数据做加减运算时,都是按二进制运算规则进行处理的。这样,当将 BCD码传送给运算器进行运算时,其结果需要修正。修正的规则是:当两个BCD码相加,如果和等于或小于 1001(即十进制数9),不需要修正;如果相加之和在 1010 到1111(即十六进制数 0AH0

22、FH)之间,则需加 6 进行修正;如果相加时,本位产生了进位,也需加 6 进行修正。这样做的原因是,机器按二进制相加,所以 4 位二进制数相加时,是按“逢十六进一”的原则进行运算的,而实质上是 2 个十进制数相加,应该按“逢十进一”的原则相加,16 与10相差 6,所以当和超过 9或有进位时,都要加 6 进行修正。需要修正 BCD码运算值的举例。(1) 计算 5+8;(2) 计算 8+8解:(1) 将 5 和 8 以 8421 BCD输入机器,则运算如下:0 1 0 1+) 1 0 0 01 1 0 1 结果大于 9+) 0 1 1 0 加 6 修正1 0 0 1 1 即13 的 BCD码结果

23、是 0011,即十进制数3,还产生了进位。5+8=13,结论正确。(2)将8以8421 BCD输入机器,则运算如下:1 0 0 0+)1 0 0 01 0 0 0 0 结果大于9+)0 1 1 0 加6修正1 0 1 1 0 16的BCD码结果是0110,即十进制的6,而且产生进位。8+8=16,结论正确。(2)非压缩型BCD码加法调整指令AAA(ASCIIAdjustforAddition)指令格式:AAAAAA也称为加法的ASCII调整指令。指令后面不写操作数,但实际上隐含累加器操作数AL和AH。指令的操作为:如果(AL)0FH9,或(AF)=1则(AL)(AL)+06H(AH)(AH)+

24、1(AF)1(CF)(AF)(AL)(AL)0FH)否则(AL)(AL)0FH)由上可见,指令将影响AF和CF标志,但状态标志位SF、ZF、PF和OF的状态不确定。在用AAA指令调整以前,先用指令ADD(多字节加法时用ADC)进行8位数的加法运算,相加结果放在AL中,用AAA指令调整后,非压缩型BCD码结果的低位在AL寄存器,高位在AH寄存器。3.实验内容:本实验要求计算X+Y=Z,其中,X、Y、Z为BCD码,其中X=09H,Y=05H。4.参考程序:; this example shows the use of aaa instruction (ascii adjust after addi

25、tion).; it is used to add huge bcd numbers.name bcd_aaaorg 100h; first number 9:mov ah, 09h; second number 5:mov al, 05h; al = al + ah =; = 09h + 05h = 0ehadd al, ah; clear tens byte of bcd; result:xor ah, ah; adjust result to bcd form,; ah = 1, al = 4 - 14aaa; print the result:; store contents of;

26、ax register:mov dx, ax; print first digit:mov ah, 0eh; convert to ascii:or dh, 30hmov al, dhint 10h; print second digit:; convert to ascii:or dl, 30hmov al, dlint 10h; wait for any key press:mov ah, 0int 16hret ; return control to operating system.5总结思考:(1)xor指令含义; (2)aaa指令的操作过程实验三 串操作类指令应用程序1.实验目的

27、(1) 掌握串操作类指令编程及调试方法。 (2) 掌握串操作类指令对各状态标志位的影响及测试方法。2.实验原理(1)在计算机中,大部分数据存放在主存中,8086CPU提供了一组处理主存中连续存放的数据串的指令串操作指令。串操作指令中,源操作数用寄存器SI寻址,默认在数据段DS中;目的操作数用寄存器DI寻址,默认在附加段ES中。每执行一次串操作指令,作为源地址指针的SI和作为目的地址指针的DI将自动修改:+/-1(对于字节串)或+/-2(对于字串)。地址指针时增加还是减少取决于方向标志DF。在系统初始化后或者执行指令CLD指令后,DF=0,此时地址指针增1或2;在执行指令STD后,DF=1,此时地址指针减1或2。串操作指令寻址方式:源操作数和目的操作数分别使用寄存器DS:SI和ES:DI进行间接寻址,源指针DS:SI和目的指针ES:DI将自动进行修改:1、2、4,其对应的分别是字节操作、字操作和双字操作。串比较指令:CMPSB;字节串比较:DS:SI-ES:DI,SISI+/-1,DIDI+/-1CMPSW;字串比较:DS:SI-ES:DI,SISI+/-2,DIDI+/-2比较指令的功能是比较源串与目的串是否相同,并根据其减法

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1