Emu8086使用指南教案资料

合集下载

微机原理:EMU8086使用及指令系统熟悉

微机原理:EMU8086使用及指令系统熟悉

[公司名称]实验一EMU8086使用及指令系统熟悉微机原理上机实验[日期]一、实验要求1.熟悉并掌握EMU8086 汇编语言调试环境;2.学习8086的指令系统,输入简单的指令,观察各寄存器、内存相关单元以及处理器标志位的变化(数据传送类指令,算数运算类指令,逻辑运算类指令,标志处理和CPU控制类指令,移位和循环移位类指令,处理器控制类指令等,要求每类指令至少一个用例。

具体用例自行设计,可参考教材用例);3.学习汇编语言程序设计的基本步骤和方法;4.学会使用EMU8086 debug调试程序;5.编写一个简单的程序:将“This is my first ASM program-姓名(汉语拼音各人的姓名)”放在DS=1000H,BX=0000H开始的存储器单元中,然后将该内容搬移到BX=0100H开始的单元中,最后将该字符串通过DOS功能调用显示在屏幕上。

二、实验目的1.学习EMU8086仿真开发环境的使用,理解和掌握汇编语言编程的基本步骤;2.熟悉8086指令系统;3.熟悉变量、常量及伪指令的使用;4.熟悉内存单元的存储结构,字符串的处理以及简单的编程。

三、实验过程(调试分析)3.1熟悉并掌握EMU8086汇编调试环境此为EMU8086新建汇编源程序的界面,对应有四种模板可以挑选:①COM——无需分段,所有内容均放在代码段中,程序代码默认从ORG 0100H开始②EXE——需要分段,内容按代码段、数据段、堆栈段划分,编译器自动完成空间的分配③BIN——二进制文件,适用于所有用户定义的结构类型④BOOT——适用于在软盘中创建的文件⑤empty workspace可以创建空的文档此为一个EXE的模板3.2测试几类简单的指令3.2.1数据传送指令①测试一name "test mov"org 100hMOV AX, 1234HMOV BH, 12HMOV BL, 34HMOV CX, 12MOV DX, CXMOV SP, AX②测试二name "test mov2"org 100hMOV AX, 2000HMOV DS, AXMOV [1000H], 'A'MOV [1001H], 'B'MOV SI, 1000HMOV AX, [SI]HLT3.2.2算数运算指令计算a*b+c-18其中a=34H, b=56H, c=0E7Hdata segmentDAT1 DB 34HDAT2 DB 56HDAT3 DB 0E7HDATY DW ?endsstack segmentdw 128 dup(0)endscode segmentstart:ASSUME DS:DATA, SS:STACK, CS:CODE MOV AX, STACKMOV SS, AXMOV AX, DATAMOV DS, AXMOV AL, DAT1MOV BL, DAT2IMUL BLMOV BX, AXMOV AL, DAT3CBWADD AX, BXSUB AX, 18MOV DATY, AXendsend start3.2.3逻辑运算指令通过单步调试可以追踪到每一条指令执行所产生的效果,此处指放出最后结果的截图name 'test logic operation'org 100hMOV AX, 45FCHMOV BX, 0034HAND AL, 0FHOR BX, 000FHXOR AH, 0FHNOT BHHLT3.2.4标志处理和CPU控制类指令name 'test control and flags'org 100hCLC;0-->CFCMC;^CF-->CFSTD;1-->DFCLI;0-->IFNOPNOP;blankHLT;pause3.2.5循环和移位类指令name "test circle replacement"org 100hMOV BL, 01110010BSTC;1-->CFMOV CL, 3RCR BL, CLHLT算数移位三次后结果应该为BL=10101110B=AEH3.3编写一个简单的程序实现字符串的储存、搬移和显示①不分段,仅使用代码代码段,使用逐个字符存入name "FIRST PROGRAM"org 100h; set segment register:MOV AX, 1000HMOV DS, AXMOV BX, 0000H; print "This is my first ASM program-YongRongFeng"MOV [02h], 'T'MOV [04h], 'h'MOV [06h], 'i'MOV [08h], 's'MOV [0ah], ' 'MOV [0ch], 'm'MOV [0eh], 'y'MOV [10h], ' 'MOV [12h], 'f'MOV [14h], 'i'MOV [16h], 'r'MOV [18h], 's'MOV [1ah], 't'MOV [1ch], ' 'MOV [1eh], 'A'MOV [20h], 'S'MOV [22h], 'M'MOV [24h], ' 'MOV [26h], 'p'MOV [28h], 'r'MOV [2ah], 'o'MOV [2ch], 'g'MOV [2eh], 'r'MOV [30h], 'a'MOV [32h], 'm'MOV [34h], '-'MOV [36h], 'Y'MOV [38h], 'a'MOV [3ah], 'n'MOV [3ch], 'g'MOV [3eh], 'R'MOV [40h], 'o'MOV [42h], 'n'MOV [44h], 'g'MOV [46h], 'F'MOV [48h], 'e'MOV [4ah], 'n'MOV [4ch], 'g'MOV CX, 38 ; times of moving characters MOV BX, 0002H;move stringmove:MOV AX, [BX]MOV [BX+0100H], AXADD BX, 2LOOP move;print screenMOV BX, 0102HMOV CX, 38print:MOV DL, [BX]MOV AH, 02HINT 21HADD BX, 2LOOP print;return DOSMOV AH, 4CHINT 21Hret②分段并使用字符串输入,字符串显示name "FIRST PROGRAM USE HEX"data segmentHEX DB 'This is my first ASM program-YangRongFeng','$' endsstack segmentdw 128 dup(0)endscode segmentstart:;You need to correspond the segmentASSUME CS:CODE, DS:DATA, SS:STACK MOV AX, STACKMOV SS, AXMOV SP, 100MOV AX, DATAMOV DS, AX;print hex on the screenMOV DX, OFFSET HEXMOV AH, 9INT 21HMOV AH, 4CHINT 21H;return DOSendsend start。

