汇编第七、八章知识点

第七章,第八章知识点

1. and命令:逻辑与指令,按位进行与运算

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

  (原来为1或0则与1相与后还是原数;原来为1或0则与0相与后肯定为0→实现特定位置0)

2. or命令:逻辑或命令,按位进行或运算

  通过该指令可将操作对象的相应位设为1,其他位不变

  (原来为1或0则与1相或后肯定为1;原来为1或0与0相或后为原数→实现特定位置1)

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

4.大小写转换的问题

 方法一:利用ASCII码值进行转换

         需要判断是大写字母还是小写字母,利用现在所学的指令无法判断(以后会学的)

方法二:根据大小写字母二进制之间的规律,利用and或or指令进行改变大小写字母

5.更为灵活的方式来指明内存单元[bx+idata],它的偏移地址为

  (bx)+idata

  几种常用的形式:

(1)mov ax,[200+bx]

(2)mov ax,200[bx]

(3)mov ax,[bx].200

6. SI和DI是8086CPU中和BX功能相近的寄存器,SI和DI不能够分成两个8位寄存器来使用

7.除了用[bx]或[bx+idata]或[si]或[si+idata]或[di]或[di+idata]的方式,还可以用更灵活的方式[bx+si]和[bx+di]和[bx][si]和[bx][di]

8.更更灵活的方式[bx+si+idata]和[bx+di+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

9.嵌套循环时,外层循环应该保存起来

  方法一:用一个寄存器

  方法二:用一个内存单元

  方法三:用栈(寄存器的数量有限,内存单元比较麻烦,所以更好的方法就是用栈)

 做的小实验

1.    bx,si,di,bp都可以表示内存偏移地址

使用bx,si,di默认段地址在ds中

使用bp表示偏移地址时,默认段地址在ss中

2.mov [0],3不确定是字单元,字节单元还是双字单元(与另一个操作数有关)→ptr属性运算符 mov byte ptr[0],3(表示当作字节单元)

类似的有word ptr字单元,dword ptr 双字单元

byte ptr既可用作常数,也可用作内存单元操作数

mov byte ptr [0],3=mov [0],byte ptr 3

3.伪指令 db,dw,dd

操作符 dup重复定义 e.g. db 8 dup(0)指定值为0  

db 8 dup()未指定值

db 3 dup(1,2,3)=db 1,2,3,1,2,3,1,2,3

4.无符号除法指令div(2个规则)

5.Debug中默认为十六进制(这个我总忘)

6.无符号乘法指令mul (2个规则)

我先写个7,8章知识点总结,一会再做个思维导图......

今天在图书馆学习的时候,对面是个好看的小姐姐,开心(我感觉我都快把随笔写成日记了)

原文地址:https://www.cnblogs.com/fengmian/p/10050110.html