标志寄存器06 - 零基础入门学习汇编语言59
2011-02-18 18:12
363 查看
第十一章:标志寄存器06
让编程改变世界Change the world by program
DF标志和串传送指令
我们来看两个程序
编程1: 用串传送指令,将data段中的第一个字符串复制到它后面的空间中。data segment
db ‘Welcome to masm!’
db 16 dup (0)
data ends
我们分析一下,使用串传送指令进行数据的传送,需要给它提供一些必要的信息,它们是:
① 传送的原始位置:ds:si;
② 传送的目的位置:es:di;
③ 传送的长度:cx;
④ 传送的方向:DF。
在这个问题中,这些信息如下:
① 传送的原始位置:data:0;
② 传送的目的位置:data:16;
③ 传送的长度:16;
④ 传送的方向: 因为正向传送(每次串传送指令执行后,si和di 递增)比较方便,所以设置DF=0。
明确了这些信息之后,我们来编写程序!
相关代码下载
编程2: 用串传送指令,将F000H段中的最后16个字符复制到data段中。
data segmentdb 16 dup (0)
data ends
我们还是先来看一下应该为串传送指令提供什么样的信息:
① 要传送的字符串位于F000H段的最后16个单元中,那么它的最后一个字符的位置:F000:FFFF,是显而易见的。
② 我们可以将ds:si指向 F000H段的最后一个单元,将es:di指向data段中的最后一个单元,然后逆向(即从高地址向低地址)传送16个字节即可。
相关信息如下:
① 传送的原始位置:F000:FFFF;
② 传送的目的位置:data:15;
③ 传送的长度:16;
④ 传送的方向:因为逆向传送(每次串传送指令执 行后,si 和 di 递减)比较方便,所以设置 DF=1。
程序实现代码:相关代码下载
pushf和popf
pushf:将标志寄存器的值压栈;popf:从栈中弹出数据,送入标志寄存器中。
pushf 和 popf,为直接访问标志寄存器提供了一种方法。
[buy] 获得所有教学视频、课件、源代码等资源打包 [/buy]
[Downlink href='http://kuai.xunlei.com/d/LHGMIRLCGGGT']视频下载[/Downlink]
相关文章推荐
- 标志寄存器06 - 零基础入门学习汇编语言59
- 数据处理的两个基本问题04 - 零基础入门学习汇编语言41
- 寄存器(内存访问)06 - 零基础入门学习汇编语言18
- 直接定址表03 - 零基础入门学习汇编语言74
- 使用BIOS进行键盘输入和磁盘读写01 - 零基础入门学习汇编语言75
- 基础知识01 - 零基础入门学习汇编语言01
- 基础知识03 - 零基础入门学习汇编语言03
- 标志寄存器04 - 零基础入门学习汇编语言57
- 寄存器(CPU工作原理)06 - 零基础入门学习汇编语言11
- 寄存器(内存访问)04 - 零基础入门学习汇编语言16
- 寄存器(内存访问)07 - 零基础入门学习汇编语言19
- 第一个程序03 - 零基础入门学习汇编语言22
- 基础知识03 - 零基础入门学习汇编语言03
- 寄存器(CPU工作原理)04 - 零基础入门学习汇编语言09
- 寄存器(CPU工作原理)06 - 零基础入门学习汇编语言11
- 寄存器(内存访问)04 - 零基础入门学习汇编语言16
- 寄存器(内存访问)07 - 零基础入门学习汇编语言19
- 第一个程序03 - 零基础入门学习汇编语言22
- 包含多个段的程序02 - 零基础入门学习汇编语言30
- int指令02 - 零基础入门学习汇编语言65