emu8086快速排序

合集下载

emu8086

emu8086

微机接口图形绘制,实现下面的目标1、将screen设置为图形显示模式;2、程序开始提示绘制直线、矩形还是三角形;3、根据2的选择,进一步通过键盘输入直线、矩形或三角形的参数(即直线端点或▲、■的各个顶点坐标);4、步骤3要求的图形绘制结束以后,再进入第2步。

实现过程首先分析老师上课给的程序org 100hmov al,13hmov ah,0int 10hmov si,20loopdx:mov cx,30 ;column列mov al,1000b ;pixel colorloopcx:inc almov dx,si ;row行mov ah,0chint 10hloop loopcxinc sicmp si,30jnz loopdxRet看它实现的效果它是通过打印每排然后列加在打印实现的我便通过它得到写直线的方程org 100hmov al,13hmov ah,0int 10hmov si,20mov cx,30 ;column列mov al,1000b ;pixel colorloopcx:mov dx,si ;row行mov ah,0chint 10hinc cxcmp si,30jnz loopcxRet同理竖线也可画出在看画斜线老师要求写直线算法函数但我看了网上的直线算法之后觉得太复杂,感觉做不了,便只实现45,135度角直线画法,因为比较简单org 100hmov al,13hmov ah,0int 10hmov si,20loopdx:mov cx,20 ;column列mov al,1000b ;pixel color loopcx:dec simov dx,si ;row行mov cx,simov ah,0chint 10hloop loopcxRet然后关于输入选择打印不同的图就要用到过程proc于是我建立了三个过程zhixiang juxing sanjiaoxing又要输入坐标之后打印图形则要用到输入函数同时还要保存数据留待后用于是我用了scan_num 同时push到堆栈然后用时pop到所需寄存器下面以直线过程为例include emu8086.inc org 100hzhixian proc GOTOXY 1,6lea si,msg6call print_string GOTOXY 1,7call scan_num ;x1 push cxGOTOXY 4,7call scan_num ;y1 push cxGOTOXY 1,8call scan_num ;x1 push cxGOTOXY 4,8call scan_num ;y2 push cx mov ah, 0mov al, 13hint 10hmov al,1000b mov ah,0chpop cx ;y2 pop dx ;x1 pop si ;y1 pop dx ;x1 loopcx:int 10hdec cxcmp cx,sijnz loopcxcall xianshiretzhixian endpDefine_scan_num又要在屏幕上显示各种信息便创建一个xianshi proc 同时可以通过调用该过程实现循环输入打印不同图形include emu8086.inc org 100hxianshi proc mov al, 02h mov ah,00h int 10hGOTOXY 1,1LEA SI, msg1 CALL print_string GOTOXY 1,2LEA SI, msg2 CALL print_string GOTOXY 1,3LEA SI, msg3 CALL print_string GOTOXY 1,4LEA SI, msg4 CALL print_string GOTOXY 1,5LEA SI, msg5 CALL print_stringmsg1 DB 'input 1 to paint a StraightLine', 0msg2 DB 'input 2 to paint a rectangle', 0msg3 DB 'input 3 to paint a Triangle', 0msg4 DB 'input 4 to Exit',0msg5 DB 'Enter the number : ', 0msg6 DB 'Enter the parameters of plot: ', 0xianshi endpdefine_scan_numdefine_print_stringEND选择调用不同过程通过将中的值与规定值比较CALL scan_numcmp cx,1je zhixiancmp cx,2je juxingcmp cx,3je sanjiaoxingcmp cx,4je Exit这样就构成了程序各个部件再组合就成了完整程序include emu8086.inc org 100hxianshi proc mov al, 02h mov ah,00h int 10h GOTOXY 1,1LEA SI, msg1CALL print_stringGOTOXY 1,2LEA SI, msg2CALL print_stringGOTOXY 1,3LEA SI, msg3CALL print_stringGOTOXY 1,4LEA SI, msg4CALL print_stringGOTOXY 1,5LEA SI, msg5CALL print_stringCALL scan_numcmp cx,1je zhixiancmp cx,2je juxingcmp cx,3je sanjiaoxingcmp cx,4je Exitretmsg1 DB 'input 1 to paint a StraightLine', 0msg2 DB 'input 2 to paint a rectangle', 0 msg3 DB 'input 3 to paint a Triangle', 0 msg4 DB 'input 4 to Exit',0msg5 DB 'Enter the number : ', 0msg6 DB 'Enter the parameters of plot: ', 0xianshi endpzhixian procGOTOXY 1,6lea si,msg6call print_stringGOTOXY 1,7call scan_num ;x1push cxGOTOXY 4,7call scan_num ;y1push cxGOTOXY 1,8call scan_num ;x1 push cxGOTOXY 4,8call scan_num ;y2 push cxmov ah, 0mov al, 13hint 10hmov al,1000bmov ah,0chpop cx ;y2 pop dx ;x1 pop si ;y1pop dx ;x1 loopcx:int 10hdec cxcmp cx,sijnz loopcxcall xianshiretzhixian endpjuxing proc GOTOXY 1,6lea si,msg6call print_string GOTOXY 1,7call scan_numpush cxGOTOXY 4,7call scan_numpush cxGOTOXY 1,8call scan_numpush cxGOTOXY 4,8call scan_numpush cxGOTOXY 1,9call scan_numpush cxGOTOXY 4,9call scan_numpush cxGOTOXY 1,10call scan_numpush cxGOTOXY 4,10call scan_numpush cxmov al,13hmov ah,0int 10hmov al,1000b ;pixel color mov ah,0chpop cx ;y1pop ds ;x2mov dx ,dspop si ;y2loopdx:int 10hinc cxcmp cx,sijnz loopdx ;(x2,y1)~(x2,y2)mov cx,sipop dx ;x2pop cx ; y2pop si ;x1loopdx1:int 10hdec dxcmp dx,sijnz loopdx1 ;(x2,y2)~(x1,y2)mov dx,sipop si ;y1loopcx1:int 10hdec cxcmp cx,sijnz loopcx1 ;(x1,y2)~(x1,y1) pop dxmov si,dsloopcx2:int 10hinc dxcmp dx,sijnz loopcx2 ;(x1,y1)~(x2,y1) call xianshiretjuxing endpsanjiaoxing proc GOTOXY 1,6lea si,msg6call print_string GOTOXY 1,7call scan_numpush cxGOTOXY 4,7call scan_numpush cxGOTOXY 1,8call scan_numpush cxGOTOXY 4,8call scan_numpush cxGOTOXY 1,9call scan_numpush cxGOTOXY 4,9call scan_numpush cxmov al,13hmov ah,0int 10hmov al,1000b ;pixel color mov ah,0chpop ds ;y3mov cx,dspop dx ;x2pop si ;y2loopxie:int 10hinc cxcmp cx,sijnz loopxie ;(x2,y3)~(x2,y2)pop dx ;x2pop si ;y1loopxie1:int 10hdec dxdec cxcmp cx,sijnz loopxie1 ;(x2,y2)~(x1,y1)pop dx ;x1mov si,dsloopxie2:int 10hinc dxdec cxcmp cx,sijnz loopxie2 ;(x1,y1)~(x2,y3) call xianshiretsanjiaoxing endpexit procretexit endpdefine_scan_numdefine_print_stringEND实现效果先打印一条直线之后再显示开始界面从新开始本次打印一个矩形输出结果再输出三角形先输入坐标输出结果想退出则选择4遇到的困难及解决办法:在实现该程序的过程中,首先遇到的困难是如何给定直线的坐标,然后要将该坐标给寄存器,然后在读取它用来画直线。

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软件的使用一、实验目的:(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的使用

实验一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可以完全执行程序。

排序

排序

实验一、用8086/8088汇编语言进行数据排序一、实验目的:1、熟悉EMU8086集成开发环境的使用。

2、通过编程、上机调试,进一步理解汇编语言的设计思路与执行过程。

3、熟悉INT 21H中断调用。

4、掌握数据排序的常用算法,利用汇编语言实现数据排序。

5、巩固理论知识,锻炼动手编程。

二、实验内容:1、在TABLE1开始的内存单元中,预先存储100个有符号字类型的数值。

2、编写代码、将TABLE1中的100个数值,按照从大到小的排序,放在TABLE2开始的内存单元中。

3、将TABLE2中的数字,顺序输出在屏幕上。

4、查看TABLE1开始的内存的100个数值。

5、查看TABLE2开始的内存的100个数值。

三、设计思路:1、自定义一个display函数,用来往屏幕上显示特定的字符。

2、定义一个data段,用来存储固定的字符。

3、定义一个code段,当做主程序。

4、所用的方法是冒泡排序法5、主程序中第一步先获取键盘输入。

6、主程序中第二步将键盘输入的数存储到内存中。

7、主程序中第三步用[基址+变址]方法进行冒泡排序。

8、主程序中第四步将排序好后新的数组从内存中取出,并回显到屏幕上。

四、排序算法:1、冒泡排序:(1)比较相邻的两个元素,如果第二个比第一个大,则交换这两个值。

(2)对每一对相邻元素做相同的工作,从开始第一对到结尾的最后一对,这样最后的元素应该会是最大的数。

(3)针对所有的元素重复以上的步骤,除去最后一个。

(实际过程中是最后一个值和后面的一个空值进行比较)(4)重复(1)~(3),直至排序完成。

2、选择排序:(1)首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。

(2)再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

(3)重复(1)~(2)过程,直至排序完成。

3、插入排序:(1)构建有序数列。

(2)对于未排序的数据,在已排序的数列中从后向前扫描。

(3)找到相对应的位置后插入。

8086汇编实现冒泡排序、直接插入排序、折半查找

8086汇编实现冒泡排序、直接插入排序、折半查找

(2)直接插入法 直接插入排序:将一个数据插入到一个已排好序的数据中,主要步骤如下:
① 查找应该插入的位置,这个过程免不了要比较数据的大小; ② 找到位置后,需将这个位置以及其后的数据都向后移动一位,空出此位置,等待插入 ③ 插入数据。
其 C 语言版的代码如下:
for(int i=2;i<=100;i++)
DSEG SEGMENT SCORE DB 31H,02H,15H,4H,5H,6H,7H,8H,9H,10H,90 DUP(05H) MAX DB ? MIN DB ?
DSEG ENDS CSEG SEGMENT
ASSUME DS:DSEG,CS:CSEG START: MOV AX,DSEG
MOV DS,AX
;相当于 i
L2: MOV AL,[BX+DI] ; L2 为内循环,(DI)为循环变量,相当于 j
CMP AH,AL
JAE L3
MOV DH,AH
;AH<Al,交换两个数
MOV AH,AL
MOV AL,DH
MOV [BX+DI],AL ;将交换后的数存入存储器
MOV [BX+SI],AH ;这两步很重要
L4: MOV DL,[BX+DI] ;从内存中取出 a[j],给(DL)
CMP DH,DL
;比较 a[0]和 a[j]
JAE L5
;a[0]<a[j],向后移
MOV [BX+DI+1],DL ;存入内存,实现真正的后移
DEC DI
;j--
JMP L4
L5: MOV [BX+DI+1],DH ;a[0]>=a[j],a[0]—>a[j+1],实现直接插入

EMU8086软件在微机原理及接口技术数字中的应用

EMU8086软件在微机原理及接口技术数字中的应用

EMU8086软件在微机原理及接口技术数字中的应用作为一款微型计算机编程软件,EMU8086在微机原理及接口技术数字中有着广泛的应用。

本文将从程序设计、嵌入式系统、数据测控、仿真模拟等多个方面探讨EMU8086的应用。

一、程序设计EMU8086软件是一种兼具实时性、可移植性和通用性的编程软件。

它支持8086处理器的全部指令,并提供图形化的IDE界面、在线调试、汇编器、模拟器等多项功能,让编程变得更加高效,也为不少开发人员提高了编程效率。

通过EMU8086,可以设计执行情况较为复杂的程序,如GUI应用程序、嵌入式系统、多线程操作等。

二、嵌入式系统嵌入式系统是现代电子产品不可或缺的一部分。

以工业控制为例,被广泛应用于温度、湿度、压力等各种参数的采集、监控和控制。

在此种场景下,EMU8086可以很好地满足这些需求。

通过编写程序,可以实现实时监测各种参数的功能,同时实现控制电机等设备的操作。

此外,在自动化生产行业,嵌入式系统也得到大量应用,通常被用于检测控制产品的加工、装配等各个环节,优化生产过程,提高生产效率。

在嵌入式系统的开发中,EMU8086可以标准化研发流程、提高开发效率,同时采取算法优化等技术实现功耗控制以及设备长时间运行的稳定性。

三、数据测控技术数据测控技术是微机原理及接口技术数字中更重要的一部分。

我们可以通过编写程序,获取外部电路的各项数据,如温度、湿度、电压、电阻、电容等。

通过程序采集这些数据,可以帮助我们更好地去理解电路的运行机制,并进行相应的分析和控制。

四、仿真模拟EMU8086还可以在仿真软件中运行,例如Proteus等仿真器,帮助我们通过模拟电路的方式来评估电路的性能。

在这种情况下,程序与实际原型之间可以脱离,简化核心的调试过程。

同时,仿真模拟还可以帮助我们快速地推断出电路中的问题,并且可以随意改变电路参数,以便了解效果优化程度。

总之,EMU8086作为一种通用、轻量级、可跨平台的微机编程软件,在微机原理及接口技术数字技术的实现中发挥了举足轻重的作用。

emu8086介绍解析

emu8086介绍解析

emu8086EMU8086是学习汇编必不可少的工具,它结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。

该软件包含了学习汇编语言的全部内容。

Emu8086集源代码编辑器,汇编/反汇编工具以及可以运行debug 的模拟器(虚拟机器)于一身,此外,还有循序渐进的教程。

目录软件简介使用方法如何运行十进制系统二进制系统十六进制系统十进制到另外进制的换算有符号数汇编语言通用寄存器段寄存器寻址方式MOV 指令数组常量中断运算与逻辑指令程序控制转移堆栈展开软件简介使用方法如何运行十进制系统二进制系统十六进制系统十进制到另外进制的换算有符号数汇编语言CPU内部通用寄存器段寄存器寻址方式MOV 指令数组常量中断运算与逻辑指令程序控制转移堆栈展开编辑本段软件简介EMU8086是你学习汇编必不可少的工具!Emu8086-MicroprocessorEmulator结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。

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

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

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

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

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

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

该软件包含了学习汇编语言的全部内容。

Emu8086集源代码编辑器,汇编/反汇编工具以及可以运行debug的模拟器(虚拟机器)于一身,此外,还有循序渐进的教程。

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下面是在百度文库下载的一篇基础教程希望能对大家有所帮助。

快速排序的方法

快速排序的方法

快速排序的方法快速排序是一种常用的排序算法,它的时间复杂度为O(nlogn),效率非常高。

它的思想是在待排序的序列中选择一个元素作为基准值,然后将序列分为两部分,一部分是小于基准值的,一部分是大于基准值的,然后再对这两部分进行递归排序,最终得到一个有序序列。

快速排序的实现方法有很多种,下面我们就来介绍一种常用的方法。

1.选择基准值首先,我们需要在待排序的序列中选择一个元素作为基准值。

通常情况下,我们选择序列的第一个元素作为基准值。

2.分割序列接下来,我们将待排序的序列分为两部分,一部分是小于基准值的,一部分是大于基准值的。

做法是从序列的右端开始扫描,找到第一个小于基准值的元素,然后从序列的左端开始扫描,找到第一个大于基准值的元素,将这两个元素交换位置。

重复这个过程,直到左右两个指针相遇。

此时,左侧的元素都小于等于基准值,右侧的元素都大于等于基准值,然后将基准值与左侧的最后一个元素交换位置,这样就完成了一次分割操作。

3.递归排序接下来,我们对左侧和右侧的序列进行递归排序,即对左侧的序列和右侧的序列分别进行快速排序操作。

4.合并序列最后,将左侧的有序序列和右侧的有序序列合并起来,就得到了最终的有序序列。

下面是快速排序的Python实现代码:```def quick_sort(arr):if len(arr) <= 1:return arrelse:pivot = arr[0]left = [x for x in arr[1:] if x < pivot]right = [x for x in arr[1:] if x >= pivot]return quick_sort(left) + [pivot] + quick_sort(right)```快速排序的优缺点快速排序的优点是时间复杂度比较低,效率比较高,而且它是一种原地排序算法,不需要额外的存储空间。

但是快速排序也有一些缺点,比如对于近乎有序的序列,它的效率会非常低,甚至退化为O(n^2)的时间复杂度。

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后到此处。

信息技术中快速排序的方法

信息技术中快速排序的方法

信息技术中快速排序的方法
快速排序是一种常用的排序算法,它利用分治的思想将一个大问题分解为小问题来解决。

在信息技术领域中,快速排序被广泛应用于对大量数据进行排序和搜索。

快速排序的基本思想是选择一个基准元素,然后将数组中小于基准元素的放在左边,大于基准元素的放在右边,再分别对左右两部分递归地进行快速排序。

这样经过一次分区操作之后,基准元素就处于其最终位置。

快速排序的关键在于分区操作,它需要找到一个基准元素,并将数组中小于基准元素的放在左边,大于基准元素的放在右边。

这一过程可以通过双指针法来实现,即设置两个指针分别从数组的两端向中间遍历,直到它们相遇。

在遍历的过程中,不断交换元素的位置,最终实现分区操作。

快速排序的时间复杂度为O(nlogn),在实际应用中,它通常比其他排序算法具有更好的性能。

它在排序大规模数据时表现出色,因此被广泛应用于数据库查询、网络搜索和数据分析等信息技术领域。

总之,快速排序作为一种高效的排序算法,在信息技术领域中发挥着重要作用。

通过合理地选择基准元素和实现分区操作,快速排序能够快速地对大量数据进行排序,提高了信息技术领域的效率和性能。

汇编语言程序设计实验篇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 , pure machine code.”后,单击按钮。

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

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

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

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

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

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

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

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

如何运行?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实验

实验一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软件在微机原理及接口技术数字中的应用的研究报告

EMU8086软件在微机原理及接口技术数字中的应用的研究报告随着计算机技术的不断发展,微机的应用越来越广泛,尤其是在数字中的应用,可谓是无处不在。

而EMU8086软件作为一种可以在计算机上模拟8086微处理器的软件,在微机原理及接口技术数字中的应用也越来越多。

在数字电路的设计中,EMU8086软件可以通过模拟8086微处理器来实现对数字器件的控制。

可以从这个层面上看出,EMU8086软件在数字电路的研究中起到了非常重要的作用。

使用EMU8086软件进行数字电路的仿真可以大大提高数字电路设计的效率和质量,有效地减少了设计成本。

此外,EMU8086软件还可以进行微机的汇编语言编程教学。

学生可以通过EMU8086软件进行汇编语言的学习和实验,比如可以通过EMU8086软件来设计一个简单的程序,在实践中学习8086微处理器的工作原理和运行方式。

同时,EMU8086软件还提供了一些实用的工具,比如调试器、汇编器等,方便用户进行程序测试和调试。

另外,EMU8086软件还可以应用于数字信号处理中。

在现代通信技术中,数字信号处理起着至关重要的作用,而EMU8086软件就可以通过模拟8086微处理器来实现对数字信号的处理。

比如可以通过EMU8086软件设计一个数字滤波器,对数字信号进行滤波处理,实现信号的降噪和去除干扰等功能。

总之,EMU8086软件在微机原理及接口技术数字中的应用是非常广泛的。

无论是在数字电路的设计中,还是在汇编语言编程教学中,EMU8086软件都起着重要的作用。

同时,EMU8086软件还可以应用于数字信号处理等领域,为数字技术的发展做出了重要贡献。

数据分析是对一定数量数据的收集,重组和解释的一个过程。

在这个过程中,我们需要对数据进行清洗,排序,统计,分布图表展示等操作,从而发现数据中的规律性和趋势性,为后续的决策提供参考依据。

以下是一个关于企业销售情况的数据分析范例:数据收集:该企业2019年1-12月销售数据。

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