首页
社区
课程
招聘
[旧帖] [原创][分享]初学者 汇编笔记 0.00雪花
发表于: 2010-5-16 22:17 4616

[旧帖] [原创][分享]初学者 汇编笔记 0.00雪花

2010-5-16 22:17
4616
在网上买了两本书 今天刚拿到手 一本汇编语言 一本 加密解密三  哈哈 终于可以开始好好学习啦

2010年5月16日 星期日 小雨(哗啦啦啦的下了一天)

第一章 基础知识

1.2汇编语言的产生

机器指令 1000100111011000 表示把寄存器BX的内容送到AX中,汇编指令则写成 mov ax,bx

操作:寄存器BX的内容送到AX中
机器指令:1000100111011000
汇编指令:mov ax,ba

问: 为什么把BX的内容送到AX的汇编指令写成mov ax,bx 而不是mov bx,ax?

答: mov就是把后面的赋值给前面,格式就是这样的,规定。

                                                            感谢 Lelouch、马出门 给予技术支持。。。

1.5 指令和数据

内存中的二进制信息 1000100111011000 计算机可以把它看做大小为89D8H的数据来处理,也可以将其看做指令 mov ax,bx

1000100111011000--->89D8H       (数据)
1000100111011000--->mov ax,bx  (程序)

问:
       在什么情况下是代表数据 在什么情况下代表程序呢?

答:

   程序是人写出来的代码,上面的是程序编译出来的机器语言  电脑可以执行上面的 执行不了下面的。

  程序=N多指令,每个指令都可以包含数据。

                             感谢 Lelouch  、 小夏   给予技术支持。。。  

监测点:1

(1)一个CPU的寻址能力为8KB,那么它的地址总线的宽度为__13__。

          2的1次方=8KB    几位就是 2的几次方。

                            感谢   痴人说梦 、 鼠标 、 小夏天  给予技术支持 。。。

(2)1KB的存储器有1000个存储单元  存储单元的编号 从0到999

                                          感谢  痴人说梦 、 tRee"     给予技术支持 。。。

(3)     1KB的存储器可以存 8192个bit,1024个byte

                                           感谢  痴人说梦 、 Lelouch   给予技术支持 。。。

(4)    1GB=1073741824B   1MB=1048576B    1KB=1024B

(5)    8080、8088、80286、80386的地址总线分别为:16根 20根 24根 32根 他们的寻址能力分别为     64KB         1MB      16MB         4GB

                                             感谢  c︻$▅▆▇◤   给予技术支持 。。。

(6)   8080、8088、8086、80286、80386的数据总线分别为:8根 8根 16根 16根 32根则 他们一次可传的速度为
        8B   8B    16B  16B  32B

(7)从内存中读取1024字节的数据,8086至少要读取   8   次    ,80386至少要读取   4     次

(8) 在存储器中,数据和程序以 二进制形式存放。

                              感谢  痴人说梦 给予技术支持 。。。

经过上面的朋友技术指导 不知道自己填写的对不对 今天是第一天学这个 感觉有点吃力 但是 有这么多热心朋友的帮助  我会 学会坚持...         

想学汇编的朋友一起来了  不用担心基础差 只要用心学 一定能学会 只是时间问题罢了

  2010年5月17日 星期一 小雨转晴

第二章 寄存器

2.1通用寄存器

不同的CPU,寄存器的个数、结构是不相同的。 8086CPU有14个寄存器,每个寄存器有一个名称。这些寄存器是:AX、BX、CX、DX、SI、DI、SP、BP、IP、

CS、SS、DS、ES、PSW。

    书上没有对这写寄存器进行一次性的介绍。。。我也没有因为好奇 去翻书查找每一页的介绍 原因很简单  就算现在去查找 看了一边也未必能记住 因为 不能了解

其中原理 只从字面上了解 跟不了解 没什么区别 当然 这个是个人想法   感觉还是按书上的思路走好  虽然进展慢 但是 能或多或少了解其中含义  方便以后在看时

易懂 。。

    8086CPU的所有寄存器都是16位的,可以存放两个字节。AX、BX、CX、DX、这四个寄存器通常存放一般性质的数据,被称为通用寄存器。

