本章对前面的所有内容是具有总结性的。
我们定义的描述性符号:reg和sreg
以后的课程中,我们将使用两个描述性的符号reg来表示一个寄存器,用sreg表示一个段寄存器。
reg的集合有:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di
sreg的集合有:ds,ss,cs,es
8.1 bx,si,di和bp
在[....]中,这4个寄存器可以单个出现,或只能以4种组合出现:bx和si,bx和di,bp和si,bp和di
只要在[...]中使用寄存器bp,而指令中没有显性地给出段地址,段地址就默认在ss中
8.2 机器指令处理的数据在什么地方
所要处理的数据可以在3个地方:CPU内部(寄存器,指令缓冲器),内存,端口(端口将在后面的课程中进行讨论)
8.3 汇编语言中数据位置的表达
1 立即数(idata)
2 寄存器
3 段地址(SA)和偏移地址(EA)
指令要处理的数据在内存中,在汇编指令中可用[x]的格式给出EA,SA在某个段寄存器中。
8.4 寻址方式
当数据存放在内存中时候,我们可以用多种方式来给定这个内存单元的偏移地址,这种定位内存单元的方法一般称为寻址方式。
包括:直接寻址,寄存器间接寻址,寄存器相对寻址,基址变址寻址,相对基址变址寻址。(见书)
8.5 指令要处理的数据有多长
1 通过寄存器名指明要处理的数据的尺寸
2 在没有寄存器名存在的情况下,用操作符X ptr 指明内存单元的长度,X在汇编指令中可以为word 或byte
在没有寄存器参与的内存单元访问指令中,用word ptr 或byte ptr 显性地指明所要访问的内存单元的长度是很有必要的。否则CPU得知所要访问的单元是字单元,还是字节单元。
8.6 寻址方式的综合应用
8.7 div指令
除法指令。
具体见书
8.8 伪指令 dd
前面我们用db和dw定义字节型数据和字型数据。dd是用来定义dword(double word,双字)型数据的。
8.9 dup
dup是一个操作符,在汇编语言中同db,dw,dd等一样,也是由编译器识别处理的符号,它是和db,dw,dd等数据定义伪指令配和使用的,用来进行数据的重复。
实验7 寻址方式在结构化数据中的应用
注意,这个程序是目前位置最复杂的程序,它几乎用到了我们以前学过的所有知识和编程技巧。所以,这个程序是对我们从前学习的最好的实践总结,请认真完成。