微机原理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 模板——适用于需分段的复杂程序,内容按代码段、数据段、堆栈段划分。

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

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

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

该编辑界面集文档编辑、指令编译、程序加载、系统工具、在线帮助为一体,其菜单功能如表 1 所示。

编写完程序后,用户只需单击工具栏上的“ compile”按钮,即可完成程序的编译工作,并弹出如图 4 所示的编译状态界面。

若有错误则会在窗口中提示,若无错误则还会弹出保存界面,让用户将编译好的文件保存相应的文件夹中。

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

Emu8086的使用方法(实验一)新精品PPT课件

Emu8086的使用方法(实验一)新精品PPT课件

DSEG SEGMENT 'DATA'
DATA1 DW 0F865H
DATA2 DW 360CH
DSEG ENDS
CSEG SEGMENT 'CODE'
ASSUME
CS:CSEG,DS:DSEG
START: MOV AM, DSEG
MOV DS,AX
MOV AX, ESEG
MOV ES, AX
LEA SI, DATA1
《微机原理及应用》实验
2012.10.11
实验一
Emu8086仿真软件的使用
实验目的:
1. 学习、掌握Emu8086软件的使用方法; 2. 了解汇编语言的程序结构及调试方法。
实验要求:
1. 能够正确选择Emu8086软件的工作 模板;
2. 能够正确编写存储器中两个多位无符 号数相加的源程序;
3. 能够正确处理出现的编辑错误;
MOV AX, DATA1
ADD AX, DATA2
MOV [2800H], AX
HLT
CSEG ENDS
END START
(注:源程序有故意保留的错误,请你改正)
文件的保存:点击快捷键“保存” 。
也可以从“文件”项目中选择“另存 为”。
• 所保存文件的扩展名,自动定为.ASM。
文件的编译:编辑好的文件需要进行 编译后才能运行。可点击“编译”快 捷键。
• 从内存中观察计算结果。
实验报告要求:
• 认真填写实验报告中各项内容; • 允许在实验报告中粘贴复制的计算机屏幕信息,
例如实验程序、实验结果等; • 及时归纳实验中发现的问题,并将解决办法写入
实验报告; • 欢迎您在报告中提供改进本次实验的建议。

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
查看内存、修改内存:[查看]/[查看外部内存查看器]
查看变量值:[查看]/[变量]
查看标志寄存器:[查看]/[标志寄存器]查看堆栈:[查看]/[堆栈]
表达式求值:[数学]/[表达式求值]
数值转换:[数学]/[数值转换]。

