《汇编语言第三版》王爽著 ------读书笔记
8.1 bx,si,di和bp
1)处理的数据在什么地方?
2)要处理的数据有多长?
描述性符号
reg 寄存器
sreg 段寄存器
reg的集合:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di;
sreg的集合:ds,ss,cs,es
1)[...]中 的4个寄存器
bx,si,di,bx+si,bx+di,bp,bp+si,bp+di
8.2机器指令处理的数据在什么地方
8.3 汇编语言中数据位置的表达
1)立即数(idata)
2)寄存器
3)段地址(SA)和偏移地址(EA)
i bx或无bx,段地址默认ds
ii bp,段地址默认ss
存放段地址的寄存器可显性给出
mov ax,ds:[bp]
mov ax, es:[bx]
mov ax,ss:[bx+si]
mov ax,cs:[bx+si+8]
8.4 寻址方式
8.5指令要处理的数据有多长
8086CPU 可处理
byte word
1)通过寄存器名指明
例:
mov ax,1
mov al,1
2)操作符 X ptr X 可为word 或 byte
3)其它方法
有些指令默认访问的是字单元还是字节单元
比如:push [1000H] push指令只进行字操作
8.6寻址方式的综合应用
[bx+idata+si]
[bx]. idata[si]
与c语言的结构体对比
struct Company{
char CN[3];
char HN[9];
int PM;
int SR;
char CP[3];
};
struct Company dec = {"DEC",'LIN', '133',"33","cook"};
dec.cn[i]
dec对应整个结构体的地址([bx]),cn对应数据项的地址(idata),
i对应数据项里每个元素的地址(si)
[bx]. idata[si]
8.7 div 指令
除法指令
1)除数:8/16位 在一个reg或内存单元中
2)被除数:默认放在AX或DX和AX中,
若除数为8位,被除数则为16位,默认在AX中存放
若除数为16位,被除数则为32位,在DX和AX中存放,DX存放高16位,AX存放低16位
3)结果:如果除数为8位,则AL存储除法操作的商,AH存储除法操作的余数;
如果除数为16位,则AX存储除法操作的商, DX存储除法操作的余数;
格式如下:
div reg
div 内存单元
8.8 伪指令dd
db 定义字节型数据
dw 定义字型数据
dd 定义dword(double word 双字) 型数据的
8.9 dup
dup是一个操作符,同db,dw,dd一样,由编译器识别处理
例:
dup 3 dub(0)
相当于 db 0 ,0,0
db 3 dup(0,1,2)
相当于 db 0,1,2,0,1,2,0,1,2
db 3 dub('abc','ABC')
相当于 db ‘abcABCabcABCabcABC’
使用格式