《汇编语言》学习笔记 七~八章

来源:互联网 发布:数据库存储图片 编辑:程序博客网 时间:2024/05/02 01:10

第七章

1.db 'unIX'相当于db 75H,6EH,49H,58H(可以用单引号括住)

 

2.mov ax,[bx+200]把段地址为DS,偏移地址为(bx+200)的内存单元的内容(2bytes)赋值给ax

也可以写成movax,200[bx] mov ax,[bx].200

 

3.不能直接对data段中的元素进行算术运算

and [bx],20h是非法的,应先mov al,[bx]

     and  al,0x20h

     mov [bx],al

 

4.SIDI是与BX功能相近(用来作下标)的寄存器,但其不可分成两个8位寄存器使用

 

5.更常用[bx+si][bx+di]来表示一个内存单元,也可写成 mov ax,[bx][si]



第八章

1.只有bx,bp,si,di这四个寄存器可以(单独或组合)出现在[...](但是除了[bx+bp],[si+di]

 

2.只要在[]中使用了寄存器bp,且指令中没有显式给出段地址,则此时段地址默认取ss

 

3.对于机器指令这一层,并不关心数据的值是多少,只关心指令执行前一刻将要处理的数据所在的位置

指令执行前所要处理的数据可以在三个地方:CPU内部,内存,端口例如:

mov bx,[0]  内存的ds:[0]单元

mov bx,ax    CPU内部的ax寄存器

mov bx,1      CPU内部的指令缓冲器

 

4.寻址方式的种类:

[idata],直接寻址, EA=idata(汇编中称为立即数), SA=ds

[bx],[si],[di],[bp]寄存器间接寻址 SA=DS(除了[bp])

[bx+idata]寄存器相对寻址

[bx+si]基址变址寻址

[bx+si+idata]相对基址变址寻址

 

5.确定数据处理长度的方法

1)通过寄存器名指明

2)在地址前用操作符word ptrbyte ptrdword ptr指明(类似于强制类型转换)

3)由操作指令确定,push,pop指令只进行字操作(因此pop al是不合法的)

 

6.一般可以用[bx+idata+si]的方式来访问结构体中的数据,bx定位整个结构体,idata定位结构体中的某一个数据项,si定位该数据项中的某一个字符/元素,可以写成类似于C语言的形式 bx.10h[si]

 

7.div指令的被除数位数决定除数位数,得数的商存放在低位(alax),余数存放在高位(ahdx)

 

8.dd用来定义dword(32,4byte)的数据(伪指令)

 

9.dup也是一个伪指令操作符,用来进行数据的重复,比如:db 3 dup (0)

db 3 dup(0,1,2)则相当于定义了九个字节 0,1,2,0,1,2,0,1,2

db 3 dup ('abc','ABC')定义了十八个字节'abcABCabcABC...'


0 0