Emu8086仿真软件_使用手册

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教程而且是追码实例说明

今天我们详细说下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后到此处。

[vip专享]Emu8086仿真软件_使用手册

[vip专享]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软件的使用

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+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模板文件建立。

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

实验一 Debug和Emu8086软件的使用

实验一 Debug和Emu8086软件的使用

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

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

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

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

二、实验内容及要求:1、Debug的使用根据课本104页的实验1中的预备知识的说明,学习使用Debug软件。

编程实现:在显示器上显示字符串Welcome to TianHe college!两个64位无符号数相加2、Emu8086的使用(1)打开桌面上的Emu8086的图标,出现如图所示的对话框,选择【继续……】首次打开软件,界面中默认已有一段小程序。

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

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

选择不同的模板,在程序源代码中会出现如下标记:#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模板,点击【确定】,软件出现源代码编辑器的界面,如图所示:在源代码编辑器的空白区域,编写如下一段小程序:DATAS SEGMENTSTRING DB 'Welcome to TianHe college!', 0AH,0DH,'$'DATAS ENDSCODES SEGMENTASSUME CS:CODE,DS:DATASSTART:MOV AX,DATASMOV DS,AXLEA DX,STRINGMOV AH,9INT 21HMOV AH,4CHINT 21HCODES ENDSEND START代码编写结束,点击菜单【文件】【另存为……】,将源代码换名保存。

Emu8086教程

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模拟器的使用说明1

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使用指南

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”部分可以分别输入相应的变量定义和指令。

8086 实验指导书(修改版)

8086 实验指导书(修改版)

A
第三章
LCA88ET(AEDK 8688ET)
实验仪的使用与操作
28
1.单击
图标,显示如下界面
点击此处, 建立文档
29
2.打开一个新的界编程界面
编写源程序窗口
编译结果窗口
30
3.编译无错误提示
31
4.编译窗口的四个选项可直接选第三选项
只要编译通过就可 直接加载程序
32
5.编译无错误,即可将程序加载程序到AEDK8688实验仪 加载成功如下图
A BUFF→SI 字符计数器清零 BL →[SI] BL清零 SI+1 调中断,从键盘 输入数据,数据 间用逗号分隔 取字符数→CX A AL+BL→BL 是字符1~9? 字符计数器+1 BL清零 转换成一位十进 制数→ AL 是逗号?
BL×10
CX-1 CX=0?
25
实验三. 排序实验
一. 实验要求
要求:从键盘输入5个有符号2位十进制数,将它转换成有符号二 进制数,将结果送入内存中buff开始的单元中。 将这些数从 大到小排序,并将排序结果显示在屏幕上。
二. 实验目的
掌握用汇编语言编写气泡排序程序的思路和方法,掌握字符和数 据的显示方法。
三. 实验程序框图
键盘输入子程序inword 出口: buff开始的单元,CX 排序子程序sort 入口:buff开始的单元,CX;出口:buff开始的 单元,CX 显示子程序display:入口:AL
23
实验二 从键盘输入并显示
一. 实验要求 从键盘输入5个有符号2位十进制数,将它转换成有符号二进制数, 将结果送入内存中buff开始的单元中。 二. 实验目的 掌握键盘接受数据的方法,码制转换。 三. 实验程序框图 算法: ①符号字符串→标识符MINU。若为负, MINU=1; ②数字字符(31H~39H)→一位十进制数(0~9)a0,a1,a2… ③十进制数转换成十六进制数: 十六进制数=a2x100+a1x10+a0 =(a2x10+a1) x10+a0 ④ 转换后查符号,如果是负数,取补 码制转换部分流程图: 24

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 。

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.解压缩:将Emu8086_v3.00.rar解压到当前文件夹,会增加一个Emu8086 v3.00文件夹;
2.安装:打开Emu8086 v
3.00文件夹,选择Emu8086 v3.00子文件夹,执行Emu8086Setup.exe程序,进行安装;
3.汉化:将emu8086_汉化包解压缩,然后将其子文件夹emu8086_chs_zhaopeng内所有文件复制到C:\Program Files\Emu8086v.300文件夹内,完成汉化工作。

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

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

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

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。

