1.两个描述性的符号 reg和sreg
reg来表示一个寄存器 ax、bx、cx、dx、ah、al、bh、bl、ch、cl、dh、dl、sp、bp、si、di
sreg表示一个段寄存器 ds、ss、cs、es
2.只有这4个寄存器(bx、bp、si、di)可以用在“[…]” 中来进行内存单元的寻址
只要在[…]中使用寄存器bp,而指令中没有显性的给出段地址,段地址就默认在ss中
3.指令在执行前,所要处理的数据可以在三个地方:
CPU内部、内存、端口
(端口我们将在后面的课程中进行讨论,CPU内部就是在寄存器中)
4.寻址方式?
当数据存放在内存中的时候,我们可以用多种方式来给定这个内存单元的偏移地址,这种定位内存单元的方法一般被称为寻址方式。
5.8086CPU的指令,可以处理两种尺寸的数据,byte和word:
(1)通过寄存器名指明要处理的数据的尺寸。
(2)在没有寄存器名存在的情况下,用操作符X ptr指明内存单元的长度,X在汇编指令中可以为word或byte。
(3)其他方法
注意:
在没有寄存器参与的内存单元访问指令中,用word ptr或byte ptr显性地指明所要访问的内存单元的长度是很必要的。
否则,CPU无法得知所要访问的单元是字单元,还是字节单元。
有些指令默认了访问的是字单元还是字节单元,比如push、pop
6.用[bx+idata+si]的方式来访问结构体中的数据:
用bx定位整个结构体,用idata定位结构体中的某一个数据项,用 si 定位数组项中的每个元素 。
为此,汇编语言提供了更为贴切的书写方式。
如:[bx].idata、[bx].idata[si]
7.div 指令
div指令格式:
div reg
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存储除法操作的余数。
8.伪指令 dd
dd是用来定义dword (double word双字)型数据的。
示例:
data segment
db 1
dw 1
dd 1
data ends
在data段中定义了三个数据:
第一个数据为01H,在data:0处,占1个字节;
第二个数据为0001H,在data:1处,占1个字;
第三个数据为00000001H,在data:3处,占2个字节;
9.dup
dup是一个操作符,在汇编语言中同db、dw、dd 等一样,也是由编译器识别处理的符号。
它是和db、dw、dd 等数据定义伪指令配合使用的,用来进行数据的重复。
dup的使用格式如下:
db 重复的次数 dup (重复的字节型数据)
dw 重复的次数 dup (重复的字型数据)
dd 重复的次数 dup (重复的双字数据)
1020

被折叠的 条评论
为什么被折叠?



