eAAA反汇编视频教程 第7讲:循环结构
- 格式:ppt
- 大小:789.52 KB
- 文档页数:10
交通信息与控制工程系教案(理论教学用)课程名称微机原理与接口技术第 8 次第 4 周 2 学时上课教室WM1310 课程类型专业基础课授课对象自动化专业章节名称第三章寻址方式和指令系统(3.3)教学目的和要求1.掌握8086的基本指令,如逻辑运算和移位指令、串操作指令、程序控制指令等。
讲授主要内容及时间分配1.逻辑运算和移位指令;(35min)2.串操作指令;(20min)3.程序控制指令;(25min)4.处理器控制指令。
(10min)教学重点与难点重点:1.逻辑运算和移位指令的基本功能和格式;2.串操作指令的基本功能和格式;3.程序控制指令的基本功能和格式。
难点:逻辑运算和移位指令的基本功能和格式。
要求掌握知识点和分析方法1.逻辑运算和移位指令的格式、功能及应用方法;2.串操作指令的格式、功能及应用方法;3.程序控制指令的格式、功能及应用方法。
启发与提问1.逻辑移位和算术移位指令的区别?教学手段多媒体+板书作业布置思考题:1.远跳转和近跳转的区别?3.2, 3.53.9, 3.113.12, 3.14主要参考资料备注讲授内容三、逻辑运算和移位类1.逻辑运算逻辑运算指令对操作数的要求大多与MOV指令相同。
逻辑运算是按位操作的,它包括AND(与)、OR (或)、NOT(非)、XOR(异或)和TEST(测试)指令。
除“非”运算指令外,其余指令的执行都会使标志位OF=CF=0,AF位无定义,SF、ZF和PF 根据运算结果设置。
“与”运算指令格式:AND OPRD1,OPRD2操作:两操作数相“与”,结果送目标地址。
【例】要屏蔽AL中的高4位。
AND AL,00001111B【例】AND AL,AL此指令执行前后,(AL)无变化,但执行后使标志位发生了变化,即CF=0,OF=0。
“或”运算指令格式:OR OPRD1,OPRD2操作:两操作数相“或”,结果送目标地址【例】(AL)=0FH,OR AL,10000000B(AL)=8FH【例】OR AL,AL指令执行前后,(AL)不变,但执行后标志位发生了变化,即CF=0,OF=0。
二进制形式的主引导记录:0000:0600 33 C0 8E D0 BC 00 7C FB-50 07 50 1F FC BE 1B 7C 3.....|.P.P....| 0000:0610 BF 1B 06 50 57 B9 E5 01-F3 A4 CB BE BE 07 B1 04 ...PW........... 0000:0620 38 2C 7C 09 75 15 83 C6-10 E2 F5 CD 18 8B 14 8B 8,|.u........... 0000:0630 EE 83 C6 10 49 74 16 38-2C 74 F6 BE 10 07 4E AC ....It.8,t....N. 0000:0640 3C 00 74 FA BB 07 00 B4-0E CD 10 EB F2 89 46 25 <.t...........F% 0000:0650 96 8A 46 04 B4 06 3C 0E-74 11 B4 0B 3C 0C 74 05 ..F...<.t...<.t. 0000:0660 3A C4 75 2B 40 C6 46 25-06 75 24 BB AA 55 50 B4 :.u+@.F%.u$..UP. 0000:0670 41 CD 13 58 72 16 81 FB-55 AA 75 10 F6 C1 01 74 A..Xr...U.u....t 0000:0680 0B 8A E0 88 56 24 C7 06-A1 06 EB 1E 88 66 04 BF ....V$.......f.. 0000:0690 0A 00 B8 01 02 8B DC 33-C9 83 FF 05 7F 03 8B 4E .......3.......N 0000:06A0 25 03 4E 02 CD 13 72 29-BE 2D 07 81 3E FE 7D 55 %.N...r).-..>.}U 0000:06B0 AA 74 5A 83 EF 05 7F DA-85 F6 75 83 BE 1A 07 EB .tZ.......u..... 0000:06C0 8A 98 91 52 99 03 46 08-13 56 0A E8 12 00 5A EB ...R..F..V....Z. 0000:06D0 D5 4F 74 E4 33 C0 CD 13-EB B8 00 00 80 49 12 00 .Ot.3........I.. 0000:06E0 56 33 F6 56 56 52 50 06-53 51 BE 10 00 56 8B F4 V3.VVRP.SQ...V.. 0000:06F0 50 52 B8 00 42 8A 56 24-CD 13 5A 58 8D 64 10 72 PR..B.V$..ZX.d.r 0000:0700 0A 40 75 01 42 80 C7 02-E2 F7 F8 5E C3 EB 74 B7 .@u.B......^..t. 0000:0710 D6 C7 F8 B1 ED CE DE D0-A7 00 BC D3 D4 D8 B2 D9 ................ 0000:0720 D7 F7 CF B5 CD B3 CA B1-B3 F6 B4 ED 00 4D 69 73 . (i)0000:0730 73 69 6E 67 20 6F 70 65-72 61 74 69 6E 67 20 73 sing operating s 0000:0740 79 73 74 65 6D 00 00 00-00 00 00 00 00 00 00 00 ystem........... 0000:0750 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0000:0760 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0000:0770 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0000:0780 00 00 00 8B FC 1E 57 8B-F5 CB 00 00 00 00 00 00 ......W......... 0000:0790 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0000:07A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0000:07B0 00 00 00 00 00 00 00 00-86 D8 00 00 00 00 80 01 ................ 0000:07C0 01 00 06 3F 3F FD 3F 00-00 00 41 A0 0F 00 00 00 ...??.?...A..... 0000:07D0 01 FE 05 3F FF FE 80 A0-0F 00 C0 4F 2F 00 00 00 ...?.......O/... 0000:07E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0000:07F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA ..............U.;; 反汇编结果;; 0000:7C00~0000:7C1A:初始化各个段寄存器、堆栈指针,最后将主引导记录在内存中搬家,腾出其所占内; 存空间以供装入分区引导记录。
第一章TEC-2实验计算机系统原理§1.1 TEC-2机硬件系统的基本组成1.TEC-2机硬件的基本组成TEC-2机硬件的基本组成如图1.1.1所示,实物图见1.1.2所示。
图 1.1.1 TEC-2机硬件的基本组成图1.1.1中粗方框内部分,是TEC-2机的主体,被做在图1.1.2中两块垂直插接在一起的大印刷电路板上,它包括计算机主机的3个重要组成部件:运算器、控制器、主存储器。
此外,还配备了2个串行接口电路,可以接计算机终端、IBM/PC机或另一台TEC-2机等。
水平板上还设置了26个钮子开关,两个12位的微型开关,3个按键,16个发光二极管。
能支持高级(有终端或PC机)、初级(仅用开关、按键与指示灯完成实验)2个层次上的主机部分的实验。
图1.1.1中粗线框外的DMA接口、并行接口、实时钟设备是TEC-2机提供的3个任选件。
可以分别接软磁盘驱动器(要带接口驱动电路)、8位并行口打印机或其它8位入/出设备,并提供实时钟支持。
这为TEC-2机提供了强有力的入/出实验功能。
带虚线的4个框,表示的是计算机标准外设或PC机,需要时,可以将它们接入TEC-2机系统中,以进行相应的实验。
图1.1.1中最右上角的框,表示的是通过一个50芯的扁平电缆,将TEC-2机的信号引出到实验板上,可以在实验板上搭接各种逻辑电路,以方便地进行诸如实时钟、并行口、DMA 接口、主存扩展、中断等各种类型的实验。
12图 1.1.2 TEC-2机实物图2.TEC-2机的简化逻辑框图在详细讲解TEC-2机各部件的具体组成与运行原理之前,先看懂TEC-2机的简化逻辑框图是很重要的,这对理解TEC-2计算机的整机结构、各功能部件之间的连接关系很有益处。
TEC-2机的简化逻辑框图如图1.1.3所示。
TEC-2机主要由以下几部分组成:(1)TEC-2机的运算器部件,主要由4片AM2901芯片组成,还包括由一片Gal20v8组成的状态寄存器,以及其它一些辅助电路。
汇编语言及编程实例(电子教案)汇编语言程序设计2005第四章汇编语言程序设计回顾:8086的内部结构、寄存器功能和工作过程,指令格式、寻址方式和功能。
本讲重点:了解汇编的概念及其方法,掌握汇编程序的基本格式,常用运算符的使用方法,汇编的步骤。
4.1汇编语言的基本元素一、汇编语言的语句格式由汇编语言编写的源程序是由许多语句(也可称为汇编指令)组成的。
每个语句由1~4个部分组成,其格式是:[标号]指令助记符[操作数][;注解]其中用方括号括起来的部分,可以有也可以没有。
每部分之间用空格(至少一个)分开,一行最多可有132个字符。
1.标识符给指令或某一存储单元地址所起的名字。
可由下列字符组成:字母:A~z;数字:0~9;特殊字符:、·、@、一、$数字不能作标识符的第一个字符,而圆点仅能用作第一个字符。
标识符最长为31个字符。
当标识符后跟冒号时,表示是标号。
它代表该行指令的起始地址;当标识符后不带冒号时,表示变量;伪指令前的标识符不加冒号。
2.指令助记符表示不同操作的指令,可以是8086的指令助记符,也可以是伪指令。
3.操作数指令执行的对象。
依指令的要求,可能有一个、两个或者没有,例如:RET;无操作数COUNT:INCC某;一个操作数如果是伪指令,则可能有多个操作数,例如:COSTDB3,4,5,6,7;5个操作数MOVA某,[BP+4];第二个操作数为表达式4.注解该项可有可无,是为源程序所加的注解,用于提高程序的可读性。
二、汇编语言的运算符1.算术运算符、逻辑运算符和关系运算符-1-汇编语言程序设计2005算术运算符可以应用于数字操作数,结果也是数字。
而应用于存储器操作数时,只有+、-运算符有意义。
2.取值运算符SEG、OFFSET、TYPE、SIZE和LENGTH·SEG和OFFSET分别给出一个变量或标号的段地址和偏移量。
例如,定义:SLOTDW25则:MOVA某,SLOT;从SLOT地址中取一个字送入A某MOVA某,SEGSLOT;将SLOT所在段的段地址送入A某MOVA某,OFFSETSLOT;将SLOT所在段的段内偏移地址送A某·TYPE操作符返回一个表示存储器操作数类型的数值。
《微型计算机原理与接口技术》清华大学出版社冯博琴吴宁主编课后答案第1章基础知识1.1计算机中常用的计数制有哪些?解:二进制、八进制、十进制(BCD)、十六进制。
1.2什么是机器码?什么是真值?解:把符号数值化的数码称为机器数或机器码,原来的数值叫做机器数的真值。
1.3完成下列数制的转换。
微型计算机的基本工作原理汇编语言程序设计微型计算机接口技术建立微型计算机系统的整体概念,形成微机系统软硬件开发的初步能力。
解:(1)166,A6H(2)0.75(3)11111101.01B,FD.4H(4)5B.AH,(10010001.011000100101)BCD1.48位和16位二进制数的原码、补码和反码可表示的数的范围分别是多少?解:原码(-127~+127)、(-32767~+32767)补码(-128~+127)、(-32768~+32767)反码(-127~+127)、(-32767~+32767)1.5写出下列真值对应的原码和补码的形式。
(1)G=-1110011B(2)G=-71D(3)G=+1001001B解:(1)原码:11110011补码:10001101(2)原码:11000111补码:10111001(3)原码:01001001补码:010010011.6写出符号数10110101B的反码和补码。
解:11001010,110010111.7已知G和Y的真值,求[G+Y]的补码。
(1)G=-1110111BY=+1011010B (2)G=56DY=-21D解:(1)11100011(2)001000111.8已知G=-1101001B,Y=-1010110B,用补码求G-Y的值。
解:111011011.9请写出下列字符的ASCII码。
4A3-!解:34H,41H,33H,3DH,21H1.10若给字符4和9的ASCII码加奇校验,应是多少?解:34H,B9H1.11上题中若加偶校验,结果如何?解:B4H,39H1.12计算下列表达式。
VBA循环语句详解VBA(Visual Basic for Applications)是一种广泛应用于Microsoft Office套件中的编程语言,它允许用户以编程方式自动化和定制Office应用程序。
在VBA中,循环语句是实现重复执行某个代码块的关键工具。
本文将详细讨论VBA中的循环语句,并解释如何正确运用它们。
在VBA中,有四种常见的循环语句:For循环、Do While循环、Do Until循环和While循环。
这些循环语句在许多编程任务中都发挥着重要的作用,无论是处理大量数据、遍历集合还是执行特定的操作。
首先,让我们详细了解一下最常见的循环语句之一,For循环。
For循环用于执行固定次数的循环,并允许您在特定条件下对代码块进行控制。
For循环由三个部分组成:初始条件、测试条件和更新条件。
初始条件会在循环开始前执行一次,测试条件用于确定是否继续执行循环,更新条件用于在每次循环后更新计数器。
下面是一个简单的示例:```For i = 1 To 10'执行循环代码Next i```在这个示例中,循环从1开始,重复执行代码块,直到计数器i的值达到或超过10。
您也可以使用Step关键字来指定计数器的递增或递减值,例如:```For i = 1 To 10 Step 2'执行循环代码Next i```在这个示例中,计数器i的值会以2递增,即1、3、5、7、9。
下一个常用的循环语句是Do While循环。
Do While循环会重复执行代码块,直到测试条件不再满足为止。
测试条件是在每次循环之前进行检查的。
下面是一个简单的示例:```Do While condition'执行循环代码Loop```在这个示例中,只有当条件为真时,代码块才会执行。
如果在第一次迭代时条件不满足,代码块将不会执行。
与Do While循环相似的是Do Until循环,它会在测试条件为假之前重复执行代码块。
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”部分可以分别输入相应的变量定义和指令。
1.前言在论坛上看到很多朋友,不知道什么是ESP定律,ESP的适用范围是什么,ESP定律的原理是什么,如何使用ESP定律?看到了我在[url]/dispbbs.asp?boardID=5&ID=54&page=1[/url]调查结果发现,大家对ESP定律很感兴趣,当然因为实在是太好用了,现在我就来告诉大家什么是ESP定律,它的原理是什么!!2.准备知识在我们开始讨论ESP定律之前,我先给你讲解一下一些简单的汇编知识。
1.call这个命令是访问子程序的一个汇编基本指令。
也许你说,这个我早就知道了!别急请继续看完。
call真正的意义是什么呢?我们可以这样来理解:1.向堆栈中压入下一行程序的地址;2.JMP到call的子程序地址处。
例如:00401029 . E8 DA240A00 call 004A35080040102E . 5A pop edx在执行了00401029以后,程序会将0040102E压入堆栈,然后JMP到004A3508地址处!2.RET与call对应的就是RET了。
对于RET我们可以这样来理解:1.将当前的ESP 中指向的地址出栈;2.JMP到这个地址。
这个就完成了一次调用子程序的过程。
在这里关键的地方是:如果我们要返回父程序则当我们在堆栈中进行堆栈的操作的时候,一定要保证在RET这条指令之前,ESP指向的是我们压入栈中的地址。
这也就是著名的“堆栈平衡”原理!3.狭义ESP定律ESP定律的原理就是“堆栈平衡”原理。
让我们来到程序的入口处看看吧!1.这个是加了UPX壳的入口时各个寄存器的值!EAX 00000000ECX 0012FFB0EDX 7FFE0304EBX 7FFDF000ESP 0012FFC4EBP 0012FFF0ESI 77F51778 ntdll.77F51778EDI 77F517E6 ntdll.77F517E6EIP 0040EC90 note-upx.<ModuleEntryPoint>C 0 ES 0023 32bit 0(FFFFFFFF)P 1 CS 001B 32bit 0(FFFFFFFF)A 0 SS 0023 32bit 0(FFFFFFFF)Z 0 DS 0023 32bit 0(FFFFFFFF)S 1 FS 0038 32bit 7FFDE000(FFF)T 0 GS 0000 NULLD 0O 0 LastErr ERROR_MOD_NOT_FOUND (0000007E)2.这个是UPX壳JMP到OEP后的寄存器的值!EAX 00000000ECX 0012FFB0EDX 7FFE0304EBX 7FFDF000ESP 0012FFC4EBP 0012FFF0ESI 77F51778 ntdll.77F51778EDI 77F517E6 ntdll.77F517E6EIP 004010CC note-upx.004010CCC 0 ES 0023 32bit 0(FFFFFFFF)P 1 CS 001B 32bit 0(FFFFFFFF)A 0 SS 0023 32bit 0(FFFFFFFF)Z 1 DS 0023 32bit 0(FFFFFFFF)S 0 FS 0038 32bit 7FFDE000(FFF)T 0 GS 0000 NULLD 0O 0 LastErr ERROR_MOD_NOT_FOUND (0000007E) 呵呵~是不是除了EIP不同以外,其他都一模一样啊!为什么会这样呢?我们来看看UPX的壳的第一行:0040EC90 n> 60 pushad //****注意这里*****0040EC91 BE 15B04000 mov esi,note-upx.0040B015PUSHAD就是把所有寄存器压栈!我们在到壳的最后看看:0040EE0F 61 popad //****注意这里*****0040EE10 - E9 B722FFFF jmp note-upx.004010CC //JMP到OEPPOP就是将所有寄存器出栈!而当我们PUSHAD的时候,ESP将寄存器压入了0012FFC0--0012FFA4的堆栈中!如下:0012FFA4 77F517E6 返回到ntdll.77F517E6 来自ntdll.77F78C4E//EDI0012FFA8 77F51778 返回到ntdll.77F51778 来自ntdll.77F517B5 //ESI 0012FFAC 0012FFF0 //EBP0012FFB0 0012FFC4 //ESP0012FFB4 7FFDF000 //EBX0012FFB8 7FFE0304 //EDX 0012FFBC 0012FFB0 //ECX 0012FFC0 00000000 //EAX所以这个时候,在教程上面就告诉我们对ESP的0012FFA4下硬件访问断点。