习惯上,我们也在以字母开头(从A到F)的十六进制数前面加上"0" 例如:0E120h. 十六进制1234h等于4660:十进制到另外进制的换算在换算中,将十进制数不断除以目标进制的基底,每一次都要记录下商和余数,直到商0。

余数用来表示结果。

下面是一个十进制39(基底是10)到十六进制(基底是16)的换算:结果为27H上例中所有的余数都小于10,不必使用字母。

再举一个更复杂的例子:十进制43868换算为十六进制:结果是0AB5Ch, 使用上面提到的表将大于9的数字替换成字母。

运用同样的原理,我们可以换算为二进制(用2作除数),或者是先换算成十六进制,再用上面的表换算成二进制:于是,得到二进制:1010101101011100b 有符号数对于十六进制数0FFh 无法确定它是正数还是负数,因为它可以表示十进制的"255" 或者 "- 1"。

8位可以表示256个状态,于是,我们可以假定前128个表示正数(从0到127),接下来的128个数(从128到256)表示负数。

如果想表示"- 5",我们从256中减去5,即256 - 5 = 251。

用这种复杂的方法表示一个负数有着数学依据的,数学上"- 5" 加上 "5"等于0。

当我们将两个8位的数字5和251相加时,结果超过255,溢出处理为0!128到256高位始终是1,这个可以作为数字符号的标记对于字(16位),16位有65536个状态,头32768个状态(从0到32767)用来表示正数,下面的32768个状态(从32767到65535) 表示负数Emu8086 带有数制转换工具,也可以计算各种数值表达式。

选择菜单Math 项:Number Convertor(数制转换)可以实现任意数制之间的转换。

在文本框中填写源数值,将自动转换到任意的数制。

可以作8 位或者16 位转换。

Expression Evaluator(表达式计算)可以用来计算不同数制的计算以及从一个进制到另一个进制的转换。

输入表达式,按下回车,结果就会以你选定的进制表示。

最长可以进行32位的计算。

当在Signed打钩选中时(除了八进制和双字),最前面的一位将被认作是符号位。

这样以来,0FFFFFFFFh 将被认为是十进制的-1。

例如,你计算0FFFFh * 10h + 0FFFFh ( 8086 CPU所能访问的最大内存地址)。

如果你选中Signed和Word 选项,结果是-17 (因为表达式被认为是(-1) * 16 + (-1) )。

如果想按照无符号数计算,请不要选择Signed 表达式为65535 * 16 + 65535 计算结果将是1114095 同样你可以使用Number Convertor将非十进制换算为有符号的十进制,然后根据十进制计算。

支持如下运算:~not (inverts all bits).* multiply./ divide.%modulus.+sum.-subtract (and unary -).<<shift left.>>shift right.&bitwise AND.^bitwise XOR.| bitwise OR.二进制必须有“b”作结尾,例如00011011b 十六进制必须有"h"作结尾,另外,当地一位是字母时,最前面必须加上0,例如:0ABCDh八进制必须有"o"作结尾,例如:77o什么是汇编语言?汇编语言是底层编程语言。

为了学习这门语言,你需要对于计算机结构有所了解。

计算机系统模型如下:系统总线 system bus(图中黄色部分)是将计算机各个部分连接到一起的部件。

CPU是计算机的心脏,大部分的运算都是在CPU中完成的。

RAM是读取并且存放将要执行的程序的地方。

