(2011.10.28)汇编_王爽_第六章_学习小结
来源:互联网 发布:斗鱼抢鱼丸软件 编辑:程序博客网 时间:2024/06/07 02:59
(2011.10.28)汇编_王爽_第六章_学习小结
本章主要内容:
1. 学会如何定义程序入口;
2. 知道如何定义多个段;
3. 知道如何运用所定义的多个段。
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
; 程序名称:603_start_指明程序入口.asm; 程序功能:将指定区域的数据放入栈并将数据按逆序存放到某区域中 assume cs:codesg ; 用dw定义16个字型数据,在程序加载后,将取得16个字的内存空间,存放这16个数据。 ; 在后面的程序中将这段空间当作栈来使用codesg segment dw 0123h, 0456h, 0789h, 0abch, 0defh, 0fedh, 0cbah, 0987h dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; dw即“define word“,每个dw数据占了16个字节的空间. start: mov ax, cs mov ss, ax mov sp, 30h ; 将设置栈顶ss:sp指向cs:30h[注意:这里是十六进制] 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 ; 以上依次出栈8个字型数据代码段0~15单元中 mov ax, 4c00h int 21h codesg endsend start ; 指明程序的入口在start处[即将start:那里的地址设为cs:ip的地址] ; (end后加标号代表入口地址,标号可任意取,此时标号为start)
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
; 程序名称:604_定义不同的段.asm; 程序功能: 定义多个段,并将数据按逆序存放到某区域中 ; 附: 一个段有8个字节,连续定义的段,连续存储assume cs:code, ds:data, ss:stack ; 开始定义数据段data segment dw 0123h, 0456h, 0789h, 0abch, 0defh, 0fedh, 0cbah, 0987hdata ends ; 开始定义栈段stack segment dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 stack ends ; 开始定义代码段code segmentstart: ; 设置代码开始执行的入口地址 ; ss:sp 栈段 mov ax, stack ; 将stack段的段地址送入ax中 mov ss, ax mov sp, 20h ; 设置栈顶ss:sp指向stack:20 mov ax, data mov ds, ax ; ds指向data段 mov bx, 0 ; ds:bx指向data段中的第一个单元 mov cx, 8s: push [bx] add bx, 2 loop s ; 以上将data段中的0~15单元中的8个字型数据依次入栈 mov bx, 0 mov cx, 8 s0: pop [bx] add bx, 2 loop s0 ; 以上依次出栈8个字型数据到data段的0~15单元中 mov ax, 4c00h ; 程序返回 int 21h code ends end start
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
; 程序名称:实验5_习题5_不同段中数据相加.asm; 程序功能:将a段和b段中的数据依次相加,将结果存入到c段中; 程序分析: assume cs:code, ds:a, ds:b, ds:c a segment db 1, 2, 3, 4, 5, 6, 7, 8a ends b segment db 1, 2, 3, 4, 5, 6, 7, 8b ends c segment db 0, 0, 0, 0, 0, 0, 0, 0c ends code segmentstart: mov bx, 0 mov cx, 8s: mov ax, 0 ; 将a段的第bx个数据放入al中 mov dx, a mov es, dx mov al, es:[bx] ; 将b段的第bx个数据与al相加 mov dx, b mov es, dx add al, es:[bx] mov dx, c ; 将相加结果放入c段中 mov es, dx mov es:[bx], al add bx, 2 ; 地址递增,开始循环 loop s mov ax, 4c00h int 21hcode endsend start
- (2011.10.28)汇编_王爽_第六章_学习小结
- (2011.10.26)汇编_王爽_第五章_学习小结
- (2011.10.29)汇编_王爽_第七章_学习小结
- (2011.10.29)汇编_王爽_第08章_学习小结
- (2011.11.01)汇编_王爽_第09章_学习小结
- (2011.11.02)汇编_王爽_第10章_学习小结
- (2011.11.02)汇编_王爽_第11章_学习小结
- (2011.11.03)汇编_王爽_第12章_学习小结
- (2011.11.04) 汇编_王爽_第13章_学习小结
- (2011.11.04)汇编_王爽_第14章_学习小结
- (2011.11.07) 汇编_王爽_第15章_学习小结
- (2011.11.09)汇编_王爽_第16章_学习小结
- (2011.11.10) 汇编_王爽_第17章_学习小结
- (2011.11.12)汇编_王爽_全书_学习小记
- C++primer_第六章_函数_学习跟踪
- 汇编学习_基础知识1
- JHTP小结_第六章_深入理解Methods(方法)
- 汇编_寄存器_笔记
- 从程序员到技术总监,分享10年开发经验
- Ubuntu下设置轮换背景
- C++开发者的VS2010(二)—— Lambda 表达式
- joj 1329 二叉树
- Q4之保存窗体状态
- (2011.10.28)汇编_王爽_第六章_学习小结
- 接个手柄,意外发现Linux竟然能听懂它的话
- oracle学习笔记4
- onCreateOptionsMenu中 图标,文字创建
- 一般选择问题
- 记录昨天的面试
- js 获取鼠标的位置
- sql server 2005系统数据库移动
- mysql 5.1 存储过程例子