汇编语言--段
2013-08-03 21:32
155 查看
汇编学了好久了,最近在看Linux0.12内核的时候,发现对汇编没有什么感觉,还有对一些定时器的编程,看不太懂。闲来无事,复习复习简单的汇编。
这个程序只有代码段,使用end标号来定位程序开始运行的地址。
所以,在这里,end标号的作用有两个:
1:通知编译器程序什么时候结束
2:通知编译器程序的入口在什么地方
在单任务系统中,可执行文件的执行过程如下:
1:由其他的程序(debug、command)将可执行文件载入内存;
2:设置CS、IP指向程序的第一条要执行的指令(即程序的入口),从而使程序得以运行。
3:程序运行结束后,返回至加载者。
注:在使用debug的时候,会发现程序时ip指向的指令并不是合法的指令,这是因为代码段存储的是数据,我们需要使用R命令修改ip的值,使它指向程序运行的第一条指令。
现在改进一下程序,给程序增加一个栈,放在代码段中。通过栈,使得上一个程序段中定义的字形数组逆序排列。
我们在源程序中使用assume指令将cs、ds和ss分别和code、data、stack相连后,并没有让cs指向代码段,ss指向堆栈段。注意,assume是伪指令,是由编译器执行的,cpu并不知道他们。所以我们需要在代码中分别给cs、ss和ds赋值。
注意:在8086中,不允许将一个数值直接赋值给段寄存器。所以在程序开始时初始化代码段寄存器的时候,我们应该使用
而不是使用
这个程序只有代码段,使用end标号来定位程序开始运行的地址。
所以,在这里,end标号的作用有两个:
1:通知编译器程序什么时候结束
2:通知编译器程序的入口在什么地方
assume cs:code code segment dw 0001,0001,0001,0001,0001,0001,0001,0001 start: mov bx,0 mov ax,0 mov cx,8 s: add ax,cs:[bx] add bx,2 loop s mov ax,4c00h int 21h code ends end
在单任务系统中,可执行文件的执行过程如下:
1:由其他的程序(debug、command)将可执行文件载入内存;
2:设置CS、IP指向程序的第一条要执行的指令(即程序的入口),从而使程序得以运行。
3:程序运行结束后,返回至加载者。
注:在使用debug的时候,会发现程序时ip指向的指令并不是合法的指令,这是因为代码段存储的是数据,我们需要使用R命令修改ip的值,使它指向程序运行的第一条指令。
现在改进一下程序,给程序增加一个栈,放在代码段中。通过栈,使得上一个程序段中定义的字形数组逆序排列。
assume cs:code code segment dw 0001,0002,0003,0004,0005,0006,0007,0008 ;用dw定义8个字形数据 ;在程序加载后,将取得8个字的内存空间,作为后面的程序栈来使用。 dw 0,0,0,0,0,0,0,0 start: mov ax,cs mov ss,ax mov sp,32 mov bx,0 mov cx,8 s: push cs:[bx] add bx,2 loop s mov bx,0 mov cx,8 s0: pop cs:[bx] add bx,2 loop s0 mov ax,4c00h int 21h code ends end
我们在源程序中使用assume指令将cs、ds和ss分别和code、data、stack相连后,并没有让cs指向代码段,ss指向堆栈段。注意,assume是伪指令,是由编译器执行的,cpu并不知道他们。所以我们需要在代码中分别给cs、ss和ds赋值。
注意:在8086中,不允许将一个数值直接赋值给段寄存器。所以在程序开始时初始化代码段寄存器的时候,我们应该使用
mov ax,cs mov ss,ax
而不是使用
mov ds,data
相关文章推荐
- 汇编语言指令大全
- 机器语言与汇编语言
- Windows汇编语言开发环境
- 汇编语言相关图书推荐
- Assembly Language(汇编语言)概述
- 汇编语言——访问条件码
- 我们说boot loader通常采用汇编和C语言相结合来编写的,那能不能全部用C语言来进行编写呢?为什么
- 单片机的汇编语言与嵌入式C语言的比较
- 用汇编语言设计接口程序——音乐演奏程序
- (划重点)汇编语言关键词和重要指令
- 【转】汇编语言指令大全
- 汇编语言谁来帮忙
- Linux----之汇编语言的由来
- <汇编语言(第2版)>2011033101
- 同一张光盘安装的VC为什么调试时有的机子是程序步,有的是汇编语言呢?
- 8086汇编语言自学经验分享 寄存器CX
- Linux 汇编语言开发指南
- leng dw $ -string汇编语言
- 汇编语言入门
- 汇编语言:课程设计1