[汇编语言学习笔记][第七章更灵活的定位内存的方法]
打破了我对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
si
和di
是8086CPU中和bx
功能相近的寄存器,si
和di
不能够分成两个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 (二维结构体)