汇编语言复习摘要五——[BX] and loop
2010-09-25 00:42
274 查看
1. [bx]:[0]表示一个内存单元,其地址为:ds:0。同样道理,[bx]也是表示一个内存单元,偏移地址在寄存器bx中。
比如:mov ax, [bx]:bx中存放的数据作为偏移地址,把一个内存单元送入ax中。
mov [bx], ax:跟上面一样道理,只是把ax的内容送入内存单元[bx]中。
2. Loop指令:Loop指令用于循环,其执行分为两个步骤进行:
1) (cx) = (cx) - 1;(cx)表示的cx中的值;
2) 判断cx中的值是否等于0,如果不等于0,继续循环执行;如果等于0,执行下面的指令;
例子:计算2 ^ 10:
在上面的例子中,s其实是一个地址,loop s 即把IP的值设置为s的地址值。
3. Debug和masm对指令的不同处理
这个问题其实我感觉有点尴尬,见下面的例子:
在debug中,这段代码的mov al, [0]等指令是这样执行的:mov al, ds:[0];但是反过来看看masm的处理方式,是:
mov al, 00h。所以,程序中,你能通过两种方式解决这个问题:
1) mov dx, 00
mov ax, [dx] ;这个是通过寄存器来实现的,比较麻烦,因为多了一步
2) mov ax, ds:[0] ;这个是通过执行数据段地址来实现的
4. 段前缀:mov ax, ds:[0] ; mov ax, ss:[0] ; mov ax, es:[0]; 冒号前面的用于显示指明内存单元的段地址,在汇编语言中称作为:段前缀。
比如:mov ax, [bx]:bx中存放的数据作为偏移地址,把一个内存单元送入ax中。
mov [bx], ax:跟上面一样道理,只是把ax的内容送入内存单元[bx]中。
2. Loop指令:Loop指令用于循环,其执行分为两个步骤进行:
1) (cx) = (cx) - 1;(cx)表示的cx中的值;
2) 判断cx中的值是否等于0,如果不等于0,继续循环执行;如果等于0,执行下面的指令;
例子:计算2 ^ 10:
assume codesg codesg segment mov ax, 0 mov cx, 10 s: add ax, 2 loop s mov ax, 4c00H int 21H codesg ends end
在上面的例子中,s其实是一个地址,loop s 即把IP的值设置为s的地址值。
3. Debug和masm对指令的不同处理
这个问题其实我感觉有点尴尬,见下面的例子:
mov ax, 2000h mov ds, ax mov al, [0] mov bl, [1] mov cl, [2] mov dl, [3]
在debug中,这段代码的mov al, [0]等指令是这样执行的:mov al, ds:[0];但是反过来看看masm的处理方式,是:
mov al, 00h。所以,程序中,你能通过两种方式解决这个问题:
1) mov dx, 00
mov ax, [dx] ;这个是通过寄存器来实现的,比较麻烦,因为多了一步
2) mov ax, ds:[0] ;这个是通过执行数据段地址来实现的
4. 段前缀:mov ax, ds:[0] ; mov ax, ss:[0] ; mov ax, es:[0]; 冒号前面的用于显示指明内存单元的段地址,在汇编语言中称作为:段前缀。
相关文章推荐
- 汇编语言复习摘要三——寄存器的内存访问
- 汇编语言复习摘要六——包含多个段的程序
- 汇编语言复习摘要四——第一个汇编程序
- 汇编语言复习摘要九——转移指令的原理
- 汇编语言复习摘要一——基础知识
- 汇编语言复习摘要七——更灵活的定位内存地址方法
- 汇编语言复习摘要二——寄存器
- 汇编语言复习摘要八——数据处理的两个基本问题
- 汇编语言(学习笔记-----[bx]和loop)
- 《汇编语言(王爽)》第五章([bx]和loop指令)、第六章(包含多个段的程序)【总结】
- 数据结构教程(java语言描述)徐孝凯主编----复习摘要04
- 汇编语言复习笔记
- 汇编语言:实验四 [bx]和loop的使用
- [BX]和loop指令05 - 零基础入门学习汇编语言27
- 汇编语言之寄存器使用(bx,si,di,bp)
- 汇编语言 王爽(第三版) 实验4 [bx]和loop的使用
- 汇编语言复习(一天一练之day2)
- 【汇编语言/底层开发】5、[BX]和loop指令
- [BX]和loop指令05 - 零基础入门学习汇编语言27
- 重新复习汇编语言