汇编排序& 查找实例

实训内容、及操作要领 排序: datasegment memdb10,9,8,7,6,5,4,3,2,1 lendw$-mem dataends codesegment procfar assumecs:code,ds:data start:pushds subax,ax pushax movax,data movds,ax movdl,1 redo:movbx... [阅读全文]

接受一个小写字母,找出前个字符和后续字符

个基础点汇编实例学习接受个小写字母找出前个和后续:data segmenta db \'输入个\',0dh,0ah,\'$\'c db \'下个\',0dh,0ah,\'$\'data endscseg segmentassume cs:cseg,ds:datastart:mov ax,datamov ds,axmov dx,off a mov ah,9h 21hmov ah,1 21hmov ... [阅读全文]

汇编实现:接受一个小写字母输出对应大写字母

汇编实现:接受个小写字母输出对应大写字母大家当基础练习下! datasegment adb’输入个’,0dh,0ah,’$’ cdb’下个’,0dh,0ah,’$’ dataends csegsegment assumecs:cseg,ds:data start: movax,data movds,ax movdx,offa movah,9h 21h movah,1 21h movdl,al su... [阅读全文]

mutex:使用Mutex防止程序运行两次

很多时候我们不希望自己被运行两次这样行为称为“互斥”下面就介绍种实现互斥简单方法通过CreateMutex来创建个互斥量具体方法可以想象为在留言板写上段话每次运行时候都到留言板上找有没有这样留言如果有表明已经运行否则就是还没有运行 ;#Mode=CON .386 .modelflat,stdcall optionmap:none windows.inc user32.inc kernel32.in... [阅读全文]

校内网背景填充:使用RGB值来填充窗口背景

步骤相当简单: .386.ModelFlat,StdCallOptionCasemap:NoneIncludewindows.incIncludeuser32.incIncludekernel32.incIncludegdi32.incIncludewinmm.inclibgdi32.libIncludeLibuser32.libIncludeLibkerne... [阅读全文]

函数调用:函数调用得到传递参数的想法

近日来直致力于扩充公司脚本解析引擎!脚本引擎大致扩充功能如下: 1、可在脚本中由用户自定义功能了原来只有个入口所有代码都在Begin..End的间写 Begin //代码脚本 end 现在分成主脚本入口(既原Begin..End)和定义如 function GetMax(x,y: eger): eger; begin x y then result := ... [阅读全文]

c语言代码:从汇编语言翻译到c语言代码

="postbody"我们在写注册机时候经常会从汇编语言翻译到c语言代码 我们先看看个比较短和简单 " / 反编译如下: (热键F5): " / 可以看到产生c代码比较合理但是不完美看上去有点乱这是应为反编译不能执行类型恢复显然a1参数是指向个结构体指针让我们增加些数据类型看看发生什么我们打开Structure windows(Sht-F9),增加个结构体 " / 我们切换到pseudocode ... [阅读全文]

GCC内联汇编基础

这篇文章阐述内联汇编使用思路方法显然阅读这篇文章您需要具备X86汇编语言和C语言基础知识   Contents 1. 介绍 3 2. 概要 3 3. GCC汇编格式 3 1) 源操作数和目操作数方向 3 2) 寄存器命名 4 3) 立即数 4 4) 操作数大小 4 5) 内存操作数 4 4. 基本形式内联汇编 4 5. 扩展形式内联汇编 5 5.1 汇... [阅读全文]

寻址方式:8051寻址方式

8051单片机共有7种寻址方式寻址方式是指令中确定操作数形式用来确定操作数所处存储空间 1.立即寻址:在指令中直接给出操作数 MOV A, #80H 8位操作数 MOV A, #2000H 16位操作数 2.直接寻址:指令中直接给出操作数地址 (1)SFR这存储空间只能使用直接寻址 MOV PSW, #50H (2)内部数据RAM这存储空间可以使用直接寻址和寄存器间接寻址 MOV A, 30H 3... [阅读全文]

8051单片机:8051存储器

8051单片机有4个存储空间: 1.内部数据存储器(片内RAM) 共128字节字节地址范围为00H~7FH 前32个字节00H~1FH为寄存器区每8个寄存器形成个寄存器组共4个寄存器组 之后16个字节20H~2FH共128位为位地址区位地址范围为00H~7FH 最后80个字节30H~7FH为通用RAM区 具体分布如下图所示: 寄存器0组 00H~07H 寄存器1组 08H~0FH 寄存器2组 10... [阅读全文]

jmp指令:利用段间转移指令JMP实现任务内无特权级的转移

在本实例中进入保护方式后特权级是0通过如下段间直接转移指令实现从代码段K到代码段L转移: JUMP16CodeL_Sel,Virtual2 其中选择子CodeL_Sel是对应代码段L描述符选择子该描述符在LDT中所以选择子中描述符表指示位TI为1描述符特权级是0表示对应代码段特权级是0选择子中请求特权级RPL也是0目标代码段不是致代码段所以在CPL=DPLRPL=DPL情况下顺利进行相同特权级转移... [阅读全文]

