Emu8086的使用方法(实验一)新

合集下载

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

微型计算机原理及接口技术实验报告
MUL
CL
ADD
AL, CH
;高4位加低4位
POP
CX
RET
BCD2BIN
ENDP
CODE
ENDS
END
START
编辑后:
编译后:
点击运行后:
运行后:
4.实验总结:
本次实验中:三个结构中数据段datasegment定义数据,堆栈段stacksegment要求存取空间,代码段codesegment编写主程序代码,用寄存器CX将,入口参数AL中存放两位BCD码,出口参数AL 中存放转换后的二进制数。首先调取存取空间,并且调用子程序,CALL指令,HLT是8086处理器处于停止状态,不执行指令,定义过程的伪指令PROC,子程序中push将把CX的值压入堆栈段,SHR逻辑右移指令,MUL的乘法指令,子程序BCD2BIN中的RET是返回指令。本实验通过对子程序的调用,以及返回等操作来实现将BCD码转换成二进制数。
ENDS
END
START
将问号改成0后编译源程序得到错误如下:
清除错误后得到
点击run
运行后得到
2. 代码转换实验
从键盘输入2个十进制数组合成压缩BCD码存入DL,再将压缩BCD码转换成ASCII码送CRT显示。
源程序:
CODE
SEGMENT
ASSUME
CS:CODE
ST:
MOV
AH, 01H
INT
4、实验总结
通过本实验:可以知道在不同的环境下运行emu8086是要注意某些问题,比如xp环境下的问号在win7下要改成0,编辑程序的框架分为三个部分数据段datasegment堆栈段stacksegment代码段codesegment。编辑好以后要点击编译必须无误后才能运行。点击运行后可以在下一个界面单步观察,AX BX CX DX CS IP SS SP BP SI DI DS ES的值的情况以便更好的了解emu8086。

8086实验指导书

8086实验指导书

频率 300KHz 8088
AEDK88ET
与PC机连
ADC0809
8279
VCC GND
8259 蜂呜器 8位开关
8251 8253 62256
39
I/O译码电路
40
第四章 硬件接口实验
41

实验一
一、实验要求
双色灯实验
编写程序,以8255为输出口,控制四个双色灯按红、绿、黄的要求发光。
二、实验目的
35
8. 实验仪必须如下显示才算加载成功
只有显示8688 2.1 才算加载成功
36
9.如何知道程序是不是处在执行状态,可观察如下几个位 置:

交替闪烁

交替闪烁
37
10.如何中止程序的执行
1.中止执行程 序按HALT
2 .恢复初始 状态按RST
38
电位器 译码器地址 8位LED 电源开关
交通灯 DAC0832 8255
26
主程序 调用inword 调用sort BUFF→SI [SI]→AL 调用display SI+1
Display子程序 AL/10→AL,AH AL+30H→AL AH+30H→AH AH→DH AH=2 调用 INT21H显示 显示空格 CX-1 CX=0? 结束
27
A
DH → AL
AH=2调用 INT21H显示 RET
23
实验二 从键盘输入并换
一. 实验要求 从键盘输入5个有符号2位十进制数,将它转换成有符号二进制数, 将结果送入内存中buff开始的单元中。 二. 实验目的 掌握键盘接受数据的方法,码制转换。 三. 实验程序框图 算法: ①符号字符串→标识符MINU。若为负, MINU=1; ②数字字符(31H~39H)→一位十进制数(0~9)a0,a1,a2… ③十进制数转换成十六进制数: 十六进制数=a2x100+a1x10+a0 =(a2x10+a1) x10+a0 ④ 转换后查符号,如果是负数,取补 码制转换部分流程图: 24

emu8086使用教程

emu8086使用教程

Emu8086模拟器
安装步骤如下:
1.解压缩:将解压到当前文件夹,会增加一个Emu8086 文件夹;
2.安装:打开Emu8086 文件夹,选择Emu8086 子文件夹,执行程序,进行安装;
3.汉化:将emu8086_汉化包解压缩,然后将其子文件夹emu8086_chs_zhaopeng内所有文件复制到C:\Program Files\文件夹内,完成汉化工作。

4.注册:按照Emu8086 文件夹内的“注册码.txt”文档提供的Name, Code, Licence进行注册,完成安装。

Emu8086的使用
新建文件(四种模板):
COM模板:适合简单程序段,从代码段的偏移地址为1000H处开始存放指令
EXE模板:适合完整程序的编写
BIN模板:一般不用,因为不能正确解释伪指令
BOOT模板:编写程序,数据段的段地址为07C0H
查看内存、修改内存:[查看]/[查看外部内存查看器]
查看变量值:[查看]/[变量]
查看标志寄存器:[查看]/[标志寄存器]查看堆栈:[查看]/[堆栈]
表达式求值:[数学]/[表达式求值]
数值转换:[数学]/[数值转换]。

微机原理与接口技实验报告

微机原理与接口技实验报告

微机原理与接口技术实验报告学院: 核技术与自动化工程学院专业: 电气工程及其自动化班级: XXXXXX学号: XXXXX姓名: XXX指导老师: XXX完成时间: 2012、11、14实验一 EMU8086软件的使用一、实验目的1、了解EMU 8086软件的基本使用步骤和各个工作区的功能,在能力方面主要是学以致用,将理论知识运用于实际的设计,从设计的完整和缺陷中找到新的突破口,以便温故而知新,从而提升自己的实际操作技能,能够通过自我想象与思考做出很多有价值的设计。

2、在系统的学习了微机原理与接口技术后,主要针对8086,利用emu8086软件设计一些程序,熟悉了解此款软件的运行过程中各个步骤寄存器内容及地址的变化。

3、在理论方面,基础软件实验部分共有六个实验组成,通过对这些实验程序的编写、调试,使学生熟悉8086/8088的指令系统等,了解程序设计过程,掌握汇编程序设计方法以及如何使用实验系统提供的各种调试、分析手段来排除程序错误。

二、实验仪器及设备PC设备、EMU8086软件平台、EMU8086软件仿真平台三、实验内容双击EMU8086图标,打开程序。

此时会弹出welcome窗口,见图1.1所示,可将该窗口关闭直接进入编辑状态;也可点击它的new按钮,则会弹出代码模板选择框供用户选择(可选择EXE模板),见图1.2所示,一般点击Cancel按钮,直接进入编辑状态。

在编辑窗口,可直接将源程序输入,见图1.3所示。

图1.1 welcome窗口图1.2 模板选择图1.3编辑窗口输入源程序点击compile(编译)按钮则进行汇编和链接,生成.EXE文件,并提示存盘。

点击emulate(仿真)按钮则可进入8086仿真器界面,见图1.4所示。

界面中提供了寄存器窗口、内存单元窗口及反汇编窗口,下方一行按钮则提供了虚拟屏幕、源代码观察、复位、辅助工具、变量、DEBUG、堆栈及FLAGS(标志寄存器)观察等功能。

Emu8086的使用方法(实验一)新

Emu8086的使用方法(实验一)新

MOV AX, DATA1
ADD AX, DATA2
MOV [2800H], AX
HLT
CSEG ENDS
END START
(注:源程序有故意保留的错误,请你改正)
文件的保存:点击快捷键“保存” 。
也可以从“文件”项目中选择“另存 为”。
• 所保存文件的扩展名,自动定为.ASM。
文件的编译:编辑好的文件需要进行 编译后才能运行。可点击“编译”快 捷键。
编辑界面:第一次编写源程序, 点击 “新建”按钮,否则,点击“打开”按 钮。
工作模板的选择:选择“EXE模 板”。
“EXE模板”编辑界面
几点说明: • “模板”列出了常用的“段”设置和
“子程序”设置部分,您可以根据需 要进行选择。不需要的部分及内容可 以直接删除。 • ASSMUME指令需要自己编写。
《微机原理及应用》实验
作者:张锡鹤 2012.10.11
实验一
Emu8086仿真软件的使用
实验目的:
1. 学习、掌握Emu8086软件的使用方法; 2. 了解汇编语言的程序结构及调试方法。
实验要求:
1. 能够正确选择Emu8086软件的工作模 板;
2. 能够正确编写存储器中两个多位无符 号数相加的源程序;
如果编译正确, “编译错误”栏 中空白。
如果出错, “编译错误” 栏中将有错 误说明。并 改变源文件 出错行的颜 色。
在源文件中 改正错误后 还需要重新 编译,直至 无错误为止。
建立并保存编译后的文件(取名)。
如果存在同名文件时,会出现提示。 是否替换原文件,你自己决定。
使用 “单步 执行” 便于观 察、分 析运行 的过程
• 从内存中观察计算结果。

