zoukankan      html  css  js  c++  java
  • 汇编第七、八章知识点

    第七章,第八章知识点

    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章知识点总结,一会再做个思维导图......

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

  • 相关阅读:
    【总结】st表
    【luogu】p2024 食物链
    【总结】stl(以后还会慢慢补上
    【总结】二叉堆
    【luogu】p1631 序列合并
    才子们博客地址
    Lemon测评软件使用说明 (对比cena)
    Cena编译器的使用 及任大佬和禚大佬解释(O2优化、C++11特性、开栈)值得大家学习
    编程求100内的素数
    【关于德育和道德方面】
  • 原文地址:https://www.cnblogs.com/fengmian/p/10050110.html
Copyright © 2011-2022 走看看