![](https://img-blog.csdnimg.cn/20190902113010689.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
汇编
文章平均质量分 91
小哈龙
一颗勇往直前的心
展开
-
探秘INT3指令
简介本文转载自:探秘INT3指令 | 码农家园INT3指令是专门用来支持调试的一条指令,它对应的机器码是0xCC。当cpu执行到这条指令是会产生异常并调用相应的异常处理程序(3号中断)进行进一步的处理。详细分析int3指令原理cpu在指令完int3指令后会引发异常,此异常会使操作系统从中断向量表中调用3号中断处理程序,此中断处理程序即函数nt!KiTrap03( ),此函数进行一些处理后又会继续调用nt!KiDisPatchException( )函数来进行异常的分发。而此函数会先.转载 2021-11-15 15:02:57 · 7976 阅读 · 0 评论 -
汇编指令和机器码的对应表
一、状态寄存器PSW(Program Flag)程序状态字寄存器,是一个16位寄存器,由条件码标志(flag)和控制标志构成,如下所示:15 14 13 12 11 10 98 7 6 5 4 3 2 1 0 OF DFIF TF SF ZF AF PF CF条件码:①OF(Overflow Flag)溢出标志。溢出时为1,否则置0。②SF(Sign Flag)符号标志。结果为负时置1,否则置0.③ZF(Zero Flag)零标志,运算结果为0时ZF位置1,否则...转载 2021-04-15 19:20:49 · 7743 阅读 · 0 评论 -
寄存器
1.寄存器概述:首先介绍一下寄存器:寄存器是中央处理器(cpu)内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,存器有累加器(ACC)。2. 8086寄存器:8086 有14个16位寄存器,这14个寄存器按其用途可分为原创 2015-12-25 20:30:38 · 1008 阅读 · 0 评论 -
注册表从入门到精通
注册表对有的人还是比较陌生的,因为现在第三方软件太多了,如优化大师、魔法兔子等等,但个人觉得改善系统的第三方软件还不够完善,如果初级用户使用不当,会出现严重的后果,所以提供这篇文章,希望大家多多学习,本人能力有限,还希望大家多提宝贵意见: 一、注册表的由来PC机及其操作系统的一个特点就是允许用户按照自己的要求对计算机系统的硬件和软件进行各种各样的配置。早期的图形操作系统,如Win3.x转载 2016-07-28 13:52:22 · 2610 阅读 · 1 评论 -
ReleaseDC和DeleteDC的区别
簡單的說,GetDC和ReleaseDC的調用配對,CreateDC和DeleteDC的調用配對。GetDC是從窗口獲取現有的DC,而CreateDC是創建DC,所以ReleaseDC和DeleteDC的作用一個是釋放,一個是銷毀。ReleaseDC和DeleteDC的区别 (转) 在编SDK小游戏时发现的图片在背景上移动时,可能出现闪烁,这时双缓冲就是基本方法之一。转载 2016-04-15 19:24:38 · 1296 阅读 · 0 评论 -
rep 汇编指令
REP/REPE/REPZ/REPNE/REPNZ - 重复字符串操作前缀操作码指令说明F3 6CREP INS r/m8, DX将 (E)CX 个字节从端口 DX 输入到 ES:[(E)DI]F3 6DREP INS r/m16,DX将 (E)CX 个字从端口 DX转载 2016-08-09 11:12:41 · 10949 阅读 · 1 评论 -
win32汇编 钩子的编写与使用
说到钩子也许我们都很陌生(我以前从来没有接触过这个东西)原创 2016-06-02 17:36:21 · 3502 阅读 · 0 评论 -
窗口 子控件的使用
在对话框中使用控件(control),首先应该熟悉控件的两种定义方式,虽然有时候用不到自己去编写资源脚本,但是控件在定义的时候有许多参数需要根据实际情况附加,我在编写资源脚本的时候,用ResEdit软件编写的时候,当我定义好一些类型属性,去预览代码的时候,好多属性参数和用其他工具编写的属性参数有的是不一样的,当你把在ResEdit上编写的资源脚本代码粘贴到RadASM里面的工程中的资源文件里的时候原创 2016-04-01 12:35:41 · 2179 阅读 · 0 评论 -
键盘的扫描码虚拟码概念 常见Windows键盘按键虚拟码
'当用户按下某个键时,' 1.键盘会检测到这个动作,并通过键盘控制器把扫描码(scan code)传送到计算机;' 键盘扫描码跟具体的硬件有关的,不同厂商对同一个键的扫描码有可能不同。' 2.计算机接收到扫描码后,将其交给键盘驱动程序;' 3.键盘驱动程序把这个扫描码转换为键盘虚拟码;' 虚拟码与具体硬件无关,不同厂商的键盘,同一个键的虚拟码总是相同的。转载 2016-08-16 15:15:04 · 5004 阅读 · 0 评论 -
link.exe 的参数
link.exede 参数说明 如下link [objs],[exefile],[mapfile],[libs],[deffile] /A:size 排列区段位址,不可用于DOS程式 排列区段位址,不可用于DOS程式 /B 抑制.lib或.obj路径错误提示 抑制.lib或.obj路径错误提示 /CO 加入CodeView的符号及列号 加入CodeView的符号及列原创 2016-08-16 14:20:36 · 1148 阅读 · 0 评论 -
资源编译器 rc .exe 的参数
Windows应用程序中,图标、菜单、畏途、图标、工具条、对话框等是以资源的形式存在的。开发人员也可以自定义资源类型。如果一个程序使用了资源,那么它在构建时需要对资源进行编译。程序所使用的资源会在资源脚本文件(*.rc)中进行描述编写,编译时,资源编译器会将*.rc文件编译为可链接的.res文件。(资源中可以包括字符串)1、命令行参数使用如下方式在命令行中运行rc.exeR转载 2016-06-21 10:42:30 · 3211 阅读 · 0 评论 -
win32汇编动态链接库的编写及使用
以前安装程序的时候,在安装目录下总会发现 好多的以.DLL结尾的文件,这些是什么玩意儿?有什么用?而且有时候运行程序的时候还会出现“无法定位程序输入点...与动态链接库....上”这种错误,现在想起来真是可笑。下面就来介绍一下动态链接库以及怎么使用动态链接库(以下简称DLL)。当你编写一个程序的时候,为了使用以前写好的库中的函数,很方便的一个解决方法就是使用动态链接库(DLL),下面我们先来编原创 2016-05-30 21:53:32 · 7637 阅读 · 1 评论 -
堆栈平衡
原发者iso9001 http://www.ghoffice.com/bbs/read.php?tid-35165.html他提供的地址(当他是个指针好了:P)http://ajiannet.cnblogs.com/下边是我看到的一个很经典对于汇编 。堆栈的说明。通俗易懂。[汇编学习]献给汇编初学者-函数调用堆栈变化分析(转自黑客风云) 跟一个朋友谈堆栈的时候 就写转载 2015-12-18 18:46:56 · 827 阅读 · 0 评论 -
win32汇编 实现UNIX文件格式转换WINDOWS文件格式 的功能
我们应该都知道UNIX环境下的文本文档中的回车加换行是直接由 "0ah" 实现的,而windows环境下的回车换行需要"0dh,0ah" 实现,所以如果把UNIX环境下的文本文档拿过来在WINDOWS环境下查看,那么文本的显示格式就乱了,结果是windows读不懂UNIX环境下的换行符,他以为是一行,事实也就是文本显示的就是一行,只能靠水平滚动条来回拖动查看,的确看着不爽,这次利用WIN32汇原创 2016-05-20 18:44:53 · 990 阅读 · 0 评论 -
汇编指令总结
学习汇编语言有一段时间了,但在后来运用到具体细节的时候,却发现自己对这个指令的好多细节东西都不知道,瞬间感觉自己的学习心态应该改善,由此决定在这里把常用的一些指令以及指令的一些规则和一些我自己感觉是细节的东西总结一下,在这方面我发现了前辈们的好多无私奉献,我也毫不犹豫的摘取了他们的贡献果实,加上自己的的完善,以便以后方便查阅和完善:一、通用数据传送指令首先先定义一下:define DST转载 2015-12-25 19:44:32 · 2243 阅读 · 0 评论 -
win32汇编 多线程编程与事件
时间片的概念大家应该都了解过,windows为每个进程分配时间片,当一个程序的时间片结束时,就会轮到下一个程序执行,当轮流速度比较快的时候,就好像多个进程同时执行一样,这就是windows多任务的方式,本次介绍的多线程其实跟这个很像,只不过线程是在进程内又划分的更小的可执行单位,windows为每个线程分配时间片,当轮到某个进程的某个线程执行的时候,该线程才开始执行,就好像是进程间的多任务一样,线原创 2016-06-07 17:09:36 · 3022 阅读 · 0 评论 -
64位和32位的寄存器和汇编的比较
64位寄存器分配的不同区别有:64位有16个寄存器,32位只有8个。但是32位前8个都有不同的命名,分别是e _ ,而64位前8个使用了r代替e,也就是r _。e开头的寄存器命名依然可以直接运用于相应寄存器的低32位。而剩下的寄存器名则是从r8 - r15,其低位分别用d,w,b指定长度。 32位使用栈帧来作为传递的参数的保存位置,而64位使用寄存器,分别用rdi,rsi,rdx,rcx...转载 2019-04-25 09:40:29 · 6693 阅读 · 0 评论 -
80X86寄存器详解
引子打算写几篇稍近底层或者说是基础的博文,浅要介绍或者说是回顾一些基础知识,自然,还是得从最基础的开始,那就从汇编语言开刀吧,从汇编语言开刀的话,我们必须还先要了解一些其他东西,像 CPU ,内存这些知识点还是理解深刻一点的比较好,所以这一篇博文就绕着 80x86 CPU 中寄存器的基础部分下手,至于其他的一些将会在后续的博文中介绍。同时在这里说明一下,本篇博文介绍的算...转载 2018-07-19 09:44:18 · 1602 阅读 · 0 评论 -
INT 21H 指令说明及使用方法
很多初学汇编语言的同学可能会对INT 21H这条指令感到困惑,不知道是什么意思,下面就以一段简单的程序为大家讲解:例如:需要键盘输入,并且回显。AH的值需要查表取得,表在下面指令:MOV AH,01INT 21H通过这样两条指令,输入的字符就会被存储在AL中。表:DOS系统功能调INT 21HAH功能调用参数返回参数00程序终止(同INT 20H)CS=程序段前缀 01键盘输入并回显 ...原创 2018-04-13 11:35:56 · 54538 阅读 · 7 评论 -
Debug命令详解
Debug在学习汇编的过程中,担任着一个非常重要的角色,是一个极其重要的调试工具,所以学会它是必须的。命令格式功能说明A[地址]输入汇编指令C[范围] 起始地址对由“范围”指定的区域与“起始地址”指定的同大小区域进行比较,显示不相同的单元D[范围]显示指定范围内的内存单元内容E地址 字节值表用值表中的值替换从“地址”开始的内存单元内容F范围 字节值表用指定的字节值表来填充内存区域G[=起始地址...转载 2018-04-13 11:04:41 · 626 阅读 · 0 评论 -
关于RadASM使用编译资源脚本功能无法找到指定头文件的解决方案
由于自身经验不足,学识短浅,前几天在使用集成汇编工具RadASM编写WIN32程序时,在使用ResEdit资源编辑工具编写好资源文件后,将资源脚本复制到WIN32工程中的rsrc.rc文件时,再使用构建菜单下的编辑资源脚本 编译的时候出现不能找到所需头文件的错误:当时遇见这样的错误第一想到的是去RadASM的安装目录下找到头文件window.h,最后发现它在Include文件夹下,当时我就做死原创 2016-03-23 16:42:02 · 1733 阅读 · 3 评论 -
如何配置RadASM
转载地址:http://bbs.pediy.com/archive/index.php?t-18280.html如何配置RadASM来支持你的编译器cao_cong 这两天打算配置一下RadASM来支持一下 LCC-Win32 和 Turbo C++ 3.0,虽然以前给 RadASM 配置过支持VC6的Cpp文件,但当时做完就没管了,我这人又比较懒,不愿写东西,导致现在再转载 2016-03-22 21:24:37 · 3152 阅读 · 0 评论 -
WIN32汇编语言在窗口添加按钮,点击按钮实现跳转到一个程序或者一个URL。。。
你是否遇见过点开一个窗口,窗口上遇见一个漂亮妹子或者帅哥或者也许是一个非常吸引你的东西,(“点我,脱衣服”你遇见过吧。。。我遇见过)当时感觉这种方式确实很有创意,也没有继续研究,这次我就用WIN32汇编语言简单的实现此功能,其实这也是一个小插曲,我在学习WIN32汇编的窗口程序的时候无意间发现了这么有趣的东西(不多说上图)如上图所示那个'小哈龙'按钮虽然长得有点丑,但是功能已经出来了,点击原创 2016-03-09 21:43:24 · 2796 阅读 · 0 评论 -
通过一段汇编,加深对寄存器ESP和EBP的理解
一直对寄存器ESP和EBP的概念总是有些混淆,查看定义ESP是栈顶指针,EBP是存取堆栈指针。还是不能很透彻理解。之后借于一段汇编代码,总算是对两者有个比较清晰的理解。下面是按调用约定__stdcall 调用函数test(int p1,int p2)的汇编代码;假设执行函数前堆栈指针ESP为NNpush p2 ;参数2入栈, ESP -= 4h , ESP = NN - 4h转载 2017-07-12 11:58:43 · 970 阅读 · 0 评论 -
系统引导过程
系统引导过程主要由以下几个步骤组成(以硬盘启动为例)1、 开机;2、 BIOS加电自检(POST---Power On Self Test),内存地址为0fff:0000;3、 将硬盘第一个扇区(0头0道1扇区,也就是Boot Sector)读入内存地址0000:7c00处;4、 检查(WORD)0000:7dfe是否等于0xaa55.若不等于则转去尝试其他介质;如果没有其他启动介转载 2017-04-21 16:31:21 · 1102 阅读 · 0 评论 -
BIOS加电自检
网上有很多自检的资料,可是都不够全面,稍作整理如下:6210 9845 4000 5103 480一、首先了解几个概念1.BIOS寻址概念:以前寄存器是16位,寻址通过cs:ip方式,Bios地址为段地址左移4位 + 偏移地址。例如CS=F000H,IP=FFF0H,地址为F0000H + FFF0H = FFFF0H。那么,在386以前系统可寻址范围为1M转载 2017-04-21 16:28:16 · 2105 阅读 · 0 评论 -
汇编语言通过WMI获取BIOS、主板、硬盘、CPU、网卡的信息
前几天在网上看见某大牛使用汇编语言写的通过WMI获取BIOS,主板,硬盘,CPU,网卡的信息的一篇文章,发现真是写的太棒了,最近正好想要用汇编写点东西,就拿着作者的源码修改了点东西,来实现自己的需求,我是在RadASM下编译使用的,大牛的解决方法正好给我提供了许多思路,也让我学到了很多,下面就是我修改后的源代码:.586.MODEL FLAT,STDCALLOPTION CASEMAP:N原创 2017-04-13 15:55:39 · 3974 阅读 · 3 评论 -
汇编语言中OUT和IN的用法
汇编语言中,CPU对外设的操作通过专门的端口读写指令来完成; 读端口用IN指令,写端口用OUT指令。 例子如下: IN AL,21H;表示从21H端口读取一字节数据到AL IN AX,21H;表示从端口地址21H读取1字节数据到AL,从端口地址22H读取1字节到AH MOV DX,379H IN AL,DX ;从端口379H读取1字节到AL OUT 21H原创 2017-04-12 11:15:27 · 83614 阅读 · 7 评论 -
WIN32汇编 Richedit控件的使用
下面介绍一下一些陌生的结构和API函数:结构:EDITSTREAM STRUCT dwCookie DWORD ? ;用户自定义值 dwError DWORD ? ;用来返回流操作过原创 2016-05-13 20:29:18 · 6920 阅读 · 0 评论 -
WIN32 汇编 工具栏的使用
说起工具栏我们都不会陌生为了方便起见,首先看一下图:标示的地方就是工具栏,好像是一个一个的位图文件组成的一样,其实那就是位图组成的,只不过是一组连续在一起的位图(而且是windows自己定义好的,我们只管拿来使用就行了)。对于工具栏的实现我大概分为如下几步:资源文件菜单IDR_MENU1图标IDI_ICON1字符串表STRIN原创 2016-05-09 17:17:48 · 1529 阅读 · 0 评论 -
WIN32汇编 状态栏的使用
说起状态栏其实都见过,但是具体不知道是哪个位置(我以前就不知道。。),先来看下图如上图所示就是状态栏的位置,对于实现状态栏我大致分为如下过程:资源文件对话框IDD_DIALOG1字符串表STRINGTABLE菜单IDR_MENU1图标IDI_ICON1实现过程原创 2016-04-26 18:43:20 · 5782 阅读 · 0 评论 -
浮点运算
以前就听说过浮点运算,但是只是听说过名称而已,很少运用,今天因为写程序需要用到浮点运算的运算命令,瞬间头晕了,这是什么玩意儿,说好的实数运算怎么在计算机上变成这么复杂的东西,今天就总结一下平时需要用到的浮点运算指令:首先需要认清一点浮点运算就是数学里的实数运算,只不过是要在计算机中运算存储罢了,因为计算机只能存储整数,因此要想在计算机上进行浮点运算的确有点麻烦。浮点运算使用三种不同原创 2016-04-08 16:25:03 · 2656 阅读 · 0 评论 -
stosb, stosw, stosd 汇编指令
stosb, stosw, stosd 汇编基础我们来学习下另一组与字符串处理的指令。这组指令需要以指定的字符填充整个字符串或数组时比较有用。那么我们今天学习的这组指令就是stosb, stosw, stosd。这三个指令把al/ ax/ eax的内容存储到edi指向的内存单元中,同时edi的值根据方向标志的值增加或者减少。 同REP前缀联合使用的时候,这组指令需要填充整个字符串或数组转载 2016-05-19 10:01:17 · 12938 阅读 · 0 评论 -
win32汇编 invoke 和 call区别
INVOKE 的语法如下: INVOKE expression [,arguments] expression 既可以是一个函数名也可以是一个函数指针。参数由逗号隔开。INVOKE是编译器支持的伪指令,会检查参数. CALL会直接去栈里取参. INVOKE最后也会变成 PUSH PUSH ... CALL 的形式转载 2016-05-08 09:56:29 · 2401 阅读 · 0 评论 -
windows的消息机制
1. 引言Windows 在操作系统平台占有绝对统治地位,基于Windows 的编程和开发越来越广泛。Dos 是过程驱动的,而Windows 是事件驱动的[6],这种差别的存在使得很多Dos 程序员不能习惯Windows 的程序开发。而很多Windows 程序开发人员也只是对消息运行机制一知半解,想要掌握Windows 编程的核心,必须深刻理解消息机制。事件驱动围绕着消息的产生与处转载 2016-04-22 17:07:39 · 469 阅读 · 0 评论 -
影响标志位的汇编指令
Author JRH 2011-7-11加法指令ADD (addition)指令对标志位的影响:CF=1最高有效位向高位有进位CF=0最高有效位向高位无进位OF=1两个同符号数相加(正数+正数或负数+负数),结果符号与其相反。...转载 2016-05-18 11:41:03 · 11429 阅读 · 0 评论 -
HINSTANCE HANDLE HWND 的区别及一般方法
HINSTANCE是应用程序实例句柄,HWND是窗口对象句柄,HANDLE是任意对象的句柄,CWnd是MFC中的窗口类。MSDN里面对于HINSTANCE的解释是"handle to an instance" 就是说是一个instance的句柄。而对instance的解释是"An object for which memo转载 2016-04-05 16:53:25 · 1332 阅读 · 0 评论 -
WM_NOTIFY的使用
切记:此消息只发给它的父窗口,再要发给父窗口的父窗口或主框架窗口等上级窗口,必须在DefWindowProc中用如下语句进行转发 switch(message) { case WM_NOTIFY: theApp.GetMainFrame()->SendNotifyMessage(message, wParam, lParam);转载 2016-05-06 10:02:44 · 1212 阅读 · 0 评论 -
windows消息大全
1 Windows消息大全 2 3 ////////////////////////////////////////////////////////////////////////// 4 #include "AFXPRIV.H"//消息值的定义来源 5 #include "Dde.h"//DDE消息值的定义来源 6 #includ转载 2016-05-06 09:45:02 · 2775 阅读 · 0 评论 -
内存映射文件原理探索
转载自:http://blog.csdn.net/mg0832058/article/details/5890688#t3一直都对内存映射文件这个概念很模糊,不知道它和虚拟内存有什么区别,而且映射这个词也很让人迷茫,今天终于搞清楚了。。。下面,我先解释一下我对映射这个词的理解,再区分一下几个容易混淆的概念,之后,什么是内存映射就很明朗了。内存映射原理首先,“映射”这个词,就和数学课上说...转载 2016-05-25 11:21:46 · 466 阅读 · 0 评论