一个16位寄存器 可以存放16位的数据, 想一想 一个16位寄存器所能存储的数据的最大值为多少?

十六进制是: FFFF                  十进制是: 65535            八进制是:177777  

怎么得到的呢? 经过高人指点如下:

一个16位寄存器 可以存放16位的数据 最当 当然是 1111111111111111      16个1啦

至于 十六进制 十进制 八进制  完全可以吧 二进制的数 输入到计算器(科学型)里转换嘛

要学会用计算器 明白?  (当时看到这句话 彻底的无语了。。。以前总以为傻傻的用脑子跟铅笔头算呢。。。。没想到 原来是这么搞啊!!! 真是学到了一

手。。。。)

                                             感谢  马出门  给予技术支持。。。。

8086CPU的上一代CPU 中的寄存器都是八位的,为了保障兼容,使原来基于上一代CPU编写的程序稍加修改可以运行在8086之上 ,8086CPU的AX、BX、CX、

DX、这四个存储器都可分为两个可独立使用的8位寄存器来使用:

              AX可分为AH和AL;
              BX可分为BH和BL;
              CX可分成CH和CL;
              DX可分成DH和DL。

用AX来举例说明下, 8086CPU的16位寄存器分为两个8位寄存器  下面用数字表示下:

            15 14 13 12 11 10 9 8    7 6 5 4 3 2 1 0

AX的第8位(0-7) 构成了 AL寄存器,高8位(8-15)构成了AH寄存器。

AH和AL寄存器 是可以独立使用的8位寄存器。

       问: 为什么 高八位在前面 第八位在后面?
       答:这个东西和很多东西有关 不同的cpu不一样   有地位放低字节的  也有高位放低字节的

                                        感谢  ZW零度  给予技术支持。。。

2010年5月18日 星期二 晴

今天朋友说我 抱着书啃汇编 好像没什么实际效果  郁闷。。。 让我试着离开书本 把王爽的汇编书 当做字典去用。。。。

让我 进入OD调试一些 小东西 然后分析代码的意思。。。结果进去发现  我晕了  什么都看不懂。。。

正好 王爽汇编 2.3 讲的是几条汇编指令。。。。。

堆栈操作指令

堆栈是一个重要的数据结构,它具有“先进后出”的特点,通常用来保存程序的返回地址。它主要有两大类操作:进/压栈操作和出/弹栈操作。
、PUSH
指令格式:PUSH Reg/Mem
PUSH Imm          
一个字进栈,系统自动完成两步操作:SP←SP-2,(SP)←操作数;
一个双字进栈,系统自动完成两步操作:ESP←ESP-4,(ESP)←操作数。

、PUSHA
指令格式:PUSHA      
其功能是依次把寄存器AX、CX、DX、BX、SP、BP、SI和DI等压栈。

、PUSHAD
指令格式:PUSHAD      
其功能是把寄存器EAX、ECX、EDX、EBX、ESP、EBP、ESI和EDI等压栈。

2)、出栈操作
、POP
指令格式:POP Reg/Mem
弹出一个字,系统自动完成两步操作:操作数←(SP),SP←SP-2;
弹出一个双字,系统自动完成两步操作:操作数←(ESP),ESP←ESP-4。

、POPA
指令格式:POPA       
其功能是依次把寄存器DI、SI、BP、SP、BX、DX、CX和AX等弹出栈。其实,程序员不用记住它们的具体顺序,只要与指令PUSHA对称使用就可以了。

、POPAD
指令格式:POPAD    
其功能是依次把寄存器EDI、ESI、EBP、ESP、EBX、EDX、ECX和EAX等弹出栈,它与PUSHAD对称使用即可。

汇编指令                           控制CPU完成的操作               用高级语言的语法描述

mov ax,18                          将18送入寄存器AX                     AX=18

mov ah,78                          将78送入寄存器AH                      AH=78

add ax,8                             将寄存器AX中的数值加上8              AX=AX+8

mov ax,dx                           将寄存器BX中的数据送入寄存器AX        AX=BX

add ax,bx                            将AX和BX的数值相加,结果存在AX中    AX=AX+BX