CPU内部通用寄存器8086CPU有8个通用寄存器,每一个寄存器都有自己的名称:•AX累加寄存器 accumulator register(分为AH / AL).•BX基址寄存器 base address register (分为BH / BL).•CX计数寄存器 count register(分为CH / CL).•DX数据寄存器 data register (分为DH / DL).•SI源变址寄存器 source index register.•DI目的变址寄存器 destination index register.•BP基址指针寄存器 base pointer.•SP堆栈寄存器 stack pointer.编程中,由程序员决定通用寄存器的具体用途。

寄存器的主要目的是保存数值(变量)。

上面提到的寄存器是16位的,意思是: 0011000000111001b (二进制),或者12345(十进制形式)。

4个通用寄存器(AX, BX, CX, DX) 在使用时分为两个8位寄存器,例如假设AX= 0011000000111001b,AH=00110000b AL=00111001b。

当你修改其中任意8位值,整个16位寄存器的值同样改变。

同样对于其他的3个寄存器,“H”表示高8位,“L”表示低8位。

寄存器在CPU内部,访问中它们速度远远超过内存。

因为,访问内存需要经过系统总线,所以时间要长一些。

而访问寄存器中的数据几乎不需要时间。

于是,编程中,应当尽量在寄存器中保存数据。

虽然寄存器很小,并且这些寄存器都有具体用途,但他们依然是存放计算中临时数据的好地方。

段寄存器•CS代码段寄存器,用来存放当前正在运行的指令•DS数据段寄存器,用来存放当前运行程序所用的数据•ES附加段寄存器,由程序员决定用途•SS堆栈段寄存器,指出堆栈所在区域尽管容许在段寄存器中存放任何数据,但是这决不是一个好主意。

段寄存器有着非常特别的目的--指出可以访问内存块的地址。

段寄存器与通用寄存器协同工作就可以访问任意的内存区域。

例如,如果我们打算访问物理地址是12345h(十六进制)的内存单元,我们应设置DS = 1230h SI = 0045h这样以来,我们便能访问超过一个寄存器(16位)所能表示的内存地址的范围。

CPU计算物理地址的方法是将段寄存器乘以10H在加上一个特定的通用寄存器。

(1230h * 10h + 45h = 12345h):这种,由两个寄存器生成的地址被称为有效地址(effective address)默认下,BX, SI 及 DI 与 DS协同工作,BP SP 与 SS 寄存器协同工作。

其余的通用寄存器不能形成有效地址!同样,尽管BX可以形成有效地址,但是BH BL不能!控制寄存IP 指令指针寄存器 instruction pointer 、Flags Register 状态标志寄存器IP 始终同CS 协同工作,指出当前执行的指令。

Flags Register 完成一次数学运算后,由CPU自动修改,通过它可以得到当前结果类型,也可以作为跳转语句条件。

通常你无法直接访问它们。

寻址方式我们可以通过下面的四个寄存器来寻址 BX, SI, DI, BP.通过计算[]符号中的值,我们可以访问到不同内存单元的值。

具体组合请看下表:[BX + SI] [BX + DI] [BP + SI] [BP + DI] [SI][DI]d16 (variable offset only)[BX][BX + SI] + d8[BX + DI] + d8[BP + SI] + d8[BP + DI] + d8[SI] + d8 [DI] + d8 [BP] + d8 [BX] + d8 [BX + SI] + d16[BX + DI] + d16[BP + SI] + d16[BP + DI] + d16[SI] + d16[DI] + d16[BP] + d16[BX] + d16d8 - 表示8位偏移量 d16 - 表示16位偏移量偏移量可以是一个立即数或者是一个变量的偏移,或者二者兼备。

这取决于编译器如何计算单独的立即数。

偏移量可以在[]符号里面或者外面,这不影响编译器生成相同的机器码。

偏移量是一个有符号数,可以是正数或者负数。

一般说来,8位或者16位,对于编译后的结果是有影响的。

例如,假定 DS = 100, BX = 30, SI = 70。

相关文档
最新文档