![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
汇编语言
文章平均质量分 67
lijun5635
这个作者很懒,什么都没留下…
展开
-
汇编—start的作用
start: 作为汇编程序的一个标号,定义了程序的入口,既程序从start:处开始执行。 若程序的第一条指令就是程序的入口,则start可以缺省。 start 使用结构如下: ----------------------------------------- start: \\定义程序的入口 ... end start \\定义程序段结束 ------------转载 2012-08-29 08:29:29 · 10817 阅读 · 1 评论 -
C语言的反汇编代码
1. 最简单的代码: //// test1.c int main(){ return 1; } 编译、反汇编: gcc test1.c gdb ./a.out (gdb) disassemble main 0x08048344 : lea 0x4(%esp),%ecx ;取出 esp 寄存转载 2013-04-15 16:11:13 · 2919 阅读 · 0 评论 -
objdump用法
gcc命令之 objdump ---------------objdump是用查看目标文件或者可执行的目标文件的构成的GCC工具----------以下3条命令足够那些喜欢探索目标文件与源代码之间的丝丝的关系的朋友。objdump -x obj 以某种分类信息的形式把目标文件的数据组织(被分为几大块)输出 objdump -t obj 输出目标文件的符号表()objdum转载 2013-05-02 15:51:31 · 1130 阅读 · 0 评论 -
readelf命令
readelf elf-file(s) [功能] 用于显示elf格式文件的信息。 [描述] readelf用来显示一个或者多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。这里的elf-file(s)就表示那些被检查的文件。可以支持32位,64位的elf格式文件,也支持包含elf文件的文档(这里一般指的是使用ar命令将一些elf文件打包之后生成的转载 2013-05-02 15:08:55 · 9636 阅读 · 0 评论 -
Linux下nm和ldd 命令
1. Linux nm 命令nm [‘-a’|‘--debug-syms’] [‘-g’|‘--extern-only’][‘-B’] [‘-C’|‘--demangle’[=style]] [‘-D’|‘--dynamic’][‘-S’|‘--print-size’] [‘-s’|‘--print-armap’][‘-A’|‘-o’|‘--print-file-name’][‘-转载 2013-05-02 16:06:16 · 954 阅读 · 0 评论 -
hexdump的用法
有时候需要查看一些二进制文件的内容,比如二进制文件中包含的某些字符串。这个时候可以用hexdump工具看查看。常用参数: hexdump -C -n length -s skip file_name-C 定义了导出的格式,-s skip 指定了从文件头跳过多少字节,或者说是偏移量,默认是十进制。如果是0x开头,则是十六进制。-n 指定了导出多少长度如果是寻找文本内容,则经常在后面用转载 2013-05-02 14:52:04 · 23286 阅读 · 0 评论 -
对比objdump与readelf readelf objdump nm
objdump和readelf都可以用来查看二进制文件的一些内部信息. 区别在于objdump借助BFD而更加通用一些, 可以应付不同文件格式, readelf则并不借助BFD, 而是直接读取ELF格式文件的信息, 按readelf手册页上所说, 得到的信息也略细致一些. 几个功能对比. 1. 反汇编代码查看源代码被翻译成的汇编代码, 大概有3种方法, 1) 通过编译器转载 2013-05-02 16:10:42 · 2989 阅读 · 0 评论 -
用VC++6.0编译调试汇编程序
用VC++6.0编译调试汇编程序 使用汇编的一点心得,还不完善,希望高手指点。第一步:新建工程 新建空的Win32控制台程序。第二步:添加文件 把源程序和资源文件添加进新建的工程。当然也可以在VC++6.0里写源程序并编辑资源文件。第三步:编译设置 在程序文件上右击,再点设置(Settings),然后在弹出的对话框中设置命令行参数和输出文件名转载 2013-12-09 22:38:48 · 2642 阅读 · 1 评论 -
lea和offset、addr
转载地址:http://blog.csdn.net/autumn20080101/article/details/7592815主要来源:http://topic.csdn.net/t/20061216/21/5235706.html#r_achorlea 是机器指令,offset 是伪指令。LEA BX, BUFFER ;在实转载 2015-01-15 21:36:08 · 1377 阅读 · 0 评论 -
标志位
原文是http://bbs.pediy.com/showthread.php?p=1354565#post1354565这篇文字的回复。感谢坛主关照,下面总结一下各种汇编中的跳转指令会检查哪些标志位,以及做出怎样的决策: 该表引用自一书中85页的表格,可作为逆向时遇到分支流程的快速参考转载 2015-03-01 08:47:25 · 949 阅读 · 0 评论 -
我还是搞不清指令本身是如何区分有符号数和无符号数!(问题汇总)
论坛的一个CSDN提问,对各方面的回答进行了汇总,答案还算比较清楚的。 一般好像是有专门的有符号数指令和无符号数指令比如无符号除法是 div有符号除法是 idiv mov al,27hmov bl,73hadd al,bl27h 0010011173h 01110011如果是无符号数al的结果为10011010(9A),如果是有符号数原创 2013-04-05 09:46:23 · 7366 阅读 · 3 评论 -
汇编中有符号与无符号数的区分
一、只有一个标准!在汇编语言层面,声明变量的时候,没有 signed 和 unsignde 之分,汇编器统统,将你输入的整数字面量当作有符号数处理成补码存入到计算机中,只有这一个标准!汇编器不会区分有符号还是无符号然后用两个标准来处理,它统统当作有符号的!并且统统汇编成补码!也就是说,db -20 汇编后为:EC ,而 db 236 汇编后也为 EC 。这里有一个小问题,思考深入的转载 2013-04-05 09:40:22 · 1049 阅读 · 0 评论 -
求1+2+3.......+1000的汇编代码
代码如下:Nasm跑,虚拟机主引导盘运行。 jmp near startmessage db '1+2+3+.....+1000='number db 0start: mov ax,0x7c0 mov ds,ax mov ax,0xb800 mov es,ax mov si,message原创 2013-02-28 15:47:49 · 1936 阅读 · 0 评论 -
第五章实验4第三小题答案(还是有点不懂啊)
实际上这是一道再简单不过的问题了,不知道为什么论坛上有许多人都对它存有疑惑。正确答案就是:第一个空毫无疑问应该是: mov ax,cs 关键是第二个空,应该是: mov cx,17h 接下来我来分析一下: cs中存储了这段代码的起始位置,而不是用什么ds。 这道题的关键是我们需要复制的字节数,可我们怎么知道是23个字节(也就是17h)呢,首先将 mov转载 2012-08-29 08:38:25 · 1403 阅读 · 0 评论 -
汇编——Mov和堆栈操作原则
使用MOV指令要注意到几点:(1)立即数只能作为源操作数,不能作为目的操作数; (2)立即数只允许送到存储器和除了段寄存器之外的其他寄存器; (3)段寄存器之间不能直接传送,但可与其他16位寄存器相互传送; (4)两个内存单元之间不能直接传送; (5)MOV指令的两个操作数类型必须一致; (6)CPU中的寄存器除IP外都可通过MOV指令访问。还有 一点关于堆栈操转载 2012-08-27 21:40:56 · 5763 阅读 · 1 评论 -
汇编中变量及数组的定义声明
汇编中变量及数组的定义声明没有变量的程序设计语言是不可思议的,它几乎什么都做不了(除了经典的‘hello the world!’程序),毕竟有一些数值是在程序运行时随环境的变化而变化的(在程序设计时你不可能确定它)。即使是像汇编这样可以直接读写内存的程序也需要用到变量。但它不像其它高级语言那样把变量分成许多类型,它是按照变量的长度来区分的,所以定义(define)变量时就用5个不同的关键字:D转载 2012-09-06 16:48:34 · 3815 阅读 · 0 评论 -
王爽第十一章测试题答案
sub ax,ax mov ax,5 add ax,-3 以上程序执行完后,CF,OF的值是_____ 1、 0,0 2、 0,1 3、 1,0 4、转载 2012-09-13 21:39:50 · 7442 阅读 · 0 评论 -
递归实现数组的排序
通过递归实现整数数组的排序。搞了半天没有终止条件。要牢记。void Sort1(int n,int *p){ int i =0; int temp =0; if(n==1) { return; } for(i=0;i<n-1;i++) { if(*(p+i)<*(p+i+1)) {原创 2012-11-13 11:22:19 · 3661 阅读 · 0 评论 -
BIOS和DOS中断大全
DOS中断:1、字符功能调用类(Character-Oriented Function)01H、07H和08H —从标准输入设备输入字符02H —字符输出03H —辅助设备的输入04H —辅助设备的输出05H —打印输出06H —控制台输入/输出09H —显示字符串0AH — 键盘缓冲输入0BH —检测输入状态0CH —清输入缓冲区的输入功能(1)、转载 2013-02-01 11:07:05 · 610 阅读 · 0 评论 -
补码的加减运算
一个讲课的PPT,粘贴下来,多多了解。 2.2.4 补码的加减运算 1. 补码加法 在计算机中,带符号数一般用补码表示,运算结果自然也是补码。其运算特点是:符号位和数值位一起参加运算,并且自动获得结果(包括符号位与数值位)。 补码加法的运算规则为:即:两数补码的和等于两数和的补码。 例2.11 已知[+5转载 2013-01-31 09:57:14 · 1792 阅读 · 2 评论 -
保护模式下寻址
段机制轻松体验[内存寻址]实模式下的内存寻址:让我们首先来回顾实模式下的寻址方式段首地址×16+偏移量 = 物理地址为什么要×16?因为在8086CPU中,地址线是20位,但寄存器是16位的,最高寻址64KB,它无法寻址到1M内存。于是,Intel设计了这种寻址方式,先缩小4位成16位放入到段寄存器,用到时候,再将其扩大到20位,这也造成了段的首地址必须是16的倍数的限制。转载 2013-02-21 08:52:21 · 595 阅读 · 0 评论 -
汇编标志位 - FLAGS
汇编标志位:------------------------------------------------------------------------------------标志名 标志 1 标志 0----------------------------------------------转载 2013-02-28 10:15:45 · 4011 阅读 · 1 评论 -
IDA知其所以然
把IDA知其所以然能找到的这套视频看完了,大概介绍了IDA的这样功能的用法。对IDA界面基本算熟悉了。具体怎么用了逆向,还需要继续学习。把主要内容贴一下做个记录。感觉太浮躁了,需要沉下心来。继续看另一个视频,听声音好像是同一个人讲的。 第一部分IDA简介1.反汇编简介-----------第1课 A.反汇编理论 B.为何反汇编 C.如何反汇编2.逆向与反原创 2015-04-12 15:57:47 · 1394 阅读 · 0 评论