美文网首页
<<汇编语言>>第7~8章笔记

<<汇编语言>>第7~8章笔记

作者: zzkdev | 来源:发表于2018-05-24 21:41 被阅读0次

    and 和 or 指令

    1. and指令:将可操作对象的相应位设为0,其它位不变。
    mov al, 01100011B
    and al, 00111011B
    # 执行后al = 00100011B
    
    1. or指令:将可操作对象的相应位设为1,其他位不变
    mov al, 01100011B
    or al,  00111011B
    # 执行后:al = 01111011B
    

    利用and和or指令进行巧妙的大小写转化

    对ASCII码的二进制形式进行观察,可以看出大写字母的第五位为0,小写字母的第五位为1。
    这样利用and和or指令就可以进行大小写转化了

    # 示例
    or  al, 00100000B # 转化成小写字符
    and al, 11011111B # 转化成大写字符
    

    si和di寄存器

    si和di是8086CPU中和bx功能相近的寄存器,si和di不能分成两个8位寄存器。

    bp寄存器

    只要在[...]中使用寄存器bp,而指令中没有显性地给出段地址,段地址就在ss中。

    指明处理数据长度

    在没有寄存器名的情况下,用操作符X ptr指明内存单元的长度,X可以为word或byte

    # 示例
    mov word ptr ds:[0], 1
    mov byte ptr ds:[0], 2
    

    note : 有些指令默认了访问的是字单元还是节单元,比如push指令只进行字操作,不用指明数据长度。

    div指令

    div为除法指令,使用div做除法要注意以下问题:

    • 除数:有8位和16位两种
    • 被除数:默认放在AX或DX和AX中,如果除数为8位则默认在AX中存放;如果除数为16位,被除数则为32位,在DX和AX中存放,DX存放高16位,AX存放低16位
    # 示例
    # 用除法指令计算100001/100
    mov dx, 1
    mov ax, 86A1H
    mov bx, 100
    div mov
    

    mul指令

    mul是乘法指令,使用mul做乘法时:

    1. 两个相乘的数:两个相乘的数,要么都是8位,要么都是16位。如果是8位,一个默认放在AL中,另一个存放在8位的reg或内存字节单元中;如果是16位,一个默认在AX中,另一个放在16位reg或内存单元中。
    2. 结果:如果是8位的乘法,结果默认放在AX中;如果是16位的乘法,结果高位默认在DX中存放,低位在AX中存放
    # 示例 计算100 * 10
    mov al, 100
    mov bl, 10
    mul bl
    

    这里是我的博客


    相关文章

      网友评论

          本文标题:<<汇编语言>>第7~8章笔记

          本文链接:https://www.haomeiwen.com/subject/tkkejftx.html