emu8086教程而且是追码实例说明

emu8086教程而且是追码实例说明

今天我们详细说下emu8086教程而且是追码实例说明【详细过程开始】先简单介绍一下这一款软件的注册原理:这个软件在注册时,会同时在注册表中和自己的根目录中写下注册信息。

在启动时候会先判断注册表,然后判断根目录下的reg.ini文件看哪一个是成功的。

只要有一个是成功的就不再继续判断了,也就是只要有一处是成功的,软件就算是注册成功版了。

下面开始了:-------------------------------------注册流程----------------------------------005D4B01.83BD08FFFFFF00cmp dword ptr ss:[ebp-F8],0;就先断在此处,开始往下调005D4B08.7D26jge short emu8086.005D4B30005D4B0A.68A0000000push0A0005D4B0F.68B8454400push emu8086.004445B8005D4B14.8B850CFFFFFF mov eax,dword ptr ss:[ebp-F4]005D4B1A.50push eax005D4B1B.8B8D08FFFFFF mov ecx,dword ptr ss:[ebp-F8]005D4B21.51push ecx005D4B22.FF15B0104000call dword ptr ds:[<&MSVBVM60.__vbaHresultChec>;MSVBVM60.__vbaHresultCheckObj005D4B28.898570FEFFFF mov dword ptr ss:[ebp-190],eax005D4B2E.EB0A jmp short emu8086.005D4B3A005D4B30>C78570FEFFFF00000000mov dword ptr ss:[ebp-190],0005D4B3A>8B5508mov edx,dword ptr ss:[ebp+8] 005D4B3D.8B02mov eax,dword ptr ds:[edx] 005D4B3F.8B4D08mov ecx,dword ptr ss:[ebp+8] 005D4B42.51push ecx005D4B43.FF90FC020000call dword ptr ds:[eax+2FC]005D4B49.50push eax005D4B4A.8D55C4lea edx,dword ptr ss:[ebp-3C]005D4B4D.52push edx005D4B4E.FF15FC104000call dword ptr ds:[<&MSVBVM60.__vbaObjSet>];MSVBVM60.__vbaObjSet005D4B54.898504FFFFFF mov dword ptr ss:[ebp-FC],eax005D4B5A.8D45D4lea eax,dword ptr ss:[ebp-2C]005D4B5D.50push eax005D4B5E.8B8D04FFFFFF mov ecx,dword ptr ss:[ebp-FC]005D4B64.8B11mov edx,dword ptr ds:[ecx]005D4B66.8B8504FFFFFF mov eax,dword ptr ss:[ebp-FC]005D4B6C.50push eax005D4B6D.FF92A0000000call dword ptr ds:[edx+A0]005D4B73.DBE2fclex005D4B75.898500FFFFFF mov dword ptr ss:[ebp-100],eax005D4B7B.83BD00FFFFFF00cmp dword ptr ss:[ebp-100],0005D4B82.7D26jge short emu8086.005D4BAA005D4B84.68A0000000push0A0005D4B89.68B8454400push emu8086.004445B8005D4B8E.8B8D04FFFFFF mov ecx,dword ptr ss:[ebp-FC]005D4B94.51push ecx005D4B95.8B9500FFFFFF mov edx,dword ptr ss:[ebp-100]005D4B9B.52push edx005D4B9C.FF15B0104000call dword ptr ds:[<&MSVBVM60.__vbaHresultChec>;MSVBVM60.__vbaHresultCheckObj005D4BA2.89856CFEFFFF mov dword ptr ss:[ebp-194],eax005D4BA8.EB0A jmp short emu8086.005D4BB4、005D6E88>66:8B55DC mov dx,word ptr ss:[ebp-24];循环3开始005D6E8C.66:039540FFFFFF add dx,word ptr ss:[ebp-C0];循环3当然是最后整理注册码了005D6E93.0F8003010000jo emu8086.005D6F9C005D6E99.66:8955DC mov word ptr ss:[ebp-24],dx005D6E9D>66:8B45DC mov ax,word ptr ss:[ebp-24]005D6EA1.66:3B853CFFFFFF cmp ax,word ptr ss:[ebp-C4]005D6EA8.7F24jg short emu8086.005D6ECE005D6EAA.C745FC29000000mov dword ptr ss:[ebp-4],29005D6EB1.8D4D B4lea ecx,dword ptr ss:[ebp-4C]005D6EB4.51push ecx005D6EB5.E8F6000000call emu8086.005D6FB0005D6EBA.8BD0mov edx,eax005D6EBC.8D4D B4lea ecx,dword ptr ss:[ebp-4C]005D6EBF.FF15D0134000call dword ptr ds:[<&MSVBVM60.__vbaStrMove>];MSVBVM60.__vbaStrMove005D6EC5.C745FC2A000000mov dword ptr ss:[ebp-4],2A005D6ECC.^EB BA jmp shortemu8086.005D6E88;循环3结尾005D6ECE>C745FC2B000000mov dword ptr ss:[ebp-4],2B005D6ED5.8B55B4mov edx,dword ptr ss:[ebp-4C]005D6ED8.89956CFFFFFF mov dword ptr ss:[ebp-94],edx005D6EDE.C78564FFFFFF08000000mov dword ptr ss:[ebp-9C],8005D6EE8.8D9564FFFFFF lea edx,dword ptr ss:[ebp-9C]005D6EEE.8D4D B8lea ecx,dword ptr ss:[ebp-48]005D6EF1.FF15B0134000call dword ptr ds:[<&MSVBVM60.__vbaVarCopy>];MSVBVM60.__vbaVarCopy005D6EF7.686C6F5D00push emu8086.005D6F6C005D6EFC.EB2E jmp short emu8086.005D6F2C;跳向005D6F2C已经实现005D6EFE.8B45F0mov eax,dword ptr ss:[ebp-10]005D6F01.83E004and eax,4005D6F04.85C0test eax,eax005D6F06.7409je short emu8086.005D6F11005D6F08.8D4D B8lea ecx,dword ptr ss:[ebp-48]005D6F0B.FF1534104000call dword ptr ds:[<&MSVBVM60.__vbaFreeVar>];MSVBVM60.__vbaFreeVar005D6F11>8D8D74FFFFFF lea ecx,dword ptr ss:[ebp-8C]005D6F17.51push ecx005D6F18.8D5584lea edx,dword ptr ss:[ebp-7C]005D6F1B.52push edx005D6F1C.8D4594lea eax,dword ptr ss:[ebp-6C]005D6F1F.50push eax005D6F20.6A03push3005D6F22.FF1550104000call dword ptr ds:[<&MSVBVM60.__vbaFreeVarList>;MSVBVM60.__vbaFreeVarList005D6F28.83C410add esp,10005D6F2B.C3retn005D6F2C>8D4D D8lea ecx,dword ptr ss:[ebp-28];跳转来自005D6EFC005D6F2F.FF153C144000call dword ptr ds:[<&MSVBVM60.__vbaFreeStr>];MSVBVM60.__vbaFreeStr005D6F35.8D4D D4lea ecx,dword ptr ss:[ebp-2C]005D6F38.FF153C144000call dword ptr ds:[<&MSVBVM60.__vbaFreeStr>];MSVBVM60.__vbaFreeStr005D6F3E.8D4D C8lea ecx,dword ptr ss:[ebp-38]005D4BAA>C7856CFEFFFF00000000mov dword ptr ss:[ebp-194],0005D4BB4>8B45D4mov eax,dword ptr ss:[ebp-2C]005D4BB7.8985C0FEFFFF mov dword ptr ss:[ebp-140],eax;运行至此,寄存器中已出现输入的假码005D4BBD.C745D400000000mov dword ptr ss:[ebp-2C],0005D4BC4.8B95C0FEFFFF mov edx,dword ptr ss:[ebp-140]005D4BCA.8D4D CC lea ecx,dword ptr ss:[ebp-34]005D4BCD.FF15D0134000call dword ptr ds:[<&MSVBVM60.__vbaStrMove>];MSVBVM60.__vbaStrMove005D4BD3.8B4D D8mov ecx,dword ptr ss:[ebp-28]005D4BD6.898D BCFEFFFF mov dword ptr ss:[ebp-144],ecx005D4BDC.C745D800000000mov dword ptr ss:[ebp-28],0005D4BE3.8B95BCFEFFFF mov edx,dword ptr ss:[ebp-144]005D4BE9.8D4D D0lea ecx,dword ptr ss:[ebp-30]005D4BEC.FF15D0134000call dword ptr ds:[<&MSVBVM60.__vbaStrMove>];MSVBVM60.__vbaStrMove005D4BF2.6864D46100push emu8086.0061D464005D4BF7.6884D46100push emu8086.0061D484;d005D4BFC.8D55CC lea edx,dword ptr ss:[ebp-34]005D4BFF.52push edx005D4C00.8D45D0lea eax,dword ptr ss:[ebp-30]005D4C04.E8E70F0000call emu8086.005D5BF0005D4C09.8D4D CC lea ecx,dword ptr ss:[ebp-34]005D4C0C.51push ecx005D4C0D.8D55D0lea edx,dword ptr ss:[ebp-30]005D4C10.52push edx005D4C11.6A02push2005D4C13.FF1544134000call dword ptr ds:[<&MSVBVM60.__vbaFreeStrList>;MSVBVM60.__vbaFreeStrList005D4C19.83C40C add esp,0C005D4C1C.8D45C4lea eax,dword ptr ss:[ebp-3C]005D4C1F.50push eax005D4C20.8D4D C8lea ecx,dword ptr ss:[ebp-38]005D4C23.51push ecx005D4C26.FF1560104000call dword ptr ds:[<&MSVBVM60.__vbaFreeObjList>;MSVBVM60.__vbaFreeObjList005D4C2C.83C40C add esp,0C005D4C2F.C745FC21000000mov dword ptr ss:[ebp-4],21005D4C36.66:C78510FFFFFF FFFF mov word ptr ss:[ebp-F0],0FFFF005D4C3F.8D9510FFFFFF lea edx,dword ptr ss:[ebp-F0]005D4C45.52push edx005D4C46.E835130000call emu8086.005D5F80;这个call按f8也能过去,就是算法call 按f7多走路005D4C4B.C745FC22000000mov dword ptr ss:[ebp-4],22;返回于此005D4C52.0FBF0570D46100movsx eax,word ptr ds:[61D470]005D4C59.85C0test eax,eax005D4C5B0F8453050000je emu8086.005D51B4;关键的一跳,跳向失败处005D4C61.C745FC23000000mov dword ptr ss:[ebp-4],23005D4C68.680000FF00push0FF0000005D4C6D.8B4D08mov ecx,dword ptr ss:[ebp+8]005D4C70.8B11mov edx,dword ptr ds:[ecx]005D4C72.8B4508mov eax,dword ptr ss:[ebp+8]005D4C75.50push eax005D4C76.FF5264call dword ptr ds:[edx+64]005D4C79.DBE2fclex005D4C7B.89850CFFFFFF mov dword ptr ss:[ebp-F4],eax005D4C81.83BD0CFFFFFF00cmp dword ptr ss:[ebp-F4],0005D4C887D20jge short emu8086.005D4CAA005D4C8A.6A64push64005D4C8C.6860B24400push emu8086.0044B260005D4C91.8B4D08mov ecx,dword ptr ss:[ebp+8]005D4C94.51push ecx005D4C95.8B950CFFFFFF mov edx,dword ptr ss:[ebp-F4]005D4C9B.52push edx005D4C9C.FF15B0104000call dword ptr ds:[<&MSVBVM60.__vbaHresultChec>;MSVBVM60.__vbaHresultCheckObj005D4CA2.898568FEFFFF mov dword ptr ss:[ebp-198],eax005D4CA8.EB0A jmp short emu8086.005D4CB4005D4CAA>C78568FEFFFF00000000mov dword ptr ss:[ebp-198],0005D4CB4>C745FC24000000mov dword ptrss:[ebp-4],24;下面一句不用我多说了吧,注册成功了005D4CBB.6818074500push emu8086.00450718;the software is successfully registered005D4CC0.8B4508mov eax,dword ptr ss:[ebp+8]005D4CC3.8B08mov ecx,dword ptr ds:[eax]005D4CC5.8B5508mov edx,dword ptr ss:[ebp+8]005D4CC8.52push edx005D4CC9.FF5154call dword ptr ds:[ecx+54]005D4CCC.DBE2fclex005D4CCE.89850CFFFFFF mov dword ptr ss:[ebp-F4],eax005D4CD4.83BD0CFFFFFF00cmp dword ptr ss:[ebp-F4],0005D4CDB.7D20jge short emu8086.005D4CFD005D4CDD.6A54push54005D4CDF.6860B24400push emu8086.0044B260005D4CE4.8B4508mov eax,dword ptr ss:[ebp+8]005D4CE7.50push eax005D4CE8.8B8D0CFFFFFF mov ecx,dword ptr ss:[ebp-F4]005D4CEE.51push ecx005D4CEF.FF15B0104000call dword ptr ds:[<&MSVBVM60.__vbaHresultChec>;MSVBVM60.__vbaHresultCheckObj005D4CF5.898564FEFFFF mov dword ptr ss:[ebp-19C],eax005D4CFB.EB0A jmp short emu8086.005D4D07005D4CFD>C78564FEFFFF00000000mov dword ptr ss:[ebp-19C],0005D4D07>C745FC25000000mov dword ptr ss:[ebp-4],25005D4D0E.8B5508mov edx,dword ptr ss:[ebp+8]005D4D11.8B02mov eax,dword ptr ds:[edx]005D4D13.8B4D08mov ecx,dword ptr ss:[ebp+8]005D4D16.51push ecx005D4D17.FF900C030000call dword ptr ds:[eax+30C]005D4D1D.50push eax005D4D1E.8D55C8lea edx,dword ptr ss:[ebp-38]005D4D21.52push edx005D4D22.FF15FC104000call dword ptr ds:[<&MSVBVM60.__vbaObjSet>];MSVBVM60.__vbaObjSet005D4D28.89850CFFFFFF mov dword ptr ss:[ebp-F4],eax005D4D2E.6A00push0005D4D30.8B850CFFFFFF mov eax,dword ptr ss:[ebp-F4]005D4D36.8B08mov ecx,dword ptr ds:[eax]005D4D38.8B950CFFFFFF mov edx,dword ptr ss:[ebp-F4]005D4D3E.52push edx005D4D3F.FF9194000000call dword ptr ds:[ecx+94]005D4D45.DBE2fclex005D4D47.898508FFFFFF mov dword ptr ss:[ebp-F8],eax005D4D4D.83BD08FFFFFF00cmp dword ptr ss:[ebp-F8],0005D4D54.7D26jge short emu8086.005D4D7C005D4D56.6894000000push94005D4D5B.6880B54300push emu8086.0043B580005D4D60.8B850CFFFFFF mov eax,dword ptr ss:[ebp-F4]005D4D66.50push eax005D4D67.8B8D08FFFFFF mov ecx,dword ptr ss:[ebp-F8]005D4D6D.51push ecx005D4D6E.FF15B0104000call dword ptr ds:[<&MSVBVM60.__vbaHresultChec>;MSVBVM60.__vbaHresultCheckObj005D4D74.898560FEFFFF mov dword ptr ss:[ebp-1A0],eax005D4D7A.EB0A jmp short emu8086.005D4D86005D4D7C>C78560FEFFFF00000000mov dword ptr ss:[ebp-1A0],0005D4D86>8D4D C8lea ecx,dword ptr ss:[ebp-38]005D4D89.FF1538144000call dword ptr ds:[<&MSVBVM60.__vbaFreeObj>];MSVBVM60.__vbaFreeObj005D4D8F.C745FC26000000mov dword ptr ss:[ebp-4],26005D4D96.8B5508mov edx,dword ptr ss:[ebp+8]005D4D99.8B02mov eax,dword ptr ds:[edx]005D4D9B.8B4D08mov ecx,dword ptr ss:[ebp+8]005D4D9E.51push ecx005D4D9F.FF9004030000call dword ptr ds:[eax+304]005D4DA5.50push eax005D4DA6.8D55C8lea edx,dword ptr ss:[ebp-38]005D4DA9.52push edx005D4DAA.FF15FC104000call dword ptr ds:[<&MSVBVM60.__vbaObjSet>];MSVBVM60.__vbaObjSet005D4DB0.89850CFFFFFF mov dword ptr ss:[ebp-F4],eax005D4DB6.6A00push0005D4DB8.8B850CFFFFFF mov eax,dword ptr ss:[ebp-F4]005D4DBE.8B08mov ecx,dword ptr ds:[eax]005D4DC0.8B950CFFFFFF mov edx,dword ptr ss:[ebp-F4]005D4DC6.52push edx005D4DC7.FF9194000000call dword ptr ds:[ecx+94]005D4DCD.DBE2fclex005D4DCF.898508FFFFFF mov dword ptr ss:[ebp-F8],eax005D4DD5.83BD08FFFFFF00cmp dword ptr ss:[ebp-F8],0005D4DDC.7D26jge short emu8086.005D4E04005D4DDE.6894000000push94005D4DE3.6880B54300push emu8086.0043B580005D4DE8.8B850CFFFFFF mov eax,dword ptr ss:[ebp-F4]005D4DEE.50push eax005D4DEF.8B8D08FFFFFF mov ecx,dword ptr ss:[ebp-F8]005D4DF5.51push ecx005D4DF6.FF15B0104000call dword ptr ds:[<&MSVBVM60.__vbaHresultChec>;MSVBVM60.__vbaHresultCheckObj005D4DFC.89855CFEFFFF mov dword ptr ss:[ebp-1A4],eax005D4E02.EB0A jmp short emu8086.005D4E0E005D4E04>C7855CFEFFFF00000000mov dword ptr ss:[ebp-1A4],0005D4E0E>8D4D C8lea ecx,dword ptr ss:[ebp-38]005D4E11.FF1538144000call dword ptr ds:[<&MSVBVM60.__vbaFreeObj>];MSVBVM60.__vbaFreeObj005D4E17.C745FC27000000mov dword ptr ss:[ebp-4],27005D4E1E.8B5508mov edx,dword ptr ss:[ebp+8]005D4E21.8B02mov eax,dword ptr ds:[edx]005D4E23.8B4D08mov ecx,dword ptr ss:[ebp+8]005D4E26.51push ecx005D4E27.FF9008030000call dword ptr ds:[eax+308]005D4E2D.50push eax005D4E2E.8D55C8lea edx,dword ptr ss:[ebp-38]005D4E31.52push edx005D4E32.FF15FC104000call dword ptr ds:[<&MSVBVM60.__vbaObjSet>];MSVBVM60.__vbaObjSet005D4E38.89850CFFFFFF mov dword ptr ss:[ebp-F4],eax005D4E3E.6A00push0005D4E40.8B850CFFFFFF mov eax,dword ptr ss:[ebp-F4]005D4E46.8B08mov ecx,dword ptr ds:[eax]005D4E48.8B950CFFFFFF mov edx,dword ptr ss:[ebp-F4]005D4E4E.52push edx005D4E4F.FF9194000000call dword ptr ds:[ecx+94]005D4E55.DBE2fclex005D4E57.898508FFFFFF mov dword ptr ss:[ebp-F8],eax005D4E5D.83BD08FFFFFF00cmp dword ptr ss:[ebp-F8],0005D4E64.7D26jge short emu8086.005D4E8C005D4E66.6894000000push94005D4E6B.6880B54300push emu8086.0043B580005D4E70.8B850CFFFFFF mov eax,dword ptr ss:[ebp-F4]005D4E76.50push eax005D4E77.8B8D08FFFFFF mov ecx,dword ptr ss:[ebp-F8]005D4E7D.51push ecx005D4E7E.FF15B0104000call dword ptr ds:[<&MSVBVM60.__vbaHresultChec>;MSVBVM60.__vbaHresultCheckObj005D4E84.898558FEFFFF mov dword ptr ss:[ebp-1A8],eax005D4E8A.EB0A jmp short emu8086.005D4E96005D4E8C>C78558FEFFFF00000000mov dword ptr ss:[ebp-1A8],0005D4E96>8D4D C8lea ecx,dword ptr ss:[ebp-38]005D4E99.FF1538144000call dword ptr ds:[<&MSVBVM60.__vbaFreeObj>];MSVBVM60.__vbaFreeObj005D4E9F.C745FC28000000mov dword ptr ss:[ebp-4],28005D4EA6.8B5508mov edx,dword ptr ss:[ebp+8]005D4EA9.8B02mov eax,dword ptr ds:[edx]005D4EAB.8B4D08mov ecx,dword ptr ss:[ebp+8]005D4EAE.51push ecx005D4EAF.FF9000030000call dword ptr ds:[eax+300]005D4EB5.50push eax005D4EB6.8D55C8lea edx,dword ptr ss:[ebp-38]005D4EB9.52push edx005D4EBA.FF15FC104000call dword ptr ds:[<&MSVBVM60.__vbaObjSet>];MSVBVM60.__vbaObjSet005D4EC0.89850CFFFFFF mov dword ptr ss:[ebp-F4],eax005D4EC6.6A00push0005D4EC8.8B850CFFFFFF mov eax,dword ptr ss:[ebp-F4]005D4ECE.8B08mov ecx,dword ptr ds:[eax]005D4ED0.8B950CFFFFFF mov edx,dword ptr ss:[ebp-F4]005D4ED6.52push edx005D4ED7.FF9194000000call dword ptr ds:[ecx+94]005D4EDD.DBE2fclex005D4EDF.898508FFFFFF mov dword ptr ss:[ebp-F8],eax005D4EE5.83BD08FFFFFF00cmp dword ptr ss:[ebp-F8],0005D4EEC.7D26jge short emu8086.005D4F14005D4EEE.6894000000push94005D4EF3.68B8454400push emu8086.004445B8005D4EF8.8B850CFFFFFF mov eax,dword ptr ss:[ebp-F4]005D4EFE.50push eax005D4EFF.8B8D08FFFFFF mov ecx,dword ptr ss:[ebp-F8]005D4F05.51push ecx005D4F06.FF15B0104000call dword ptr ds:[<&MSVBVM60.__vbaHresultChec>;MSVBVM60.__vbaHresultCheckObj005D4F0C.898554FEFFFF mov dword ptr ss:[ebp-1AC],eax005D4F12.EB0A jmp short emu8086.005D4F1E005D4F14>C78554FEFFFF00000000mov dword ptr ss:[ebp-1AC],0005D4F1E>8D4D C8lea ecx,dword ptr ss:[ebp-38]005D4F21.FF1538144000call dword ptr ds:[<&MSVBVM60.__vbaFreeObj>];MSVBVM60.__vbaFreeObj005D4F27.C745FC29000000mov dword ptr ss:[ebp-4],29005D4F2E.8B5508mov edx,dword ptr ss:[ebp+8]005D4F31.8B02mov eax,dword ptr ds:[edx]005D4F33.8B4D08mov ecx,dword ptr ss:[ebp+8]005D4F36.51push ecx005D4F37.FF90FC020000call dword ptr ds:[eax+2FC]005D4F3D.50push eax005D4F3E.8D55C8lea edx,dword ptr ss:[ebp-38]005D4F41.52push edx005D4F42.FF15FC104000call dword ptr ds:[<&MSVBVM60.__vbaObjSet>];MSVBVM60.__vbaObjSet005D4F48.89850CFFFFFF mov dword ptr ss:[ebp-F4],eax005D4F4E.6A00push0005D4F50.8B850CFFFFFF mov eax,dword ptr ss:[ebp-F4]005D4F56.8B08mov ecx,dword ptr ds:[eax]005D4F58.8B950CFFFFFF mov edx,dword ptr ss:[ebp-F4]005D4F5E.52push edx005D4F5F.FF9194000000call dword ptr ds:[ecx+94]005D4F65.DBE2fclex005D4F67.898508FFFFFF mov dword ptr ss:[ebp-F8],eax005D4F6D.83BD08FFFFFF00cmp dword ptr ss:[ebp-F8],0005D4F74.7D26jge short emu8086.005D4F9C005D4F76.6894000000push94005D4F7B.68B8454400push emu8086.004445B8005D4F80.8B850CFFFFFF mov eax,dword ptr ss:[ebp-F4]005D4F86.50push eax005D4F87.8B8D08FFFFFF mov ecx,dword ptr ss:[ebp-F8]005D4F8D.51push ecx005D4F8E.FF15B0104000call dword ptr ds:[<&MSVBVM60.__vbaHresultChec>;MSVBVM60.__vbaHresultCheckObj005D4F94.898550FEFFFF mov dword ptr ss:[ebp-1B0],eax005D4F9A.EB0A jmp short emu8086.005D4FA6005D4F9C>C78550FEFFFF00000000mov dword ptr ss:[ebp-1B0],0005D4FA6>8D4D C8lea ecx,dword ptr ss:[ebp-38]005D4FA9.FF1538144000call dword ptr ds:[<&MSVBVM60.__vbaFreeObj>];MSVBVM60.__vbaFreeObj005D4FAF.C745FC2A000000mov dword ptr ss:[ebp-4],2A005D4FB6.8B5508mov edx,dword ptr ss:[ebp+8]005D4FB9.8B02mov eax,dword ptr ds:[edx]005D4FBB.8B4D08mov ecx,dword ptr ss:[ebp+8]005D4FBE.51push ecx005D4FBF.FF9014030000call dword ptr ds:[eax+314]005D4FC5.50push eax005D4FC6.8D55C8lea edx,dword ptr ss:[ebp-38]005D4FC9.52push edx005D4FCA.FF15FC104000call dword ptr ds:[<&MSVBVM60.__vbaObjSet>];MSVBVM60.__vbaObjSet005D4FD0.89850CFFFFFF mov dword ptr ss:[ebp-F4],eax005D4FD6.6A00push0005D4FD8.8B850CFFFFFF mov eax,dword ptr ss:[ebp-F4]005D4FDE.8B08mov ecx,dword ptr ds:[eax]005D4FE0.8B950CFFFFFF mov edx,dword ptr ss:[ebp-F4]005D4FE6.52push edx005D4FE7.FF919C000000call dword ptr ds:[ecx+9C]005D4FED.DBE2fclex005D4FEF.898508FFFFFF mov dword ptr ss:[ebp-F8],eax005D4FF5.83BD08FFFFFF00cmp dword ptr ss:[ebp-F8],0005D4FFC.7D26jge short emu8086.005D5024005D4FFE.689C000000push9C005D5003.685CB74300push emu8086.0043B75C005D5008.8B850CFFFFFF mov eax,dword ptr ss:[ebp-F4]005D500E.50push eax005D500F.8B8D08FFFFFF mov ecx,dword ptr ss:[ebp-F8]005D5015.51push ecx005D5016.FF15B0104000call dword ptrds:[<&MSVBVM60.__vbaHresultChec>;MSVBVM60.__vbaHresultCheckObj005D501C.89854CFEFFFF mov dword ptr ss:[ebp-1B4],eax005D5022.EB0A jmp short emu8086.005D502E005D5024>C7854CFEFFFF00000000mov dword ptr ss:[ebp-1B4],0005D502E>8D4D C8lea ecx,dword ptr ss:[ebp-38]005D5031.FF1538144000call dword ptr ds:[<&MSVBVM60.__vbaFreeObj>];MSVBVM60.__vbaFreeObj005D5037.C745FC2B000000mov dword ptr ss:[ebp-4],2B005D503E.8B5508mov edx,dword ptr ss:[ebp+8]005D5041.8B02mov eax,dword ptr ds:[edx]005D5043.8B4D08mov ecx,dword ptr ss:[ebp+8]005D5046.51push ecx005D5047.FF9010030000call dword ptr ds:[eax+310]005D504D.50push eax005D504E.8D55C8lea edx,dword ptr ss:[ebp-38]005D5051.52push edx005D5052.FF15FC104000call dword ptr ds:[<&MSVBVM60.__vbaObjSet>];MSVBVM60.__vbaObjSet005D5058.89850CFFFFFF mov dword ptr ss:[ebp-F4],eax005D505E.6A00push0005D5060.8B850CFFFFFF mov eax,dword ptr ss:[ebp-F4]005D5066.8B08mov ecx,dword ptr ds:[eax]005D5068.8B950CFFFFFF mov edx,dword ptr ss:[ebp-F4]005D506E.52push edx005D506F.FF919C000000call dword ptr ds:[ecx+9C]005D5075.DBE2fclex005D5077.898508FFFFFF mov dword ptr ss:[ebp-F8],eax005D507D.83BD08FFFFFF00cmp dword ptr ss:[ebp-F8],0005D5084.7D26jge short emu8086.005D50AC005D5086.689C000000push9C005D508B.685CB74300push emu8086.0043B75C005D5090.8B850CFFFFFF mov eax,dword ptr ss:[ebp-F4]005D5096.50push eax005D5097.8B8D08FFFFFF mov ecx,dword ptr ss:[ebp-F8]005D509D.51push ecx005D509E.FF15B0104000call dword ptr ds:[<&MSVBVM60.__vbaHresultChec>;MSVBVM60.__vbaHresultCheckObj005D50A4.898548FEFFFF mov dword ptr ss:[ebp-1B8],eax005D50AA.EB0A jmp short emu8086.005D50B6005D50AC>C78548FEFFFF00000000mov dword ptr ss:[ebp-1B8],0005D50B6>8D4D C8lea ecx,dword ptr ss:[ebp-38]005D50B9.FF1538144000call dword ptr ds:[<&MSVBVM60.__vbaFreeObj>];MSVBVM60.__vbaFreeObj005D50BF.C745FC2C000000mov dword ptr ss:[ebp-4],2C005D50C6.C7458C04000280mov dword ptr ss:[ebp-74],80020004005D50CD.C745840A000000mov dword ptr ss:[ebp-7C],0A005D50D4.C7459C04000280mov dword ptr ss:[ebp-64],80020004005D50DB.C745940A000000mov dword ptr ss:[ebp-6C],0A005D50E2.C7853CFFFFFF4C744300mov dword ptr ss:[ebp-C4],emu8086.0043744C005D50EC.C78534FFFFFF08000000mov dword ptr ss:[ebp-CC],8005D50F6.8D9534FFFFFF lea edx,dword ptr ss:[ebp-CC]005D50FC.8D4D A4lea ecx,dword ptr ss:[ebp-5C]005D50FF.FF1594134000call dword ptr ds:[<&MSVBVM60.__vbaVarDup>];MSVBVM60.__vbaVarDup005D5105.C7854CFFFFFF6C074500mov dword ptr ss:[ebp-B4],emu8086.0045076C;THANK YOU005D510F.C78544FFFFFF08000000mov dword ptr ss:[ebp-BC],8005D5119.8D9544FFFFFF lea edx,dword ptr ss:[ebp-BC]005D511F.8D4D B4lea ecx,dword ptr ss:[ebp-4C]005D5122.FF1594134000call dword ptr ds:[<&MSVBVM60.__vbaVarDup>];MSVBVM60.__vbaVarDup005D5128.8D5584lea edx,dword ptr ss:[ebp-7C]005D512B.52push edx005D512C.8D4594lea eax,dword ptr ss:[ebp-6C]005D512F.50push eax005D5130.8D4D A4lea ecx,dword ptr ss:[ebp-5C]005D5133.51push ecx005D5134.6A00push0005D5136.8D55B4lea edx,dword ptr ss:[ebp-4C]005D5139.52push edx005D513A.FF1500114000call dword ptr ds:[<&MSVBVM60.#595>];MSVBVM60.rtcMsgBox005D5140.8D4584lea eax,dword ptr ss:[ebp-7C]005D5143.50push eax005D5144.8D4D94lea ecx,dword ptr ss:[ebp-6C]005D5147.51push ecx005D5148.8D55A4lea edx,dword ptr ss:[ebp-5C]005D514B.52push edx005D514C.8D45B4lea eax,dword ptr ss:[ebp-4C]005D514F.50push eax005D5150.6A04push4005D5152.FF1550104000call dword ptr ds:[<&MSVBVM60.__vbaFreeVarList>;MSVBVM60.__vbaFreeVarList005D5158.83C414add esp,14005D515B.C745FC2D000000mov dword ptr ss:[ebp-4],2D005D5162.8B4D08mov ecx,dword ptr ss:[ebp+8]005D5165.8B11mov edx,dword ptr ds:[ecx]005D5167.8B4508mov eax,dword ptr ss:[ebp+8]005D516A.50push eax005D516B.FF92B4020000call dword ptr ds:[edx+2B4]005D5171.DBE2fclex005D5173.89850CFFFFFF mov dword ptr ss:[ebp-F4],eax005D5179.83BD0CFFFFFF00cmp dword ptr ss:[ebp-F4],0005D51807D23jge short emu8086.005D51A5005D5182.68B4020000push2B4005D5187.6860B24400push emu8086.0044B260005D518C.8B4D08mov ecx,dword ptr ss:[ebp+8]005D518F.51push ecx005D5190.8B950CFFFFFF mov edx,dword ptr ss:[ebp-F4]005D5196.52push edx005D5197.FF15B0104000call dword ptr ds:[<&MSVBVM60.__vbaHresultChec>;MSVBVM60.__vbaHresultCheckObj005D519D.898544FEFFFF mov dword ptr ss:[ebp-1BC],eax005D51A3.EB0A jmp short emu8086.005D51AF005D51A5>C78544FEFFFF00000000mov dword ptr ss:[ebp-1BC],0005D51AF>E9F5000000jmp emu8086.005D52A9005D51B4>C745FC2F000000mov dword ptr ss:[ebp-4],2F;跳到这里,即错误提示处005D51BB.BA C0074500mov edx,emu8086.004507C0;wrong registration key.005D51C0.8D4D D8lea ecx,dword ptr ss:[ebp-28]005D51C3.FF1528134000call dword ptr ds:[<&MSVBVM60.__vbaStrCopy>];MSVBVM60.__vbaStrCopy005D51C9.8D45D8lea eax,dword ptr ss:[ebp-28]005D51CC.50push eax005D51CD.E8CE8F0100call emu8086.005EE1A0005D51D2.8BD0mov edx,eax005D51D4.8D4D D0lea ecx,dword ptr ss:[ebp-30]005D51D7.FF15D0134000call dword ptr ds:[<&MSVBVM60.__vbaStrMove>];MSVBVM60.__vbaStrMove005D51DD.BA0C0E4400mov edx,emu8086.00440E0C;error!005D51E2.8D4D D4lea ecx,dword ptr ss:[ebp-2C]005D51E5.FF1528134000call dword ptr ds:[<&MSVBVM60.__vbaStrCopy>];MSVBVM60.__vbaStrCopy005D51EB.8D4D D4lea ecx,dword ptr ss:[ebp-2C]005D51EE.51push ecx005D51EF.E8AC8F0100call emu8086.005EE1A0005D51F4.8BD0mov edx,eax005D51F6.8D4D CC lea ecx,dword ptr ss:[ebp-34]005D51F9.FF15D0134000call dword ptr ds:[<&MSVBVM60.__vbaStrMove>];MSVBVM60.__vbaStrMove005D51FF.C7458C04000280mov dword ptr ss:[ebp-74],80020004005D5206.C745840A000000mov dword ptr ss:[ebp-7C],0A005D520D.C7459C04000280mov dword ptr ss:[ebp-64],80020004005D5214.C745940A000000mov dword ptr ss:[ebp-6C],0A005D521B.8B55CC mov edx,dword ptr ss:[ebp-34]005D521E.8995B8FEFFFF mov dword ptr ss:[ebp-148],edx005D5224.C745CC00000000mov dword ptr ss:[ebp-34],0005D522B.8B85B8FEFFFF mov eax,dword ptr ss:[ebp-148]005D5231.8945AC mov dword ptr ss:[ebp-54],eax005D5234.C745A408000000mov dword ptr ss:[ebp-5C],8005D523B.8B4D D0mov ecx,dword ptr ss:[ebp-30]005D523E.898D B4FEFFFF mov dword ptr ss:[ebp-14C],ecx005D5244.C745D000000000mov dword ptr ss:[ebp-30],0005D524B.8B95B4FEFFFF mov edx,dword ptr ss:[ebp-14C]005D5251.8955BC mov dword ptr ss:[ebp-44],edx005D5254.C745B408000000mov dword ptr ss:[ebp-4C],8005D525B.8D4584lea eax,dword ptr ss:[ebp-7C]005D525E.50push eax005D525F.8D4D94lea ecx,dword ptr ss:[ebp-6C]005D5262.51push ecx005D5263.8D55A4lea edx,dword ptr ss:[ebp-5C]005D5266.52push edx005D5267.6A00push0005D5269.8D45B4lea eax,dword ptr ss:[ebp-4C]005D526C.50push eax;下面的call就弹出错误提示框了005D526D.FF1500114000call dword ptr ds:[<&MSVBVM60.#595>];MSVBVM60.rtcMsgBox-----------------------------进入关键call后的流程-----------------------------------005D5F80$55push ebp;按f7后到此处。

Emu8086软件的使用

Emu8086软件的使用

Emu8086软件的使用一、实验目的:(1)熟悉汇编语言开发环境。

(2)掌握Emu8086软件使用方法。

(3)了解汇编语言的程序结构、调试一个简单的程序。

(4)理解寻址方式的意义。

二、实验内容及要求:1、Emu8086的使用(1)打开桌面上的Emu8086的图标,出现如图所示的对话框,选择【继续……】首次打开软件,界面中默认已有一段小程序。

该程序实现在屏幕上显示三段字符串的功能。

若用户需要自己重新编程,可点击工具栏的【新建】图标,出现如图所示的对话框,选择编程所采用的模板。

选择不同的模板,在程序源代码中会出现如下标记:#MAKE_COM# 选择COM模板#MAKE_BIN# 选择BIN模板#MAKE_EXE# 选择EXE模板#MAKE_BOOT# 选择BOOT模板#MAKE_COM#最古老的一个最简单的可执行文件格式。

采用此格式,源代码应该在100H后加载(即:源代码之前应有ORG 100H)。

从文件的第一个字节开始执行。

支持DOS和Windows命令提示符。

#MAKE_EXE#一种更先进的可执行文件格式。

源程序代码的规模不限,源代码的分段也不限,但程序中必须包含堆栈段的定义。

您可以选择从新建菜单中的EXE模板创建一个简单的EXE程序,有明确的数据段,堆栈段和代码段的定义。

程序员在源代码中定义程序的入口点(即开始执行的位置),该格式支持DOS和Windows命令提示符。

这两种模板是最常用的模板(2)选择COM模板,点击【确定】,软件出现源代码编辑器的界面,如图所示:在源代码编辑器的空白区域,编写如下一段小程序:MOV AX, 5MOV BX, 10ADD AX, BXSUB AX, 1HLT代码编写结束,点击菜单【文件】【另存为……】,将源代码换名保存。

本例将源代码保存为001.asm。

点击工具栏的【模拟】按钮,如果程序有错误不能编译,出现如图所示的界面:点击错误提示,即可选择源代码中相应的错误的行,在此处更改源代码。

Emu8086使用指南教案资料

Emu8086使用指南教案资料

E m u8086使用指南如何运行?1.在开始菜单选在它的图标,或者直接运行Emu8086.EXE2.在"FILE"菜单中选择"SAMPLE"3.点击"Compile and Emulate"按纽(或者按快捷键F5)4.点击"Single Step"按纽(或者按快捷键F8),可以查看代码如何运行.十进制系统目前使用最多的是十进制.十进制系统有10个数字0,1,2,3,4,5,6,7,8,9利用这些数字能表示任何数值,例如754这些数字是由每一位数字乘以“基数”的幂累加而成的(上一个例子中基数是10 因为十进制中有十个数字)。

位置对于每一个数字是很重要的。

例如,你将上一个例子中的“7”放到结尾:547数值就成为:特别提醒:任何数字的0次幂都是1,0的0次幂也是1二进制计算机没有人类聪明(至少现在是这样),制造一个只有开关或者称为 0,1 两种状态的电子机器很容易。

计算机使用二进制系统,只有两个数字0, 1基地为2每一位二进制数称作一位(BIT),4 BIT 组成一个半字节(NIBBLE),8BIT组成一个字节(BYTE),两个字节组成一个字(WORD),两个字组成一个双字(DOUBLE WORD)(很少使用):习惯上在一串二进制后面加上“b”,这样,我们可以知道101b是二进制表示十进制的5。

二进制10100101b表示十进制的165,计算方法如下:十六进制系统十六进制系统使用16个数字0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F基底是16. 十六进制非常紧凑,便于阅读。

将二进制转换为十六进制很容易,半字节(4bits)对应一位十六进制如下表Decimal (base 10)Binary(base 2)Hexadecimal(base 16)0 0000 01 0001 12 0010 23 0011 34 0100 45 0101 56 0110 67 0111 78 1000 89 1001 910 1010 A11 1011 B12 1100 C13 1101 D14 1110 E15 1111 F习惯上我们在一个十六进制数的后面加上"H",以便和其他进制区别, 这样我们就知道 5Fh是一个十六进制数表示十进制的 95。

实验一-8086汇编语言上机调试及基本操作.

实验一-8086汇编语言上机调试及基本操作.

实验一:8086汇编语言上机调试及基本操作(验证性)1、实验目的:(1)掌握常用DEBUG命令: G,D,R,T,U,Q。

(2)掌握工具软件EMU8086。

(3)掌握完整程序设计方法的格式,能正确书写数据段,代码段等。

(4)掌握简单的数值转换算法2、实验说明:计算机中的数值有各种表达方式,这是计算机的基础。

掌握各种数制之间的转换是一种基本功。

3、程序框图:对于0-999(即000H-3E7H)范围内的二进制数4、参考程序:; 将AX中的三位数拆为三个BCD码, 并存入Result 开始的三个单元DATA SEGMENT; 数据段RESULT_1 DB 1RESULT_2 DB 1RESULT_3 DB 1DATA ENDSSTACK SEGMENT STACK ; 堆栈段STA DB 64 DUP(0)STACK_TOP DB 0STACK ENDSCODE SEGMENT; 代码段ASSUME CS:CODE , DS:DATA , ES:DATA , SS:STACKSTART:MOV AX, DATAMOV DS, AX ; 设置数据段MOV AX, STACKMOV SS, AX ; 设置堆栈段LEA SP, STACK_TOP ; 设置栈顶指针MOV AX, 2afHMOV CL, 100DIV CLMOV RESULT_1, AL ; 除以100, 得百位数MOV AL, AHMOV AH, 0MOV CL, 10DIV CLMOV RESULT_2, AL ; 余数除以10, 得十位数MOV RESULT_3, AH ; 余数为个位数MOV AX,4C00H ; 返回DOSINT 21H ;CODE ENDSEND START ; 最后一行要按回车键5、实验及报告要求:1)用合适的编辑软件编辑以上源文件并存入合适目录;要求补充注释未注释的伪指令和指令;2)分别在DOS和Windows下编译、连接生成可执行文件,比较两个环境下生成的机器码的长度和内容;试指出第2、5、7、10、14条指令的IP和机器码。

微机原理上机报告

微机原理上机报告

实验一:EMU8086软件安装与使用一、实验目的通过本实验学习EMU8086软件的安装与使用。

二、实验设备PC微机一台,Emu8086仿真软件三、实验任务1. 安装Emu8086仿真软件。

2. 利用Emu8086仿真软件编程。

四、实验原理Emu8086仿真软件就是在Windows下的一种仿真软件,它可以仿真模拟8086的程序运行,并且可以直观地观察CPU寄存器的变化情况。

Emu8086 - Microprocessor Emulator结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。

这对刚开始学组合语言的人会是一个很有用的工具。

它会在模拟器中一步一步的编译程序码并执行,视觉化的工作环境让它更容易使用。

你可以在程序执行当中检视暂存器、旗标以及记忆体。

模拟器会在虚拟PC 中执行程序,这可以隔绝你的程序,避免它去存取实际硬体,像硬碟、记忆体,而在虚拟机器上执行组合程序,这可以让除错变得更加容易。

这个软件完全相容於Intel 的下一代处理器,包括了Pentium II、Pentium 4,而相信Pentium 5 也会继续支援8086 的。

这种现象让8086 程序码的可携性相当高,它可以同时在老机器以及现代的电脑是执行,8086 的另一个优势是它的指令比较小且相当容易学习。

五、实验内容1. 安装Emu8086仿真软件,熟悉菜单栏,工具栏的每个选项的作用,按照操作流程完成程序的编译、链接,并对编辑窗口中所编写的简单汇编程序进行仿真调试,最后能够输出正确结果。

2. 编写简单程序,实现字符串的显示,显示内容为“姓名(换行)、学号”。

六、实验过程及结果1.EMU8086安装。

图1-1-1 Emu8086的安装图1-1-2 Emu8086的安装图1-1-3 Emu8086的安装图1-1-4 Emu8086的安装图1-1-5 Emu8086的安装图1-1-6 Emu8086的安装2. EMU8086使用,安装完毕,得到窗口如下图1-1:图1-2 Emu进入主界面3. 操作流程(1)file->new->empty workplace,编辑程序,如下图1-2:图1-3 Emu8086的安装(2) file->save,保存程序(**.asm格式),完成程序的编辑.(3) assmbler->compile,完成程序的编译和链接,如下图1-3:4. emulator->show emulator,开始仿真调试,如下图1-4:图1-5 Emu程序仿真调试界面5. 左键点击run运行程序,结果如图1-5:图1-6 Emu程序仿真调试结果界面七、实验感想这是微机原理的第一次上机,我熟悉了用emu8086的使用方法,通过这个模拟仿真软件初步了解了计算机的原理。

(微机原理)EMU8086+PROTEUS的使用方法

(微机原理)EMU8086+PROTEUS的使用方法

EMU8086+PROTEUS的使用方法简介
1、EMU8086软件的使用
EMU8086为一种普通的汇编软件,使用方法与其他汇编软件类似。

(1)写好程序之后单击compile经行编译。

(2)当程序无误时,选择路径保存;当程序有问题时,软件会提示出错位置。

(3)单击emulate运行程序。

可查看标志位,堆栈等
2、Proteus+EMU8086 的仿真
在Proteus软件中绘制系统原理图,然后需要对Proteus进行程序导入设置才能运行汇编程序进行仿真调试。

具体步骤如下:
(1)点击菜单项Source的下拉项Define Code Generation Tools…
(2)在弹出如下对话框,单击new按钮。

(3)弹出如下对话框,找到本机中emu8086软件安装后生成的EMU8086文件夹,选择可执行程序emu8086.exe,点击打开按钮。

(4)回到设置对话框后,将源文件和目标文件分别设为ASM和EXE,单击OK。

(5)点击菜单项Source的下拉项Add/Remove Source files…
(6)在弹出如下对话框,单击new按钮。

(7)弹出如下对话框,找到需调试运行的asm源程序。

单击ok,成功。

(8)在运行过程中,利用Proteus中Debug菜单项中的选项可进行各项调试功能。

如下图所示查看寄存器内容。

3 说明
硬件原理图可参考Proteus安装文件SAMPLES\VSM for 8086\8086 Demo Board模板文件建立。

有一点值得指出的是,仿真时若需要改变程序路径则需新建工程,个人理解。

(完整版)微机原理Emu8086仿真软件实验讲义

(完整版)微机原理Emu8086仿真软件实验讲义

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

注册的用户名随意,密码112,即可成功。

二.新建文件单击图1中的“New”选项,软件会弹出如图2所示的选择界面。

● COM模板——适用于简单且不需分段的程序,所有内容均放在代码段中,程序代码默认从ORG 0100H开始;● EXE模板--适用于需分段的复杂程序,内容按代码段、数据段、堆栈段划分。

需要注意的是采用该模板时,用户不可将代码段人为地设置为ORG 0100H,而应由编译器自动完成空间分配;● BIN模板--二进制文件,适用于所有用户定义结构类型;● BOOT模板—-适用于在软盘中创建文件。

此外,若用户希望打开一个完全空的文档,则可选择empty workspace的选项。

三.编译和加载程序用户可根据上述选择的模板中编写程序,如图3所示。

该编辑界面集文档编辑、指令编译、程序加载、系统工具、在线帮助为一体,其菜单功能如表1所示.编写完程序后,用户只需单击工具栏上的“compile”按钮,即可完成程序的编译工作,并弹出如图4所示的编译状态界面.若有错误则会在窗口中提示,若无错误则还会弹出保存界面,让用户将编译好的文件保存相应的文件夹中。

默认文件夹为…\emu8086\MyBuild\,但您可以通过菜单中assembler/ set output directory对默认文件夹进行修改。

Emu8086使用指南

Emu8086使用指南

Emu8086使用指南1:简介1.1 Emu8086简介1.2 Emu8086的特点1.3 Emu8086的应用领域2:安装与配置2.1 Emu8086的系统要求2.2 与安装Emu80862.3 Emu8086的基本配置3: Emu8086界面介绍3.1 主界面3.2 菜单栏3.3 工具栏3.4 编辑区域3.5 状态栏4:编写与调试汇编程序4.1 新建程序4.2 编写程序代码4.3 汇编与运行程序4.4 调试程序5:存储器与寄存器5.1 存储器的概念5.2 内存寻址5.3 寄存器的概念5.4 常用寄存器6:汇编指令集6.1 数据传送指令6.2 算术运算指令6.3 逻辑运算指令6.4 控制转移指令6.5 输入与输出指令7:软件中断与中断处理程序 7.1 软件中断的概念7.2 常用的软件中断7.3 编写中断处理程序8:过程与宏指令8.1 过程的概念8.2 定义与调用过程8.3 宏指令的概念8.4 定义与调用宏指令9:汇编程序优化与调试技巧9.1 优化汇编程序9.2 调试技巧与常见问题10:附件附件1:示例程序源代码附件2:示例程序运行结果注释:- Emu8086: 一款流行的x86汇编语言模拟器,用于学习和开发汇编语言程序。

- 汇编指令集: 一组用于编写汇编语言程序的指令集合。

- 软件中断: 由软件触发的处理器中断,用于实现系统调用和其他功能。

- 中断处理程序: 在出现中断时执行的特定代码块,用于响应中断事件。

- 过程: 一组按顺序执行的指令,通过调用以实现代码的模块化。

- 宏指令: 一种在汇编程序中定义和使用的可重用代码片段。

- 优化: 通过改进算法和代码结构来改善程序性能。

- 调试: 处理程序中的错误和问题,以确保程序正确执行。

本文档涉及附件:- 附件1:示例程序源代码- 附件2:示例程序运行结果本文所涉及的法律名词及注释:- 无。

汇编语言程序设计实验篇(emu8086)

汇编语言程序设计实验篇(emu8086)

1.汇编语言程序设计实验篇1.1.汇编系统软件简介Emu8086-Microprocessor Emulator是集源代码编辑器、汇编/反汇编工具以及debug的模拟器。

它能模拟一台"虚拟"的电脑运行程序,拥有独立的“硬件”,避免访问真实硬件。

该软件兼容Intel的下一代处理器,包括PentiumII、Pentium4。

利用该软件提供的调试工具,能够单步跟踪程序,观察程序执行过程中寄存器、标志位、堆栈和内存单元的内容。

1.1.1创建程序 TEMPLATE程序本章与指令相关的实验都是用COM TEMPLATE类型的程序完成的。

打开emu8086,在“welcome…”对话框中,单击按钮,创建文件。

在“choose code template”对话框中,选择“COM template-simple and tiny executable file format, pure machine code.”后,单击按钮。

在如所示的编辑界面中,在“;add your code here”部分输入相应的指令,第一条指令默认的偏移地址为100h。

输入全部指令后,单击按钮,保存相应的程序段。

2.EXE TEMPLATE程序本章与DOS功能调用和汇编源程序相关的实验都是用EXE TEMPLATE程序完成的。

打开emu8086,在“welcome…”对话框中,单击按钮,创建文件。

在“choose code template”对话框中,选择“EXE template-advanced executable file.header: relocation, checksum.”后,单击按钮。

在如图所示的编辑界面中,已经可以给出了源程序的框架,包含数据段、堆栈段和代码段的定义以及必要的功能调用等,在“add your data here”和“;add your code here”部分可以分别输入相应的变量定义和指令。

ch01-Emu8086汇编软件使用

ch01-Emu8086汇编软件使用

第1章 Emu8086汇编软件使用一. 实验目的1. 熟悉汇编语言开发环境2. 掌握Emu8086软件使用方法和调试方法3. 熟悉汇编语言的编辑、汇编、连接、运行的全过程4. 调试简单的程序二. 实验条件安装有Emu8086仿真软件的电脑一台。

三. 预习要求预习Emu8086的使用方法和汇编语言指令。

Emu8086是一个可在Windows 环境下运行的8086CPU汇编仿真软件。

它集成了文本编辑器、编译器、反编译器、仿真调试、虚拟设备和驱动器为一体,并具有在线使用指南,对于学习汇编语言的人是一个很有用的工具。

软件提供的实例中包含了几十种典型的程序代码,其中包括:数值计算、逻辑运算、屏幕显示、键盘输入、文件打印、马达控制、温度控制、交通灯控制等。

在软件提供的快速指南中提供了多种在线帮助工具,包括:文件索引、8086CUP指令使用指南、系统中断调用列表以及用法等。

用户可以通过该工具快速地掌握8086CPU指令体系和emu8086汇编真软件的使用。

1. 软件启动打开桌面上的EMU8086的图标,出现如图1.1所示的启动界面,可选择new,建立新的汇编语言程序,也可打开code examples读取示例程序。

微微机原理与接口技术实用教程2图 1.1 启动界面2. 新建文件单击图1.1中的“new”选项,建立新的汇编程序,软件弹出如图1.2所示对话框,选择代码的文本格式,共有4种模板。

图1.2 新建文本格式选择z COM 模板:适用于简单且不需分段的程序,所有内容均放在代码段中,程序代码默认从ORG 0100H 开始;z EXE 模板:适用于需分段的复杂程序,内容按代码段、数据段、堆栈段划分。

需要注意的是采用该模板时,用户不可将代码段人为地设置为ORG 0100H ,而应由编译器自动完成空间分配;z BIN 模板:二进制文件,适用于所有用户定义结构类型,一般不用,因为不能正确解释伪指令;z BOOT 模板:适用于在软盘中创建文件,数据段的段地址为07C0H 。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

地址 为什 么是 0B67h?
注意观察内存,分析 数表的排列顺序。
3、编程练习二
• 编写计算5899H+7987H的程序,并将计算结
果存入0B88H单元;
• 单步运行,并认真记录标志寄存器的信息
变化; • 从内存中观察计算结果。
实验报告要求:
• 认真填写实验报告中各项内容;
• 允许在实验报告中粘贴复制的计算机屏幕信息,
在源文件中 改正错误后 还需要重新
编译,直至
无错误为止。
建立并保存编译后的文件(取名)。
如果存在同名文件时,会出现提示。 是否替换原文件,你自己决定。
使用 “单步 执行” 便于观
察、分
析运行 的过程
观察并分析: CS、IP的初 始值与代码
段有哪些关
系。
分析: 第一 条指 令中 DSEG 的实 际段
• 编写源程序时,尽量按照“模板”的 格式和字体书写,以便养成良好的习 惯。 • 编写源程序时,允许在“英文”或
“中文”状态下编辑,但注释前面的
分号“;”需用英文分号。
2、编程练习一
在数据表DATA1中存放数据 0F865H,在 数据表DATA2中存放数据360CH。现编写 出将两数分别取出相加,然后将计算结 果存放到当前数据段中,偏移地址为 3800H单元中的源程序。
文件的保存:点击快捷键“保存” 。
也可以从“文件”项目中选择“另存 为”。
• 所保存文件的扩展名,自动定为.ASM。
文件的编译:编辑好的文件需要进行
编译后才能运行。可点击“编译”快 捷键。
如果编译正确, “编译错误”栏
中空白。
如果出错, “编译错误” 栏中将有错 误说明。并
改变源文件
出错行的颜 色。
编辑界面:第一次编写源程序, 点击
“新建”按钮,否则,点击“打开”按 钮。
工作模板的选择:选择“EXE模
板”。
“EXE模板”编辑界面
几点说明: • “模板”列出了常用的“段”设置和
“子程序”设置部分,您可以根据需
要进行选择。不需要的部分及内容可 以直接删除。 • ASSMUME指令需要自己编写。
例如实验程序、实验结果等;
• 及时归纳实验中发现的问题,并将解决办法写入
实验报告;
• 欢迎您在报告中提供改进本次实验的建议。
• Emu8086仿真软件在实验室的计算机上安 装时,许多机器不支持汉化,希望大家提 前有个思想准备,最好先熟悉一下软件的 使用方法。
Emu8086软件的其它功能
• Emu8086能够利用自带的软件实现“虚拟屏
幕显示”、“虚拟打印”、“虚拟LED数码
显示”、“虚拟接口”和“虚拟温度控制”
实验。
• Emu8086能够利用自带的实验软件还可以进
行“交通灯实验”、“步进电机实验”和 “机器人实验”。
《微机原理及应用》实验
作者:张锡鹤
2012.10.11
实验一
Emu8086仿真软件的使用
实验目的:
1. 学习、掌握Emu8086软件的使用方法;
2. 了解汇编语言的程序结构及调试方法。
实验要求:
1. 能够正确选择Emu8086软件的工作模
板; 2. 能够正确编写存储器中两个多位无符
号数相加的源程序;
DSEG DATA1 DATA2 DSEG CSEG
SEGMENT 'DATA' DW 0F865H DW 360CH ENDS SEGMENT 'CODE' ASSUME CS:CSEG,DS:DSEG START: MOV AM, DSEG MOV DS,AX MOV AX, ESEG MOV ES, AX LEA SI, DATA1 MOV AX, DATA1 ADD AX, DATA2 MOV [2800H], AX HLT CSEG ENDS END START (注:源程序有故意保留的错误,请你改正)
3. 能够正确处理出现的编辑错误;
4.能够“单步执行”程序,并认真观察、 判断每条指令执行的结果是否正确;
5.对执行中出现的错误结果,够做出
作出相应的处理。
实验内容
1、熟悉Emu8086软件
•运行Emu8086软件 可以直接从Windows桌面点击下面所示 的快捷图标即可。
用鼠标点击 “继续”按钮
相关文档
最新文档