![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Assembler/Disassembler
文章平均质量分 96
Apollon_krj
岁月悠悠,衰微只及皮肤;热忱抛却,颓唐必至灵魂。
展开
-
8086汇编学习之寻址方式、数据类型以及几个数据操作指令
(一)、8086汇编学习之基础知识、通用寄存器、CS/IP寄存器与Debug的使用 (二)、8086汇编学习之DS寄存器、SS/SP寄存器 (三)、8086汇编学习之[BX],CX寄存器与loop指令,ES寄存器等 (四)、 8086汇编学习之代码段、数据段、栈段与段地址寄存器 一、and、or指令与应用:1、描述: and指令:按位与 or指令:按位或 and regis原创 2017-04-30 00:47:59 · 3243 阅读 · 1 评论 -
空函数、裸函数与函数传参和堆栈平衡
今天我们来看看在VC++6.0继承环境中,C语言的空函数在反汇编中是怎样的结构,然后来学习C和汇编的混合编程中裸函数与使用、学习函数传参与传参的三个调用约定以及不同约定在于堆栈平衡中的处理方式。这些不仅是汇编的学习的进一步深入,逆向的基础,对于正向来说了解汇编层的原理也是至关重要的。1、C空函数的反汇编结构分析:以下面的代码为例,进行反汇编:#include "stdafx.h"//C空函数vo原创 2017-08-01 17:05:17 · 2169 阅读 · 0 评论 -
两道“诡异”的数组越界问题的分析
1、数组越界引起的死循环问题:#include "stdafx.h"int main(int argc, char* argv[]){ int i = 0; int arr[3] = {0}; for(i = 0; i<=3; i++){ arr[i] = 0; printf("hello world\n"); } return原创 2017-08-05 17:29:40 · 1965 阅读 · 0 评论 -
switch语句的几种反汇编结构及效率分析
我们或许知道if…else if…与switch的功能基本相似,而switch也完全可以转换成if…else if…的结构,并且switch总体来说效率要高于if…else if…。但是很少有人知道总体来说if…else if….的效率为什么低于switch,以及为什么说总体来说**switch效率高,而不是一定高,以及什么时候效率一定比**if…else if…。今天我们就从反汇编的层面来看看sw原创 2017-08-06 23:25:36 · 4096 阅读 · 3 评论 -
一个%0nX格式化输出引发的“血案”
今天在写一个PE文件解析器的时候,大致写了这样一段代码: 本以为0X88没有超出%02X的格式限制。输出应该是88,殊不知输出的结果是FFFFFF88。正当我百思不得其解时,我修改了一下宏定义那句:#define BYTE unsigned char结果发现输出按照88正常输出。经过查找资料和反汇编分析,我得到了正确的结论,分析如下:①%X默认的输出宽度为整型的宽度,在32位...原创 2017-08-19 20:40:30 · 725 阅读 · 0 评论 -
8086汇编学习之基础知识、通用寄存器、CS/IP寄存器与Debug的使用
一、基本概念:1、汇编语言的组成:汇编指令+伪指令+符号体系 汇编指令:机器码的助记符(因为机器码难以记忆)通过编译器翻译成机器指令,每一个汇编指令对应一个机器指令(机器码); 伪指令:指导编译器如何将汇编指令翻译成机器指令,由编译器执行,计算机不执行,没有对应的机器码; 符号体系:+、-、*、/等一系列运算符号,由编译器识别,没有对应的机器码。2、指令的概念:机器指令:一连串二进制数字,不同原创 2017-04-23 00:15:25 · 6321 阅读 · 2 评论 -
8086汇编学习之标志位寄存器的应用
标志位寄存器其作用就是以其不同的标志位来支持更高级的指令,使得程序员的操作更为方便。关于标志位寄存器的知识点:区分CF标志位(进位标志)与OF标志位(溢出标志) 1、adc与sbb指令:CF标志位用在加减法的进位与结尾操作上: adc指令(add carry):带进位加法 adc ax,bx ==> (ax)=(ax)+(bx)+CF eg:1E F000 1000H + 20 1000 1E原创 2017-05-06 23:41:23 · 2920 阅读 · 1 评论 -
标志位寄存器与CF、OF标志位的区分
8086CPU的flag寄存器(16位)各标志位如下(这是32位EFLAG的低十六位图,但是32位与16位是一样的,只不过32位多了16位且高16位没有使用到): 标志位寄存器中保存的是当前指令运算的信息状态,比如进位信息保存在CF标志位(注意:是运算结果的标志,比如add、sub、mul、div、and、or等,而mov、push等不会改变标志位)。 其中CF为进位标志(Carry Fla原创 2017-05-05 20:06:56 · 37669 阅读 · 7 评论 -
8086汇编学习之代码段、数据段、栈段与段地址寄存器
同类学习笔记总结: (一)、8086汇编学习之基础知识、通用寄存器、CS/IP寄存器与Debug的使用 (二)、8086汇编学习之DS寄存器、SS/SP寄存器 (三)、8086汇编学习之[BX],CX寄存器与loop指令,ES寄存器等 我们主要分析一下在单个段的程序与多个段的程序中,每个段寄存器的值是如何安排的,段的位置关系,内存大小等问题。一、只有一个段的程序:程序实例: 利用栈将程原创 2017-04-26 23:07:18 · 21758 阅读 · 1 评论 -
8086汇编学习之[BX],CX寄存器与loop指令,ES寄存器等
一、汇编程序的基本格式:1、基本格式与解析:assume cs:codeseg //assume假设CS寄存器与codeseg段有关联,codeseg段本就是代码段codeseg segment //段开始,codeseg为段名,可随意命名只要不和伪指令、指令等冲突即可 mov ax,4C00H int 21Hcodeseg ends //段结束end //程序结束标志以上格原创 2017-04-25 22:37:47 · 5695 阅读 · 0 评论 -
8086汇编学习之DS寄存器、SS/SP寄存器
相关博客:8086汇编基础知识、通用寄存器、CS/IP寄存器与Debug的使用 一、DS寄存器一个8086CPU寄存器均是16位的,而数据类型有以下两种: 1Byte = 8bit (字节型数据) 1word = 2Byte = 16bit (字型数据)16位寄存器存储一个字,而在内存中需要两个空间连续的字节存储一个字。(高位地址存放高位数据,低地址存放低位数据)。 任何两个地址连续的内存单元原创 2017-04-23 23:09:40 · 17392 阅读 · 1 评论 -
王爽《汇编语言》课程设计二续(包含软盘操作)
之前完成了课程设计的第一部分(CMOS的读取与修改等):王爽《汇编语言》课程设计二(只包含CMOS RAM操作不包含软盘操作) 但是由于没有软盘做不了第二部分(脱离操作系统引导程序),今天我们完善一下,将第二部分补上去,首先得解决软盘的问题:关于VMWare虚拟机中软盘问题1、题目描述与分析:开机后,CPU自动进入到FFFF:0单元处执行,此处有一条跳转指令。CPU执行该指令以后,转去BIOS中原创 2017-05-14 20:16:43 · 3766 阅读 · 4 评论 -
王爽《汇编语言》课程设计二(只包含CMOS RAM操作不包含软盘操作)
遇到的瓶颈问题:如何能做到随时获取键盘中断,而不是一直等着按F1或ESC键。(int 16H的0号功能与1号功能的配合): 我们知道BIOS键盘缓冲区 15字节数据,高8位保存扫描码,低8位保存ASCII码。缓冲区为一个环形队列。int 16例程的0号功能可以从键盘缓冲区中阻塞式读取数据,获取到的数据会存放到AX中,高八位存放扫描码,低八位存放对应的ASCII码。 int 9H则可以用来向缓冲区原创 2017-05-13 23:01:14 · 1718 阅读 · 0 评论 -
80X25彩色字符模式显示缓冲区与使用
一、实验基本原理:(资料来源:王爽老师《汇编语言》第九章:转移指令的原理实验九)二、实验:在屏幕中间分别显示黑底绿字、绿底红字、白底蓝字的字符串“weclcome to masm!” 代码如下:;Author:Kangruojin;Time:2017年5月1日23:39:12;Mail:mailbox_krj@163.com;Version:V1.1;主要知识点:;高位字节:BL(闪烁)、原创 2017-05-02 00:02:09 · 2030 阅读 · 0 评论 -
8086汇编学习之转移指令的原理分析
(一)、8086汇编学习之基础知识、通用寄存器、CS/IP寄存器与Debug的使用 (二)、8086汇编学习之DS寄存器、SS/SP寄存器 (三)、8086汇编学习之[BX],CX寄存器与loop指令,ES寄存器等 (四)、8086汇编学习之代码段、数据段、栈段与段地址寄存器 (五)、8086汇编学习之寻址方式、数据类型以及几个数据操作指令 一、offset伪指令:offset 标号:原创 2017-05-01 20:50:12 · 1411 阅读 · 1 评论 -
我的第一个ARM汇编程序(霓虹灯~~~)
开始基于S3C2440学习ARM裸机,记录一下第一个ARM汇编程序(比起8086的指令,ARM的指令要难一些,当然ARM指令比起IA32也是稍有逊色,毕竟越是技术更新换代,所需功能越多,复杂度也就越大)@@ Time:2019年4月1日23:15:07 @ Author:Apollon_krj@ 所有的三个LED点灯(GPF4~GPF6):1为灭,0为亮@ 流水灯@ @ arm的函数...原创 2019-04-02 19:57:35 · 1195 阅读 · 0 评论