汇编
文章平均质量分 88
luckyone906
这个作者很懒,什么都没留下…
展开
-
汇编基础知识-寄存器
IP是专用寄存器,具有自动增量的能力,处理完一条指令,IP的值就加上该指令的字节数,从而指向下一条指令,实现程序的顺序执行。CF(进位标志)、PF(奇偶标志)、AF(调整标志)、ZF(零标志)、SF(符号标志)、OF(溢出标志)(4)没有合适的高级语言或只能采用汇编语言时,如开发最新的处理器程序、暂时没有支持新指令的编译程序。(2)执行:将指令代码翻译成它代表的功能(译码),并发出有关控制信号实现这个功能。(1)原码——最高有效位表示符号(正0负1),其它位直接表示数值大小。bp寄存器默认是SS。原创 2024-06-01 22:26:59 · 1434 阅读 · 0 评论 -
汇编-函数调用的理解
1. 从代码的顺序执行说起每一个程序员脑子里应该都有这么一种印象:“程序是顺序执行的”。这个观点其实和我们开篇所讲的cpu的流水线执行过程直接相关。让我们再回忆一下脑海中关于函数调用的概念,也许会是这个样子:这里的“控制流转移”又是如何发生的呢?在解释这个之前,也许我们需要科普一点有关于汇编的知识。2. 函数调用中的一些细节说明2.1 函数调用中的关键寄存器2.1.1 程序计数器PC程序计数器是一个计算机组成原理中讲过的概念,下面给出一个百度百科中的简单解释程序计数器是用于存转载 2022-01-03 21:41:30 · 1940 阅读 · 0 评论 -
8086汇编与c++编译器就内存方面的感想
8086汇编中可以手动分配栈内存,没有堆内存的概念,而c++编译器中栈是系统分配的,堆是手动分配的。原创 2020-02-22 14:44:38 · 199 阅读 · 0 评论 -
汇编中的标号概念
地址标号和数据标号地址标号 1 assume cs:code 2 code segment 3 a: db 1, 2, 3, 4, 5, 6, 7, 8 4 b: dw 0 5 start: mov si, offset a 6 mov bx, offset b 7 mov cx, 8 8 s转载 2018-04-27 22:50:17 · 12326 阅读 · 0 评论 -
汇编语言不带冒号标号的用法
汇编语言中,有一种编程方法:直接定址表这种方法和高级语言,C语言中的数组有类似的思想,就是将参数编排在一起,然后通过数组名的调用,得到需要的数值汇编语言中,带冒号的标号在程序中可以知道代码的位置,而不带冒号的标号可以在程序中找到代码位置的同时知道所表示的参数的大小比如说:table db 0,这里的table就是一个不带冒号的标号,如果定位到这个标号,那么就知道这个标号后面转载 2018-04-27 22:52:31 · 1436 阅读 · 1 评论 -
汇编中的标号
当程序中要跳转到另一位置时,需要有一个标识来指示新的位置,这就是标号,通过在目标地址的前面放上一个标号,可以在指令中使用标号来代替直接使用地址。使用变量是任何编程语言都要遇到的工作。变量是计算机内存中已命名的存储位置,在大部分的语言中都有很多种类的变量,如整数型、浮点型和字符串等,不同的变量有不同的用途和尺寸,比如说虽然长整数和单精度浮点数都是32位长,但它们的用途不同。顾名思义,转载 2018-04-27 23:11:16 · 13151 阅读 · 0 评论 -
closehandle()函数
引用自《百度百科》,用于解决今天遇到的close handle 后什么时候释放资源问题: 方法名称:CloseHandle位置:Kernel32.dllBOOL CloseHandle(HANDLE hObject);参数hObject :代表一个已打开对象handle。返回值TRUE:执行成功;FALSE:执行失败,可以调用GetLastErro...转载 2019-01-18 18:59:01 · 2286 阅读 · 0 评论 -
C++new和delete实现原理(汇编解释)
new和delete最终调用malloc和free,关于malloc和free实现原理参见这篇文章:http://blog.csdn.net/passion_wu128/article/details/38964045newnew操作针对数据类型的处理,分为两种情况:1,简单数据类型(包括基本数据类型和不需要构造函数的类型)代码实例:int* p = new int;汇编码如下:...转载 2019-04-05 14:51:05 · 1522 阅读 · 0 评论 -
c++中创建类型测试
// OpenVCTest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"class A{public: int a=10;};class B{public: B(int a) { b = a; } B() { } int b = 20;...原创 2019-04-05 15:50:22 · 314 阅读 · 0 评论 -
汇编语言中MOV和OFFSET指令的两个问题?
(1)往段寄存器送段地址时要写成 MOV AX,DATA MOV DS,AX 不能写成 MOV DS,DATA 这是为什么?有人说由于段寄存只能进行16位的读写,因此需要用ax来倒一下,还有人说是因为段寄存器不能用于立即数寻址,究竟哪个对呢?如果第二个对,那么段名DATA是立即数吗?还是因为别的原因? (2)书上有道例题...原创 2018-05-10 18:21:00 · 22449 阅读 · 0 评论 -
汇编语言,数据段中,标号前面加不加offset有什么区别?
data segmentstring db 40h dup(0)string_1 db 'Input characters:',0dh,'$'data ends那么,mov bx,string和mov bx offset string有什么区别呢?加了offset附给bx的是string的地址,不加是附的string的原创 2018-05-10 16:43:17 · 5984 阅读 · 0 评论 -
win32汇编寄存器汇总
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)1、数据寄存器数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的转载 2018-04-30 22:04:09 · 598 阅读 · 0 评论 -
win32汇编基础概念
一、关于寄存器寄存器有EAX,EBX,ECX,EDX,EDI,ESI,ESP,EBP等,似乎IP也是寄存器,但只有在CALL/RET在中会默认使用它,其它情况很少使用到,暂时可以不用理会。EAX是WIN32 API 默认的返回值存放处。ECX是LOOP指令自动减一的寄存器。ESP是堆栈指针。EBP经常用来在堆栈中寻址。ESI好像常常用在指针寻址中,EDI不大清楚。转载 2018-04-30 22:07:20 · 736 阅读 · 0 评论 -
8086汇编寄存器及指令汇总
1 寄存器的分类通用寄存器:ax,bx,cx,dx,(ah,al,bh,bl,ch,cl,dh,dl);sp,bp,si,di指令寄存器:ip标志寄存器:FR段寄存器:cs,ds,ss,es2 ax,bx,cx,dx这四个寄存器存放一般数据,你可以在里面存放任何数据,但是其用途会有不同。AX (转载 2018-04-30 23:28:34 · 22552 阅读 · 6 评论 -
win32 汇编基础概念整理
一、关于寄存器寄存器有EAX,EBX,ECX,EDX,EDI,ESI,ESP,EBP等,似乎IP也是寄存器,但只有在CALL/RET在中会默认使用它,其它情况很少使用到,暂时可以不用理会。EAX是WIN32 API 默认的返回值存放处。ECX是LOOP指令自动减一的寄存器。ESP是堆栈指针。EBP经常用来在堆栈中寻址。ESI好像常常用在指针寻址中,EDI不大清楚。转载 2018-05-03 16:04:23 · 1466 阅读 · 0 评论 -
汇编指令ebp与esp的关系与作用
可以看到,初始情况下,ebp此时值为0012FEDC,也就是栈帧的地址,而栈顶地址esp值为0012FDFC。可以看到两个值有一定的关系。而帧指针的地址较高。 然后我们让它执行前两句,push ebp,mov ebp,esp可以看到前两句已经执行了,那么ebp跟esp的值也发生了变化。esp=0012FDF8,ebp=0012FDF8。为神马?一句句解读,push转载 2018-05-03 11:47:34 · 1919 阅读 · 0 评论 -
汇编中的寻址方式
存储器 存储器(Memory)是现代信息技术中用于保存信息的记忆设备。其概念很广,有很多层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。 计算机中全部信息,包括输入的原始数据、计算机程序、中间运行结果和最终运行结果都保存在原创 2018-05-10 11:27:22 · 13886 阅读 · 0 评论 -
x86的32位汇编快速入门
本文描述基本的32位X86汇编语言的一个子集,其中涉及汇编语言的最核心部分,包括寄存器结构,数据表示,基本的操作指令(包括数据传送指令、逻辑计算指令、算数运算指令),以及函数的调用规则。个人认为:在理解了本文后,基本可以无障碍地阅读绝大部分标准X86汇编程序。当然,更复杂的指令请参阅Intel相关文档。1 寄存器.主要寄存器如下图所示:X86处理器中有8个32位的通转载 2018-05-10 11:53:06 · 9294 阅读 · 1 评论 -
80x86汇编指令详解
80x86指令系统,指令按功能可分为以下七个部分。 (1) 数据传送指令。 (2) 算术运算指令。 (3) 逻辑运算指令。 (4) 串操作指令。 (5) 控制转移指令。 (6) 处理器控制指令。 (7) 保护方式指令。 3.3.1数据传送指令 数据传送指令包括:通用数据传送指令、地址传送指令、标志寄存器传送指令、符号扩展指令、扩展传送指令等。转载 2018-05-10 12:02:27 · 5337 阅读 · 1 评论 -
汇编中addr和offset
汇编中addr和offset的异同点!!!一、相同点1、addr 和 offset 操作符都是获得操作数的偏移地址;2、addr 和 offset 的处理都是先检查处理的是全局还是局部变量,若是全局变量则把其地址放到目标文件中。二、不同点1、addr 伪操作符,只能用在 invoke 伪指令语句中;2、offset 伪操作符可以用在任何可能涉及偏移地址转载 2018-05-10 16:37:17 · 9438 阅读 · 0 评论 -
win32常用的汇编指令和寄存器
通用寄存器EAX累加(Accumulator)寄存器AX(AH、AL)常用于乘、除法和函数返回值EBX基址(Base)寄存器BX(BH、BL)常做内存数据的指针, 或者说常以它为基址来访问内存.ECX计数器(Counter)寄存器CX(CH、CL)常做字符串和循环操作中的计数器转载 2018-04-30 21:59:56 · 2859 阅读 · 0 评论