今天由于工作忙 就啃了这么一点。。。。哎 只能自己安慰自己 慢慢消化吧    不知道有没有什么好的方法 有利于灵活运用的?

希望能多多看到一些高手的 成长日记  呵呵。。。期待中。。。

2010 5 20  星期四  晴

这几天笔记有点乱 还没整理出来。。

http://bbs.pediy.com/showthread.php?t=110652    本来打算实践下这个连接里的方法。。。 壳手脱掉了。。。但是为什么在OD里找不到关键的 注册码输入错误 提示?  步骤按链接里说的那样做的。。。为什么不行呢。。我就郁闷了。。。

最近笔记有点乱。。在整理中。。。   2010年5月23日 晴

逻辑运算与AND  逻辑运算或OR  逻辑运算非NOT  逻辑异常运算XOR

逻辑运算与AND 也就是大家说的与运算

相同为1 不同为0  0和0 结果还是0

and  110100,101101

结果是得到  100100

这么看简单:

110100
101101
———
100100

这就是所谓的与运算 也可以看做是 乘法运算

逻辑或OR   是大家常说的或运算

or 也可以看做是加法运算 下面我用机器语言表示给大家看

or 011010,100110

可以看做

011010
100110
———
111110

逻辑非NOT

这个相对来说很简单 非0为1,非1为0

也就是 不是0,那就是1;不是1那就是0

下面用机器语言表示给大家看

not 100110

100110
------
011001

逻辑异常运算(xor)

这个运算是 一样为0,不一样为1

继续用二进制表示

mor 110110,011010

可以这么看:

110110
011010
------
101101

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (46)
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
继续观注不要半途而废,呵呵
2010-5-17 09:09
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
嗯,大家一起坚持学习。早日学会
2010-5-17 14:35
0
雪    币: 407
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我也是今天刚刚收到的书,一起学习
2010-5-17 14:49
0
雪    币: 195
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
上面的我都看不懂 现在很迷茫 汇编语言和C语言不懂吗?
2010-5-17 15:20
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
支持一个先

我是想要学速成的汇编,强背常用命令,理解就来不及了,呵呵
我空就来看看此贴
继续啊
2010-5-17 17:09
0
雪    币: 281
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
呵呵····买不起啊···
2010-5-17 17:32
0
雪    币: 195
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
学习啦
2010-5-17 17:43
0
雪    币: 99
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
刚刚开始学汇编,共勉!推荐
推荐去下载王鉴泉老师的视频,目前正在看
2010-5-17 17:49
0
雪    币: 94
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
楼主加油哈!希望坚持下去!
2010-5-17 22:36
0
雪    币: 302
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
。。。。。。。。
厉害。。。
等你把解密三解释完了我给你送个邀请码
。。。。
2010-5-18 06:54
0
雪    币: 74
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
顶一个 继续
2010-5-18 08:02
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
还不错,继续努力!
2010-5-18 08:07
0
雪    币: 6048
活跃值: (3125)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
楼主继续努力,持续关注!
2010-5-18 15:37
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
呵呵,会汇编的绝对是高手。
2010-5-29 10:01
0
雪    币: 88
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
~~~~~~~~~~~~~~
2010-5-29 10:16
0
雪    币: 61
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
2010-5-29 10:50
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
很厉害 喔~什么 时间我能学会汇编呐~
2010-5-29 10:57
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
lz 的帖子最后一行 有错误啊 !! xor运算:一样为0,不一样为1
  感谢 lz 的帖子,共同学习!
2011-1-27 13:53
0
雪    币: 119
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
想看下去 比偶额让我失望
2011-1-27 19:54
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
加油。。。。。。。
2011-1-27 23:45
0
雪    币: 48
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
哪个送我一个啊,哈哈~~~~~~~~~~~~~~~~~~~~~~~~~
2011-1-27 23:52
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
目前正在看汇编  。共勉
2011-1-29 19:35
0
雪    币: 25
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
学习了!
2011-2-1 14:28
0
雪    币: 31
活跃值: (43)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
25
很基础的东西,希望能继续,最好写成电子文档,只是你现在写的东西有点少
2011-2-1 15:02
0
游客
登录 | 注册 方可回帖
返回
//