汇编编程
来源:互联网 发布:centos共享文件夹 编辑:程序博客网 时间:2024/05/23 11:52
1.DOS中的程序运行
DOS是一个单任务的操作系统
一个程序P2的可执行文件,则必须有一个正在运行的程序P1, 将P2的加载到内存,将CPU的控制权交给P2,P2才得以运行。
P2开始运行后,p1暂停运行, 当P2运行完毕后,应将CPU的控制权交还给使得他运行的程序P1,使得继续运行。
2.程序的返回
在程序的末尾添加程序段
mov ax,4c00H
int 21H
3.将数据、代码、栈放入不同的段
assume cs:code,ds:data,ss:stack
data segment
dw 0123H,0456H
data ends
stack segment
dw 0,0
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,4
mov ax,data
mov ds,ax ; 引用 ds:[1]
mov bx,0
mov cx,2
s: push [bx] ;基于 ds的偏移 ds:[bx]
add bx,2
loop s
mov bx,0
mov cx,2
s0: pop ds:[bx]
add bx,2
loop s0
mov ax,4c00H
int 21H
code ends
end start
用 cs:code 会把code的指令连接到代码段
ds:data 会把data的指令连接到数据段
ss:stack 会把stack的指令连接到栈端
这个任务由编译器通过伪指令来完成
Q:CPU是如何知道去执行它们的呢?
A:我们在源程序的最后用" end start" 说明程序的结束,已经 "start" 标明的程序的入口,
这个入口将被写入可执行文件的描述信息,可执行文件被加载到内存后,CPU的CS:IP被设置执行这个入口,从而开始执行程序中的第一条指令。
注意start入口 写在执行指令的前面 如果再 data段中,他会把数据段的指令当做指令来执行 就会出现错误.
如果去掉前面的start 则上面的程序是不正确的。 CPU就会把第一个 dw 0123H,0456H 当做代码段来执行,如果code segment在最前面 那就是正确的,建议都加上伪指令。
- 汇编编程
- 汇编乐曲编程
- C 汇编混合编程
- java 编程原则汇编
- 编程思想汇编
- 汇编编程简介
- 汇编颜色编程
- arm汇编编程(示例)
- teaklite DSP汇编编程
- ARM汇编编程规则
- 汇编编程->ASM指令
- ARM汇编编程基础
- powerpc 汇编编程参考
- 汇编编程模型
- 简单汇编编程练习
- ARM汇编编程规则
- ARM汇编编程学习
- ARM汇编编程
- oracle client 字符集设置
- myeclipse8.0安装SVN
- 对加入椒盐噪声的图像分别作均值、中值和维纳滤波
- Visual studio 中调试oracle数据库的程序,出现“未找到Oracle客户端和网络组件”解决
- 你做过的最有效的提高编程水平的一件事情是什么
- 汇编编程
- 自定义Profile时如何有效设置构造型的属性?
- PHP编码规范(PHPCMS开发文档)
- 我的图片 .
- shell find命令中“+n”、“-n”和“n”的区别
- CDialog中不响应OnKeyDown和一些相关问题
- Codea:给我个iPad 我就能占领iOS榜单
- linux下开启ftp和telnet服务
- google map 中marker图标集合(转)