王爽汇编语言第五章——[BX]和loop指令 第六章——包含多个段的程序 第七章——更灵活的定位内存地址的方法

第五章——[BX]和loop指令

1、loop(循环)指令:指令的格式是:loop 标号,cpu执行loop指令的时候,要进行两步操作:

(1)(cx)=(cx)-1

(2)判断cx中的值,不为零则转至标号处执行程序,如果为零则向下执行。

2、大于9FFFH的十六进制数据A000H、A001H等,在书写时都是以字母开头的。而在汇编源程序中,数据不能以字母开头,所以要在前面加0。

3、指令“mov ax,[bx]”中,内存单元的偏移地址由bx给出,而段地址默认在ds中。我们可以在访问内存单元的指令中显式地给出内存单元的段地址所在的段寄存器。这些出现在访问内存单元的指令中,用于显式地指明内存单元的段地的“ds:”、“cs:”、“ss:”或“es:”,在汇编语言中称为段前缀。

4、在一般的pc机中,DOS方式下,DOS和其他合法的程序一般都不会使用0:200~0:2FF的256个字节的空间。所以,我们使用这段空间是安全的。

第六章——包含多个段的程序

1、dw的含义是定义字型数据,即define word。

2、end除了通知编译器程序结束外,还可以通知编译器程序的入口在什么地方。

3、cpu如何处理我们定义的段中的内容,是当作指令执行,当作数据访问,还是当作栈空间,完全是靠程序中具体的汇编指令和汇编指令对CS:IP、SS:SP、DS等寄存器的设置来决定的。

第七章——更灵活的定位内存地址的方法

1、and指令:逻辑与指令,按位进行与运算。

例:mov al,01100011B

       and al,00111011B

执行后,al=00100011B

2、通过and指令可将操作对象的相应位设为0,其他位不变。

例:将al的第6位设为0:and al,10111111B。

3、or指令:逻辑或指令,按位进行或运算。

例:mov al,01100011B

       or al,00111011B

执行后,al=01111011B。

4、通过or指令可将操作对象的相应位设位1,其他位不变。

例:将al的第6位设为1:or al,01000000B。

5、我们可以在汇编程序中,用‘……’的方式指明数据是以字符的形式给出的,编译器将把它们转化为相对应的ASCII码。

6、[bx+idata]表示一个内存单元,它的偏移地址为(bx)+idata(bx中的数值加上idata)。

7、指令mov ax,[bx+200]也可以写成如下格式:

mov ax,[200+bx]

mov ax,[bx].200

mov ax,200[bx]

8、SI和DI:SI和DI是8086cpu中和bx功能相近的寄存器,但是SI和DI不能够分成两个8位寄存器来使用。

9、指令mov ax,[bx+si+idata]的其他格式:

mov ax,[bx+200+si]

mov ax,[200+bx+si]

mov ax,200[bx][si]

mov ax,[bx].200[si]

mov ax,[bx][si].200

10、一般来说,在需要暂存数据的时候,我们都应该使用栈。

猜你喜欢

转载自blog.csdn.net/weixin_42617472/article/details/82875020
今日推荐