特权指令:利用段间调用指令CALL实现任务内无特权级变换的转移

在代码段L中通过段间直接指令CALL了在代码段C中两个子这些都是无特权级变换转移例如利用如下指令了显示串子DispMsg: CALL16CodeC_Sel,DispMsg 其中CodeC_Sel是代码段C选择子DispMsg表示子入口描述代码段C描述符在LDT中描述符特权级DPL是0所以使用选择子CodeC_Sel请求特权级RPL是0描述符表指示位TI为1目标代码段C不是致代码段所以在CPL=DP... [阅读全文]

莲的别名:别名技术

这种为了满足对同个段实施不同方式操作需要而用多个描述符加以描述技术称为别名技术在保护方式设计中常常要采用别名技术例如:用两个具有不同类型值描述符来描述同个段再如用两个具有不同DPL描述符来描述同个段 在上述实例三中使用了两个描述符来描述演示任务LDT段段描述符LDTable被安排在GDT中它是系统段描述符把段LDTSeg描述成演示任务局部描述符表LDT描述符ToLDT被安排在LDT中它是数据段描述... [阅读全文]

js调用:通过调用门的转移

当段间转移指令JMP和段间指令CALL所含指针选择子指示门描述符时就可以实现通过门转移但只有CALL指令能变换到内层特权级JMP指令只能转移到同级代码 门描述符转移入口点包含目标地址段及偏移量48位全指针在执行通过任务门段间转移指令JMP或段间指令CALL时指令所含指针内选择子用于确定门而偏移被丢弃;把门内48位全指针作为目标地址指针进行转移 处理器采用与访问数据段相同特权级规则控制对门描述符访问... [阅读全文]

qq堆栈:堆栈切换

在使用CALL指令通过门向内层转移时不仅特权级发生变换控制转移到个新代码段而且也切换到内层堆栈段从本教程第五篇任务状态段TSS格式可见TSS中包含有指向0级、1级和2级堆栈指针在特权级发生向内层变换时根据变换到特权级使用TSS中相应堆栈指针对SS及ESP寄存器进行化建立起个空栈 在建立起内层堆栈后处理器先把外层堆栈指针SS及ESP寄存器值压入内层堆栈以使得相应向外层返回可恢复原来外层堆栈然后从外层... [阅读全文]

外层空间:向外层返回

与使用CALL指令通过门向内层变换相反使用RET指令实现向外层返回段间返回指令RET从堆栈中弹出返回地址并且可以采用调整ESP方法跳过相应在之前压入堆栈参数返回地址选择子指示要返回代码段描述符从而确定返回代码段选择子RPL确定返回后特权级而不是对应描述符DPL这是段间返回指令RET可能使控制返回到致代码段而致代码段可以在DPL规定特权级以外特权级执行需要注意是RET指令所使用返回地址选择子只能使用... [阅读全文]

80386:80386的中断和异常

8086/8088把中断分为内部中断和外部中断两大类为了支持多任务和虚拟存储器等功能80386把外部中断称为“中断”把内部中断称为“异常”与8086/8088样80386通常在两条指令之间响应中断或异常80386最多处理256种中断或异常 1.中断 对80386而言中断是由异步外部事件引起外部事件及中断响应与正执行指令没有关系通常中断用于指示I/O设备次操作已完成与8086/8088样80386有... [阅读全文]

80386:80386异常类型

