09 2020 档案
摘要:一个进程中可以有多个线程,进程Id可作为线程表的外键。为了快速查询一个进程中的线程信息,可以在进程信息中加入线程表的地址。 线程环境块TEB:Thread Environment Block 线程信息块TIB:Thread Information Block TEB结构起始处保存了TIB,TIB的第
阅读全文
摘要:GetThreadContext和SetThreadContext可获取和设置线程上下文,调用前先SuspendThread,完毕后再ResumeThread。 CPU抛出的都是硬件异常,操作系统和软件抛出的异常称为软件异常。 异常过滤程序(exception filter)和异常处理程序(exce
阅读全文
摘要:Call @F ;本条指令后一个@@标号 @@: Pop ebx Sub ebx, offset @B ;本条指令前一个@@标号 Call @F 把Pop ebx一句的地址压栈,然后jmp到Pop ebx一句的地址执行,执行完毕后ebx等于Pop ebx一句所在地址,即运行时的地址。 Sub ebx
阅读全文
摘要:中断的机制: 在地址0处有中断向量表,表中有多个项,每一项4字节,是中断程序的入口地址(seg:offset)。 Nop指令和xchg ax,ax的机器码一样 封锁前缀指令lock,可放在任何指令前面,效果是封锁总线,使别的控制器无法控制总线,指令执行完后解除封锁,常用于多线程同步,例如InterL
阅读全文
摘要:D:\masm32\include\windows.inc文件中有大部分类型的定义 User32.inc文件中没有CreateWindow,但是有CreateWindowEx 汇编指令Enter相当于push ebp, mov ebp, esp 汇编指令Leave相当于mov esp, ebp, p
阅读全文
摘要:32位处理器环境的段寄存器:内存描述符表的段选择子 简单的代码: .386 ;使用的指令集 .model flat, stdcall ;内存模型和默认的函数调用约定,后续proc和proto如果没写约定,就用此处默认的 option casemap:none ;大小写敏感 MessageBox eq
阅读全文
摘要:联合编译: 1. 新建文件mylib.inc, 结构体定义,函数声明等都放在此头文件中,函数声明中加far,例如: BubbleSort proto far C wCount:word, pAryNumber:word 为防止重复包含,可设置头文件保护: ifndef MYLILB_INC MYLI
阅读全文
摘要:子程序设计时 Push bp Mov bp, sp Sub sp, 2 再push其他需要保存的寄存器,这样可以不受保存要寄存器个数的影响,用bp+4定位到第一个参数,且释放局部变量空间时使用mov sp, bp即可。 宏调用中的参数如果有小于<符号,需要转义,写为!< 代码定式: if(){ ..
阅读全文
摘要:一. 转移指令:可以修改IP,或同时修改CS和IP的指令,分为 1. 段内转移:只修改IP,jmp的目标代表相对于当前IP的偏移,而不是地址。如 jmp offset8 ;机器码EB XX jmp offset16 ;机器码E9 XXXX jmp ax jmp word ptr[XXXX] 段内转移
阅读全文
摘要:通常流水线的操作如下: 根据CS:IP取指令 译码 取源操作数(有些指令没有) 执行指令功能 写入结果(有些指令没有) 存储器寻址方式: 直接寻址 :mov ax,[1234] 2. 寄存器间接寻址:mov ax,[bx] 8086 支持的间接寻址寄存器是bx,bp,si,di 3. 寄存器相对寻址
阅读全文
摘要:1. 移位指令,移出的位保存在CF里 SHL reg/mem, 1/CL ;逻辑左移,右侧补0,移出的位保存在CF里。 SHR reg/mem, 1/CL ;逻辑右移,左侧补0,移出的位保存在CF里。 SAL reg/mem, 1/CL ;算数左移,等同于逻辑左移,机器码也相同 SAR reg/me
阅读全文
摘要:1. 乘法指令 1.1 无符号乘法MUL MUL r8/m8 ;AX<--AL * r8/m8 MUL r16/m16 ;DX.AX<--AX * r16/m16 MUL r32/m32 ;EDX.EAX<--EAX * r32/m32 1.2 有符号乘法IMUL IMUL r8/m8 ;AX<--
阅读全文
摘要:通用数据传送指令 MOV reg/mem, imm Mov reg/mem/seg, reg Mov reg/seg, mem Mov reg/mem, seg Mov word ptr[bx], 1234 ;传立即数时要说明word或byte Mov [si], al ;al已经隐含说明数据长度
阅读全文
摘要:缩写: 寄存器 reg/R8/R16/R32 内存单元 mem/m8/m16/m32 立即数 imm/imm8/imm16/imm32 累加器 (ax系列) al, ax, eax, rax 源src 目标dest 通常流水线的操作如下: 根据CS:IP取指令 译码 取源操作数(有些指令没有) 执行
阅读全文
摘要:8个通用寄存器 16 bit accumulate ax ah al R0 count cx ch cl R1 data dx dh dl R2 base bx bh bl R3 stack sp R4 stack base bp R5 source si R6 destination di R7
阅读全文
摘要:涉及硬件传输数据的,往往包含以下内容: 1.数据传输引脚(数据放哪里) 2.控制引脚(怎么控制) 3.状态引脚(结果如何) 寄存器相当于CPU内部的存储单元,可能是连续排列,相当于C语言中的数组。 一.8个通用寄存器 16 bit accumulate ax ah al R0 count cx ch
阅读全文
摘要:DOS汇编中字符串结束标志是美元符号$ DOS操作系统会把com文件装载到0x100的位置并执行代码 debug命令: assemble A [address] compare C range address dump D [range] enter E address [list] fill F
阅读全文

浙公网安备 33010602011771号