emu8086使用教程
实验01_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后加载(即:源代码之前应有ORG100H)。
从文件的第一个字节开始执行。
支持DOS和Windows命令提示符。
#MAKE_EXE#一种更先进的可执行文件格式。
源程序代码的规模不限,源代码的分段也不限,但程序中必须包含堆栈段的定义。
您可以选择从新建菜单中的EXE模板创建一个简单的EXE程序,有明确的数据段,堆栈段和代码段的定义。
程序员在源代码中定义程序的入口点(即开始执行的位置),该格式支持DOS和Windows命令提示符。
这两种模板是最常用的模板(2)选择COM模板,点击【确定】,软件出现源代码编辑器的界面,如图所示:在源代码编辑器的空白区域,编写如下一段小程序:MOV AX,5MOV BX,10ADD AX,BXSUB AX,1HLT代码编写结束,点击菜单【文件】【另存为……】,将源代码换名保存。
本例将源代码保存为001.asm。
点击工具栏的【模拟】按钮,如果程序有错误不能编译,出现如图所示的界面:点击错误提示,即可选择源代码中相应的错误的行,在此处更改源代码。
Emu8086仿真软件_使用手册
Emu8086-Assembler and Microprocessor Emulator是一个可在Windows 环境下运行的8086CPU汇编仿真软件。
它集成了文本编辑器、编译器、反编译器、真调试、虚拟设备和驱动器为一体,并具有在线使用指南,这对刚开始学习汇编语言的人是一个很有用的工具。
您可以在真器中单步或连续执行程序,其可视化的工作环境让使用者操作更容易。
您可以在程序执行中动态观察各寄存器、标记位以及存储器中的变化情况。
仿真器会在模拟的PC中执行程序,以避免程序运行时到实际的硬盘或内存中存取数据。
此外,该软件完全兼容Intel新一代处理器,包括了PentiumⅢ、Pentium4的指令。
一.软件启动启动界面如图1所示,用户可以选择新建文本、程序实例、启动指南、近期文档。
注册的用户名随意,密码112,即可成功。
二.新建文件单击图1中的“New”选项,软件会弹出如图2所示的选择界面。
●COM模板——适用于简单且不需分段的程序,所有内容均放在代码段中,程序代码默认从ORG 0100H开始;●EXE模板——适用于需分段的复杂程序,内容按代码段、数据段、堆栈段划分。
需要注意的是采用该模板时,用户不可将代码段人为地设置为ORG 0100H,而应由编译器自动完成空间分配;●BIN模板——二进制文件,适用于所有用户定义结构类型;●BOOT模板——适用于在软盘中创建文件。
此外,若用户希望打开一个完全空的文档,则可选择empty workspace的选项。
三.编译和加载程序用户可根据上述选择的模板中编写程序,如图3所示。
该编辑界面集文档编辑、指令编译、程序加载、系统工具、在线帮助为一体,其菜单功能如表1所示。
编写完程序后,用户只需单击工具栏上的“compile”按钮,即可完成程序的编译工作,并弹出如图4所示的编译状态界面。
若有错误则会在窗口中提示,若无错误则还会弹出保存界面,让用户将编译好的文件保存相应的文件夹中。
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软件的使用一. 实验目的1.熟悉汇编语言开发环境。
2.掌握Emu8086软件使用方法。
3.了解汇编语言的程序结构、调试一个简单的程序。
4.理解寻址方式的意义。
二. 实验环境硬件环境:奔3以上处理器,512MB以上内存空间软件环境:windowsXP以上操作系统,emu8086编译环境。
三.实验内容与完成情况1.实验程序例3.1程序:data segmentdata1 db 0f8h,60h,0ach,74h,3bhdata2 db 0c1h,36h,9eh,0d5h,20hpkey db "press any key...$"data endscode segmentassume cs:code,ds:datastart:mov ax, datamov ds, axmov es, axmov cx,5clclooper:mov al,data2[si]adc data1[si],alinc sidec cxjnz loopermov ax, 4c00hint 21hcode endsend start2.实验步骤首先打开Emu8086的软件,选择COM模板,将程序录入8086程序运行软件,点击保存扩展名为.asm,再单击模拟,再选择程序的单步执行模式,得到以下的操作图。
(1)开始执行(2)单步执行(3)结束四.出现的问题1.建立编码模板时出错;2.不知道如何执行程序。
五.对问题的解决方法1.在老师的提示下,知道.exe文件是需要用到的模板;2.与C++6.0的界面对比后,知道点击emulate可以打开运行界面,点击single step进行单步执行,点击run可以完全执行程序。
使用emu8086学习汇编一
使⽤emu8086学习汇编⼀
emu8086是个学习汇编的好⼯具,之前曾在sourceforge上见到这个软件的项⽬。
记得我⾃⼰当初学习汇编时,⽤的是radasm,也是⼀个很犀利的⼯具,但今天在试⽤了emu8086之后,发觉更喜欢这个。
⽹络上⼏乎找不到emu8086的教程,索性⾃⼰写⼀个。
1.下载,并安装
2.新建⼯程:
new->empty workspace ->ok
3.编辑代码
下⾯以王爽先⽣(不知道?回去反省!)的《汇编语⾔》p77的程序4.1为例(附《汇编语⾔》,地址)
3.保存代码
点 save并保存
4.编译
compile
5.运⾏
run
6.单步执⾏
点run之后,程序会迅速执⾏⼀遍,这个程序没有输出,所以只看到emulator 和source code 窗⼝。
单步执⾏,快捷键 F8
执⾏之后:
执⾏的语句为:mov ax,0123h ,其机器码为:
所以ax的值变为0123 ⾼⼋位01 低⼋位23
ip的值加3变为0003
以下类似,就此略过.通过这个例⼦,⽰范了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。
(微机原理)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教程
%----------最详细的emu教程--------%Emu8086集源代码编辑器,汇编/反汇编工具以及可以运行debug的模拟器(虚拟机器)于一身,它优于一般编译器的地方在于提供了一个虚拟的80x86环境,拥有自己一套独立的“硬件”,可以完成一些纯软件编译器无法完成的功能例如Led显示,交通灯,步进电机等等,而且动态调试(DEBUG)时非常方便。
简单的例子:安装完成后选择菜单栏中的文件examples stepper motor 在编辑框出现了相应的源码。
点击compile编译选择一个文件保存保存完之后会弹出一个对话框点击run按钮则程序开始运行调试时主控界面如下:再次点击run可以停止运行单击reload可以从头开始执行程序单击single step 可以单步调试。
单击step back可以返回到上一条指令(这个功能也是一般调试器没有的)。
界面左边是寄存器栏,这里可以动态的观察每一步的执行结果点击主控界面下面的screen可以显示模拟输出窗口单击source可以查看源码窗口Reset相当于上面的reload键。
单击aux会出现一个菜单选择第一项memory可以观察程序内存区数值的变化。
选择stop on condition 可以设置条件断点:上面的设定当ax的值是0x0006是断下来单击run按钮可以看到断下来的时候ax值正好等于6单击vars可以查看运行过程中变量的变化。
Debug可以更详细的显示每一步的调试结果通过Stack(堆栈)可以观察函数调用的过程Flags显示标志寄存器的值。
如果刚刚执行的那一条指令修改了哪个标志位的值则以红色显示。
可以到这个网址去下载:/soft/16859.htm目前网上很多人找这个软件的破解版。
其实根本不用破解。
只要在用户名一栏输入任意的字符注册码的前三位输入“112”就可以绕过注册认证了。
至于为什么我就不多说了有兴趣的可以看一下我在看雪论坛发表的一篇文章:/showthread.php?t=119741下面是在百度文库下载的一篇基础教程希望能对大家有所帮助。
实验一 emu8086安装调试及一个asm程序结构
实验一 emu8086安装调试及一个asm程序结构实验目的通过实验掌握下列知识:1、掌握emu8086安装以及进入emu8986方法与菜单窗口的功能2、建立1个ASM文件,用单步命令调试观察段寄存器,IP,SP,寄存器,F,存储器。
3、掌握8088指令: MOV,PUSH,POP,LEA,LES,XLAT,ADD,SUB,MUL,DIV,XCHG实验类型:验证内容及步骤一、EMU8086安装及进入软件的方法1、开机后,在E:盘上建立emu8086文件夹,将emu8086压缩文件拷贝到此文件夹下。
2、用解压软件进行解压,产生3个文件,分别是en,ch,key3、再解压en文件,双击emu可执行文件进行安装,按照提示画面完成安装4、将ch汉化文件再解压,解压后的文件拷贝到emu8086安装文件夹下。
5、执行key文件,弹出窗口,在窗口中输入用户名L J,输入Licences:666,按Generate可产生序列号,将序列号复制到剪贴板上。
5、在桌面上双击emu8086进入仿真软件,按注册按钮输入用户名l j,将剪贴板上的序列号粘贴到注册框中这样就完成注册。
二、新建ASM文件用单步命令进行观察调试1、按新建按钮,弹出窗口选择EXE模板点确定给出如下结构程序框架。
TITLE 8086 Code Template (for EXE file); AUTHOR emu8086; DATE ?; VERSION 1.00; FILE ?.ASM; 8086 Code Template; Directive to make EXE output:#MAKE_EXE#以上为文件说明DSEG SEGMENT 'DATA'; TODO: add your data here!!!!DSEG ENDS以上为数据段SSEG SEGMENT STACK 'STACK'DW 100h DUP(?)SSEG ENDS以上为堆栈段CSEG SEGMENT 'CODE'START PROC FAR; Store return address to OS:PUSH DSMOV AX, 0PUSH AX; set segment registers:MOV AX, DSEGMOV DS, AXMOV ES, AX; TODO: add your code here!!!!; return to operating system:RETSTART ENDP;******************************************* CSEG ENDSEND START ; set entry point.以上为代码段删除不要的说明,此框架如下:DSEG SEGMENT 'DATA'DSEG ENDSSSEG SEGMENT STACK 'STACK' DW 100h DUP(?) SSEG ENDSCSEG SEGMENT 'CODE'CSEG ENDSEND START下面是例题输入程序如下:DSEG SEGMENT 'DATA'Ad DB 00H,01H,03H,DSEG ENDSSSEG SEGMENT STACK 'STACK' DW 100h DUP(?) SSEG ENDSCSEG SEGMENT 'CODE'MOV AX, DSEGMOV DS, AXMOV AX, DSEG MOV DS, AXLEA BX,ADMOV AH,01HINT 21HMOV SUB AL,30HXLATPUSH AXMOV DL,’-‘MOV AH,02HINT 21HPOP AXMOV AH,02HINT 21HMOC AH,41HINT 21HMOC AH,41HINT 21HCSEG ENDSEND START2、按模拟弹出存储器窗口,在存储器窗口中观察AX,BX,CX,DX,IP,CS,DS,SS,指令机器代码以及逻辑地址,然后按单步执行每条指令观察该指令执行结果3、按重载重新以单步或运行执行程序观察。
Emu8086模拟器的使用说明1
附录Emu8086模拟器的使用说明一、编写源程序1、进图编辑界面1)点击桌面图标,得到图1;图12)点击,得到图2。
图23)点击选中:,打开界面图3。
图3二、编写源程序及编译1、在图3中输入指令,保存源程序,后缀为.ASM。
如图4。
图4程序输入后,再次保存。
图52、点击“编译”,编译程序。
1)若程序有语法错误,则出现图6。
图6在窗口中显示出错指令所在的行,错误的类型。
改正后,再次点击,直到出现图7,显示指令没有语法错误。
(程序不一定正确。
)2)若程序没有语法错误,则出现图7。
图7 图83)保存可执行程序(文件名可以默认),如图8。
三、查看变量数据及程序运行1、点击按钮,再点击,得到界面如图9所示。
2、调试、运行程序窗口说明:(a)(b)图10 调试、运行程序窗口3、查看存储单元的内容1)点击“aux”,选中“memory”,如图11所示。
图112)出现如图12所示的窗口。
该窗口显示的是当前代码段中的信息,每行显示16个存储单元的内容。
地址和数据内容均默认为16进制数。
图123)查看数据段中的变量信息。
单步执行完“MOV DS,AX”指令后,查看DS寄存器的内容,如图13所示。
再输入新的逻辑地址,点击,如图14所示。
图144)查看其他段的存储信息。
如“查看数据段”的方法。
单步执行完段寄存器的赋值指令后,查看段寄存器的内容,再在图14中输入新的逻辑地址,点击4、程序运行1)若要正常执行程序,则点击“”。
2)若要分析每条指令执行的结果,则点击“”。
5、查看标志寄存器点击“flags”按钮即可查看状态标志位的信息。
微机原理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使用指南
目前使用最多的是十进制.十进制系统有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 ) 对应一位十六进制如下表习惯上我们在一个十六进制数的后面加上 "H",以便和其他进制区别, 这样我们就知道 5Fh 是一个十六进制数表示十进制的 95。
习惯上,我们也在以字母开头(从A到F)的十六进制数前面 加上"0" 例如: 0E120h . 十六进制 1234h 等于 4660:十进制到另外进制的换算在换算中,将十进制数不断除以目标进制的基底,每一次都要记录下商和余数,直到商0。
余数用来表示结果。
下面是一个十进制39(基底是10)到十六进制(基底是16)的换算:结果为27H上例中所有的余数都小于10,不必使用字母。
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使用指南
如何运行?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。
emu8086实验
实验一EMU8086软件使用
一、实验目的
(1)熟悉汇编语言开发环境。
.
(2)掌握EMU8086软件使用方法。
(3)了解汇编语言的程序结、调试一个简单的程序
(4)理解寻址方式的意义
二、实验内容及要求
1.EMU8086的使用
(1)打开桌面上的EMU8086的图标,出现如下图所示的对话框,可选择new,建立新的汇编语言程序,也可打开code example读取示例程序。
如点new建立新的汇编程序,弹出如下对话框,选择代码的模板,
(2)选择com模板,点击ok,出现源代码编辑界面,如下图所示:
可在上图中的界面内,填加自己的程序。
如:MOV AX,5
MOV BX,10
ADD AX,BX
点save即可保存成以.asm为扩展名的汇编源文件,点emulate可对程序进行调试。
出现下图界面
上图中左图显示了8086/8088的寄存器,部分存储单元的内容,可通过操作界面了解程序执行里各个寄存器的变化及存储单元的变化。
其中run为程序执行,single step为单步程序执行。
2.实验要求
(1).给内存4000H:0100H开始的内存区存入10个字节,分别为A B C D E F G H I J;
通过aux-memory查看内存存储情况;
将编写的程序段和内存存储界面显示在如下空白处;。
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后到此处。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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
查看内存、修改内存:[查看]/[查看外部内存查看器]
查看变量值:[查看]/[变量]
查看标志寄存器:[查看]/[标志寄存器]查看堆栈:[查看]/[堆栈]
表达式求值:[数学]/[表达式求值]
数值转换:[数学]/[数值转换]。