首页
社区
课程
招聘
[旧帖] [原创]炫耀一下我的汇编学习笔记;论坛不支持表格可惜了 0.00雪花
发表于: 2010-4-4 18:03 1486

[旧帖] [原创]炫耀一下我的汇编学习笔记;论坛不支持表格可惜了 0.00雪花

2010-4-4 18:03
1486
4.2源程序
简短的公式        指令        含义和作用        例如
XXXX(段名) Segment        中文        部分;片段        Codes segment ;告诉编译器这是一个“段”的开始
……
……
……
Codes ends
end

        作用        告诉编译器这是一个“段”的开始       
指令        含义和作用        例如
XXX(段名)ends        含义        一个段的结束        Codes segment ;告诉编译器这是一个“段”的开始
……
……
……
Codes ends
end
        作用               

指令        含义和作用        例如
End        含义        表示一个程序的结束        Codes segment ;告诉编译器这是一个“段”的开始
……
……
……
Codes ends
end

        作用        这个很重要,不然编译器不知道在哪里结束;我们要养成一开始就要写一个end在后面       

指令        含义和作用        例如
Assume        含义        “假设”        Assume CS:codes ; “codes”和寄存器CS有练习;或者说“codes”段需要CS寄存器的支持
Codes segment ;告诉编译器这是一个“段”的开始
……
……
……
Codes ends
end

        作用        他假设某一,段寄存器和程序中某一个用“segment….ends”定义的段相关联。通过assume说明这种关联,在需要的情况下编译程序可以将段寄存器和某一个具体的段相联系。Assume并不是一条非要深入理解不可的伪指令,以后我们编程时,记得用assume将有特定用途的段和相关的寄存器相关联起来即可。       

指令        含义和作用        例如
Int(21H)        含义        程序返回        Mov ax;4c00h
Int 21h ;其中“21h”指的是要返回的地址
        作用        一个程序P2在可执行文件中,则必须有一个正在运行的程序P1将P2从可执行文件中加载到内存后,CPU将控制权交给P2,P2才得以运行。P2开始运行后,P1暂停运行。当P2运行完毕后,应将CPU的控制权交个让他得以运行的P1,此后P1继续运行;这种行为叫做“程序返回”       

重要的概念        Q:什么是伪指令和汇编指令?
A:在汇编语言中有两种指令,一种是汇编指令,另一种是伪指令
汇编指令是指编译连接器能够把它变成机器码的指令。
伪指令是指连接编译器不能把它编译成机器码的指令。
Q:伪指令的作用?
A:编译器根据伪指令来进行相关的操作;end指令;就是告诉编译器程序结束了。
Q:“段”的概念?
A:一个汇编程序有多个段组成,这些断背用来存放代码,数据或当做栈空间来使用。我们在前面的课程所讲到的“段”的概念,在汇编源程序中得到了应用和体现,一个源程序中所有将被计算机所处理的信息:指令,数据,栈被划分到了不同的段中。
Q:什么是操作系统外壳程序?
A:操作系统是由多个功能模块组成的庞大的,复杂的软件系统。任何通用操作系统,都要提供一个称之为Shell(外壳)的程序,用户(操作人员)使用这个程序来操作计算机系统进行工作。
Q:什么是程序入口?
A:cpu的CS:IP指向程序的第一条指令。详情请见《汇编语言 第二版》90页
Q:command.com?
A:windows外壳程序的一种和DOS有关。
Q:汇编程序从写出到运行的过程
A:见表:
编程        1.asm        编译        1.obj        连接        1.exe        加载        内存中的程序        运行
(edit)                (asm)                (link)                (command)               

有一点需要注意        汇编中的一些概念:
1.        源程序中的“程序”;
“程序”是指源程序中最终被计算机执行,处理的指令和数据,称为程序。也就是指汇编指令和能够变成机器码的数据
2.        标号;
除了伪指令之外还有一个标号;比如上面例程当中的“codes”。一个标号只带了一个地址。比如codes在segment前面就是指一个段的名称,这个段的名称终将被编译。
3.        程序返回
不明白的地方       
还需要的前置知识       
对这一小节的评论        一个源程序中所有将被计算机所处理的信息:指令,数据,栈被划分
由此看出,一个汇编源程序是由一个一个的段组成的,这就好像我们高级语言中的“模块化”编程思想是一样的。
4.9程序执行过程的跟踪
简短的公式       
重要的概念        Q:跟踪程序执行过程有啥用呢?
A:我们写程序在逻辑上不一定总是正确,对于简单的错误,仔细检查一下源程序就能发现;对于隐藏较深的错误,就必须对程序执行过程进行分析才容易发现。
Q:如何知道我们的程序装载到内存的什么地方?
A:这里有一个简短的公式:用段地址和偏移地址来表示就是;SA(ds寄存器中的数据)+10h(这个是操作系统的PSP;它是必须的。我们不用理他,知道这个世界有它存在就行了
请见《汇编语言 第二版》 的92页
有一点需要注意       
不明白的地方       
还需要的前置知识       
对这一小节的评论

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

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
讨厌这个头衔----临时用户。
我好不容易注册得的
2010-4-4 18:05
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
收藏了!论坛严格一点对大家都有好处的!
2010-4-4 18:56
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
恩..值得学习..
2010-4-8 10:21
0
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
王爽老师的书里说的很明白的!
2010-4-8 10:31
0
雪    币: 86
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
怎么得Kx,我挂了几天了,一点Kx都没有上去!- -

我想转正啊
2010-4-9 10:15
0
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我想转正啊
2010-4-9 20:15
0
雪    币: 505
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
支持原创
2010-4-9 20:28
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
恭贺楼主,写笔记是学习的好方法啊!
2010-4-9 20:39
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
真的可以吗?
2010-4-9 21:58
0
游客
登录 | 注册 方可回帖
返回
//