参考:[http://www.crazycoder.cn/] 象中断分为多种类型样异常也可分为多种类型 1.80386识别异常参考:[http://www.crazycoder.cn/] 80386识别多种不同类别异常及赋予对应中断向量号如下表所示某些异常还以出错码形式提供些附加信息传递给异常处理出错代码列中“无”表示没有出错代码“有”表示有出错代码 异常览表 向量号异常名称异常类型出错代码相... [阅读全文]

80386:80386故障类异常

当发生故障控制转移到故障处理时所保存断点CS及EIP值指向引起故障指令以便在排除故障后恢复执行 =indent (1)除法出错故障(异常0) 除法出错是种故障当执行DIV指令或IDIV指令时如果除数等于0或者商太大以至于存放商操作数容纳不下那么就产生这故障除法出错故障不提供出错码 =indent (2)边界检查故障(异常5) 如果BOUND指令发现被测试值超过... [阅读全文]

80386:80386陷阱类异常

=indent (1)调试陷阱(异常1)参考:[http://www.crazycoder.cn/] 调试异常有故障类型也有陷阱类型调试可以访问调试寄存器DR6以确定调试异常原因和类型调试异常不提供出错码 =indent (2)单字节INT3(异常3)参考:[http://www.crazycoder.cn/] INT3是条特别单字节“INT n”指令调试可利用该指令支持断点INT3指令被看成是种... [阅读全文]

80386:80386中止类异常

=indent (1)双重故障异常(异常8)参考:[http://www.crazycoder.cn/] 当系统正在处理个异常时如果又检测到个异常处理器试图向系统通知个双重故障而不是通知第二个异常双重故障属于中止类异常所以在转入双重故障处理时被保存CS和EIP可能不指向引起双重故障指令而且指令重新启动不支持双重故障双重故障提供出错码为0 参考:[http://www.crazycoder.cn/]... [阅读全文]

网络异常中断:中断和异常的转移方法

80386实模式下中断和异常转移思路方法和8086相同这里介绍中断和异常转移思路方法是指80386在保护模式下响应中断和处理异常时所采用转移思路方法 1.中断描述符表IDT 和8086/8088样在响应中断或者处理异常时80386根据中断向量号转对应处理但是在保护模式下80386不使用实模式下中断向量表而是使用中断描述符表IDT在保护模式下80386把中断向... [阅读全文]

呼叫转移方法:转移方法的比较

对中断响应和异常处理80386允许通过使用中断门或陷阱门实现由当前任务之内个过程进行处理;也允许通过使用任务门实现由另个任务进行处理在当前任务之内处理较为简单并可以很快地转移到处理但处理要负责保存及恢复处理器寄存器等内容转到不同任务处理要花费较长时间保存及恢复处理器寄存器内容开销作为任务切换部分使用当前任务内处理方法在响应中断或处理异常时对正执行任务状态可直接进行访问但是这就要求每个任务之内都包含... [阅读全文]

tcp异常中断处理:中断或异常处理后的返回

中断返回指令IRET用于从中断或异常处理返回该指令执行根据任务嵌套标志NT位是否为1分为两种情形 NT位为1表示是嵌套任务返回当前TSS中链接字段保存有前任务TSS选择子取出该选择子进行任务切换就完成了返回这种情形在由通过任务门转入中断或异常处理返回时出现在由中断门或陷阱门转入处理时NT位已被清0 NT位为0表示当前任务内返回这种情形在由通过中断门或陷阱门转入中断或异常处理返回时出现具体进行操作包... [阅读全文]

dota指令:I/O敏感指令

参考:[http://www.crazycoder.cn/]输入输出特权级(I/O Privilege Level)规定了可以执行所有与I/O相关指令和访问I/O空间中所有地址最外层特权级IOPL值在如下图所示标志寄存器中 标志寄存器BIT31—BIT18BIT17BIT16BIT15BIT14BIT13—BIT12BIT11BIT10BIT9BIT8BIT7BIT6BIT5BIT4BIT3BI... [阅读全文]

五笔字型键位图:I/O许可位图

如果只用IOPL限制I/O指令执行是很不方便不能满足实际要求需要这样做会使得在特权级3执行应用要么可访问所有I/O地址要么不可访问所有I/O地址实际需要和此刚好相反只允许任务甲应用访问部分I/O地址只允许任务乙应用访问另部分I/O地址以避免任务甲和任务乙在访问I/O地址时发生冲突从而避免任务甲和任务乙使用使用独享设备时发生冲突 因此在IOPL基... [阅读全文]

每次访问此页时检查:I/O访问许可检查细节

保护模式下处理器在执行I/O指令时进行许可检查细节如下所示 (1)若CPL=IOPL则直接转步骤(8);(2)取得I/O位图开始偏移;(3)计算I/O地址对应位所在字节在I/O许可位图内偏移;(4)计算位偏移以形成屏蔽码值即计算I/O地址对应位在字节中第几位;(5)把字节偏移加上位图开始偏移再加1所得值和TSS界限比较若越界则产生出错码为0通用保护故障;... [阅读全文]

虚函数:多继承下的虚函数函数调用(汇编)

在我前篇文章\"透过汇编另眼看世界的\"中我们通过汇编了解了虚全部过程在本文中我将分析多继承情况下虚情况首先还是写些简单代码作为本文分析例子代码: \" align=top//theabstractbaseIBase...{\" align=toppublic:\" align=topvirtualvoidfunc1=0;\" align=topvirtualv... [阅读全文]

debug:汇编DEBUG全过程跟踪!

最近刚刚接触汇编,建议大家和我样能通过DEBUG更好理解代码.这样不但能调试,而且使你对内存以及寄存器也能够随时掌握他内容,更有助于你巩固反汇编出指令作用!就不多写了直接来个简单点,主要是针对和我样初学者,代码量太大未必是件好事(对于理解起来)代码如下: X*16+Y结果存放到ZZZdseg segmentxxx dw 1234hyyy dw 567... [阅读全文]

高级语言:汇编代码对应的高级语言分析

该使用c++编写 0053C9C0是个对象指针 0053C9C4也是个对象指针 mov ecx, xxxxxxxx call xxxxxxx 这种形式般都是成员没有重载非虚 mov ecx,aaaaaaaaaa mov eax,[ecx] call [eax+xxxxx]  般是重载过要取虚表 如果发现 call [reg+xxxx] 前面那个ecx不等于对象地... [阅读全文]
<< < 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 > >> 共797条 分27页