[汇编语言学习笔记][第七章更灵活的定位内存的方法]

打破了我对bx的幻想

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

7.1 and和or指令

  • and

    mov al,01100011B
    and al,00111011B
  • or

    mov al,01100011B
    or  al,00111011B

7.2 关于ASCII

7.3 以字符形式给出数据

在汇编中 用’…’的方式致命数据是以字符形式给出的。

data segment
  db 'unIX'
  db 'foRK'
data ends

db的意思是define bit 定义字节

db ‘unIX’ 相当于 “db 75H,6EH,49H,58H.”

mov al,’a’ 相当于 “mov al,61H”

7.4 大小写转换

  • 在16进制中,大写小写相差20H=100000B

  • 重点!!纯位运算方法!!

    • 只需将第6位改成1,就变小写,无需判断,你值得拥有。
    • 只需将第6位改成0,就变大写,无需判断,你值得拥有。

以下高能重点:打破了我对bx的幻想

7.5 [bx+idata]

  • C语言类似含义 : A[i+1]

    特么后面告诉我其实idata才等价于A, A[i]=idata[i],难怪后面有这么奇葩的格式,不是我所想的ds等价A

其实第八章才揭晓了真实,idata也能看作结构体..

  • 该指令也可以写成以下格式

    - mov ax,[200+bx](普通)
    - mov ax,200[bx]  (数组名)
    - mov ax,[bx].200 (结构体名)
    
  • 注意mov 16位数的时候,移进去两个字节,切记切记

7.6 用[bx+idata]的方式进行数组的处理

遍历

s:mov al,[5+bx]
  inc bx
  loop s

相当于对5[]这个数组进行遍历

7.7 SI和DI

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

7.8 [bx+si]和[bx+di]

  • C语言类似含义[bx][si]

7.9 [bx+si+idata]和[bx+di+idata]

  • C语言类似含义 idata[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  (二维结构体)

7.10 利用栈解决多重循环

原文地址:https://www.cnblogs.com/zy691357966/p/5480520.html