• and
      • 逻辑与,按位
      • 应用:将操作对象的相应位设为0,其他位不变
    • or
      • 逻辑或(1|1 1|0 0|1 为1)
      • 应用:将操作对象的相应位设为1,其他位不变
    • ASCII码

      • 8位表示英语、字符等
      • 97(61h):a 65:A 48(30h):0
      • 汇编中用’x’代表数据以字符形式给出(db)

        1. data segment
        2. db 'unIX'
        3. db 'foRK'
        4. data ends
      • 大小写规律

        • 小写-32=大写
        • A:0100 0001
        • a:0110 0001
        • and al,11011111h;大写转小写
        • or al,00100000h;小写转大写
    • [bx+idata]

      • 偏移地址为(bx)+idata
      • 用该方式表示数组
      • [bx+0] = [0+bx] = 0[bx] = [bx].5
    • si和di

      • 和bx功能相近,但是不能分成8位寄存器
      • 循环里常用来替代、数据复制
        • ds:si指向要复制的原字符串 (or ds:[bx+si])
        • ds:di指向复制的目的空间 (or ds:[bx+di])
      • [bx+si+idata]
      • [bx+di+idata]
    • 不同寻址方式的灵活应用
      • [idata]:直接定位一个内存单元
      • [bx]:间接定位内存单元
      • [bx+idata]:在一个起始地址的基础上
      • [bx+si]
      • [bx+si+idata]
    1. assume cs:codesg,ds:datasg,ss:stacksg
    2. stacksg segment
    3. dw 0,0,0,0,0,0,0,0
    4. stacksg ends
    5. datasg segment
    6. db 'asd '
    7. db 'asd '
    8. db 'asd '
    9. db 'asd '
    10. datasg ends
    11. codesg segment
    12. start:mov ax,datasg
    13. mov ds,ax
    14. mov bx,0;行
    15. mov ax,stacksg
    16. mov ss,ax
    17. mov sp,16 ;栈底!!15+1
    18. mov cx,4
    19. s0:;mov dx,cx
    20. push cx
    21. mov si,0;列
    22. mov cx,3 ;loop只能和cx搭配,注意暂存
    23. s:mov al,[bx+si]
    24. and al,11011111h
    25. mov [bx+si],al
    26. inc si
    27. loop s
    28. add bx,16 ;每一行16个元素
    29. ;mov cx,dx
    30. pop cx
    31. loop s0 cx-1 jmp
    32. mov ax,004ch
    33. int 21h
    34. codesg ends
    35. end start