首页
社区
课程
招聘
[原创]汇编笔记(一)——初入门认识计算机
发表于: 2015-10-30 10:21 13850

[原创]汇编笔记(一)——初入门认识计算机

2015-10-30 10:21
13850
汇编笔记(一)——初入门认识计算机
首先要掌握以下知识,计算机的字长与微处理器的寄存器位数有关,以Intel80X86CPU为例,字长16位,那么他的寄存器位数也是16位
汇编语言最常见到的就是16进制数,所以要习惯十六进制思维,汇编语言中数字后面分别用B、H、D代表二进制,十六进制和十进制,十进制的D可以省略

8086寄存器组

在DOS操作系统和Windows操作系统中,都提供了调试工具DEBUG。DEBUG是为汇编语言设计的一种调试工具,它通过单步、设置断点等方式为程序员提供了非常有效的调试手段。利用它可以观察和修改CPU的寄存器、内存单元;可以跟踪程序的运行,发现程序的错误。
DEBUG的主要命令
•        R ——查看和修改寄存器
•        D ——查看内存单元
•        E ——修改内存单元
•        U ——反汇编,将机器指令变为汇编指令
•        T /P——单步执行
•        G ——连续执行程序
•        A ——输入汇编指令
•        Q ——退出
Windows环境下,微软键加R,进入运行界面,进入DOS界面,输入DEBUG进入,
一些简单的DOS命令
•        R ——查看和修改寄存器
•        D ——查看内存单元
•        E ——修改内存单元
•        U ——反汇编,将机器指令变为汇编指令
•        T /P——单步执行
•        G ——连续执行程序
•        A ——输入汇编指令
•        Q ——退出
注意:DEBUG和DOS命令都支持大小写
进入DEBUG后,要输入一些命令,在你输入之前有一个提示符,是小短线 - ,在其后直接输入命令。
命令详解及用法:
1.        R命令—查看和修改寄存器
R命令有俩种用法:直接键入R—将显示CPU所有的寄存器和标志位
修改寄存器—在R后跟写寄存器名,回车后显示寄存器的内容,在冒号后输入新的值做修改,例图,将AX的值从0000H修改为1010H

Debug环境下,数据都是十六进制数,
再看四个段寄存器,DS,ES,SS,CS,四个值都是0AE3,这表明系统处在同一个逻辑段中,操作系统会根据内存的情况分配段地址,因此每个段地址值可能不一样。
接下来  0AE3:0100是逻辑地址,42是机器指令,INC   DX是机器指令
NV……NC这一段是标志位状态,

2.        D命令—查看内存单元
内存每16个字节单元为一小段,逻辑段必须从小段的首址开始。用D命令可以查看存储单元的地址和内容。
D的命令格式为
D 段地址:起始偏移地址  [结束偏移地址]
注释:偏移:多用于文件中,用于指定文件中的某个位置,例如一个文件大小为0x10,那么偏移0xB就是指文件的第11(0xB)个字节(这个地方的理解起来可能会有点难,因为他的本身含义和字面含义有很大不同)
D DS:0    //查看数据段,从0号单元开始
D ES:0    //查看附加段,从0号单元开始
D DS:100  //查看数据段,从100H号单元开始
D 0200:5  15  //查看0200H段的5号单元到15H号单元

逻辑地址        存储单元内容                                    ASCII码显示
中间的存储单元内容,每行为十六个字节单元,中间的小横线用于区分前八个单元与后八个单元,逻辑地址只给出第一个单元的偏移地址,其余十五个没有标出,可以推断出第一行单元的偏移地址0000H~000FH,第二行0010H~001FH,以此类推。右边显示内存单元的ASCII码表示的字符,无法显示用小点代替。
3.        E命令—修改内存单元
用E命令可以修改多个储存单元的内容,命令格式为E 段地址:起始地址  修改值  修改值……
例: E DS:5 1 2 3
如下图所示,修改前为9A  EE  EF,修改后为01  02  03

E后直接跟偏移地址,则修改当前数据段下偏移地址所指单元值,

发现你E后面的地址回车,会直接显示地址和当前值,然后让你输入你要修改的值
还可以用E命令修改其它段的存储单元内容。就不再贴图了。
4.        U命令—反汇编
我们所编写的汇编程序经过编译后生成二进制的机器指令代码,U命令可以将二进制的机器指令变为助记符形式的汇编指令,所以U指令称为反汇编
再次提示:debug指令是不关注你的大小写的,

逻辑地址  机器指令      汇编指令
注意:多次键入U,可连续显示后面的程序部分。
U后跟偏移地址,则从该地址开始反汇编。
5.        A命令—输入汇编指令
在debug下,使用A指令可以输入汇编指令,系统将自动将键入的汇编指令翻译成机器代码,并按顺序存放在指定地址开始的区域中,debug环境下默认为十六进制(又说一遍),所以二进制或者十进制都需要转换,

6.        T/P—单步执行命令
当汇编指令输入完成后,就需要执行,T命令可以一条一条的去执行命令,P与T相同,但是当遇到中断指令INT n和调用指令CALL时,应该用P指令,以确保程序正常运行,T进去可能无法返回,P是直接执行,并将结果带回,遇到循环指令LOOP时,P指令可以快速结束循环。

也可以多次执行
-T 3,就是连续执行三条指令
7.Q指令—退出debug
输入Q,回车,返回DOS下

原本我是拿word写的,复制粘贴过来所有图都没了,很抱歉大家,新手入门,轻喷

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 102
活跃值: (102)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
2
顶!期待后续!作为网络版的学习笔记吧!加油!
2015-10-30 13:31
0
雪    币: 33
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
顶!汇编语言第二版课件及源码,有需要可以留邮箱。
2015-10-30 19:29
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
464173170@qq.com谢谢咯
2015-10-30 20:11
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
看雪慢慢成为了初学者园区.......
2015-10-30 22:22
0
雪    币: 48
活跃值: (175)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
大神,佩服
2016-6-27 11:19
0
雪    币: 118
活跃值: (225)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
抱歉不懂
2016-11-7 23:09
0
游客
登录 | 注册 方可回帖
返回
//